🐧 Linux
参考:Linux 命令大全
for me
| Bash | |
|---|---|
1 2 3 4 5 | |
基础
配置速查
-
cpu
Bash 1lscpu -
内存
Bash 1free -h -
硬盘
Bash 1lsblk -d -o NAME,SIZE,VENDOR,MODEL -
网络
Bash 1ip a
目录结构
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
软件
apt
参考:apt 终极指南
-
更新软件源、软件,自动删除无关依赖
Bash 1sudo apt update && sudo apt full-upgrade && sudo apt autoremove -
使用代理
Bash 1-o Acquire::http::proxy="http://192.168.19.19:7890/" -
删除软件
Bash 1sudo apt purge 软件名 -
查找软件
Bash 1sudo apt-cache search 软件名 -
查看已安装的软件
Bash 1sudo apt list --installed | grep 软件名 -
只下载不安装
Bash 1sudo apt install --download-only 软件名下载的软件包会保存在
/var/cache/apt/archives全部安装
sudo dpkg -i *.deb清理下载的软件包
sudo apt clean -
添加软件源
-
查看软件源
-
删除软件源
snap
一托
文件
文件查找
find,grep
文件管理
-
ls查看-
ls -a列出全部文件(含隐藏) -
ls -l文件类型[所属人权限][所属组权限][其他人权限] 硬连接数量 所属人 所属组 文件大小 修改 日期和时间 文件名文件类型:-普通文件d目录l软链接b块设备c字符设备s套接字p管道
-
-
cd切换目录 -
pwd输出当前目录 -
mkdir创建目录mkdir -m 711 dir创建目录,权限为711mkdir -p dir/dir/dir创建多层目录
-
cp复制文件cp -r dir/ dir.bak/递归复制cp -p file file.bak同时复制文件属性
-
mv移动文件- 如果移动目录,建议使用
cp,确认后再删除 mv dirOld/ dirNew/,从旧的目录移动到新的目录
- 如果移动目录,建议使用
-
rm删除文件rm -r dir/递归删除rm -f dir/忽略不存在的文件
文件权限
每个文件有三种粒度
| 所属人 | 所属组 | 其他人 |
|---|---|---|
u |
g |
o |
各自有三种权限
| 读 | 写 | 行 |
|---|---|---|
r 4 |
w 2 |
x 1 |
修改
-
chown修改所属人uchmod jiao:jiao file修改所属人和所属组
-
chgrp修改所属组g -
chmod修改权限-
chmod +x,给 全部人a添加执行权限,等价于chmod a+x -
chmod +r,给 全部人a添加读权限,等价于chmod a+r -
chmod +w,给 所属人u添加写权限,若想给全部人,chmod a+w
-
chmod u+x,给 所属人 添加执行权限 -
chmod g+r,给 所属组 添加读权限 -
chmod o+w,给 其他人 添加写权限
-
chmod 777,给 全部人 添加全部权限 -
chmod 755,给 所属人 添加全部权限,给 所属组 和 其他人 添加读和执行权限 -
chmod -R,递归修改
-
文件解压缩
tar,zip
-
tar -zxvf *.tar.gz-z解压缩(gz)(有时可以省略)-x解包(tar)-v显示详细的解压过程信息-f指定名称-C指定路径
-
tar -zcvf *.tar.gz *-c打包(tar)
文件备份
dump,rsync
scp
磁盘
磁盘性能
- 测试磁盘的写入速度
| Bash | |
|---|---|
1 | |
- 清除缓存
| Bash | |
|---|---|
1 | |
- 测试磁盘的读取速度
| Bash | |
|---|---|
1 | |
磁盘管理
挂载普通磁盘
mount 磁盘挂载
- 挂载
mount -t ntfs /dev/sda1 /mnt-t指定文件系统类型/dev/sda1磁盘分区/mnt挂载点
umount 磁盘卸载
SMB 服务端
samba 是 SMB 的 linux 实现
-
下载
sudo apt install samba -
配置共享目录
chmod 777 /home/user/Public/ -R -
添加samba用户
sudo smbpasswd -a 用户名 -
提示输入密码 x2
-
配置samba
sudo vim /etc/samba/smb.confBash 1 2 3
[share name] # 共享名 path = /home/user/Public/# 共享路径 writable = yes # 可写 -
重启samba
sudo samba restart- 可能还需要重启一下电脑
-
开启端口
sudo ufw allow 445
SMB 客户端
-
下载
sudo apt install cifs-utils -
添加共享条目
sudo vim /etc/fstabText Only 1//ip/public /mnt/public cifs credentials=/root/smb.cred,uid=1000,gid=1000,iocharset=utf8 0 0//ip/public网络路径/mnt/public本地挂载路径cifs文件系统类型credentials=/root/smb.cred指定了一个包含登录凭据(用户名和密码)的文件uid=1000,gid=1000用户和组 ID,确保挂载后的文件权限正确iocharset=utf8设置字符集为 UTF-8,以支持中文等非 ASCII 字符0 0不要进行 dump 备份,启动时不需要检查
-
创建登陆凭据
sudo vim /root/smb.credText Only 1 2
username=admin password=admin -
修改凭据权限
sudo chmod 600 /root/smb.cred -
重启验证
NFS 服务端
-
下载
sudo apt install nfs-kernel-server -
添加共享目录
-
sudo mkdir -p /mnt/nfs -
sudo vim /etc/exportsText Only 1/mnt/nfs *(rw,async,no_subtree_check,all_squash,insecure)服务端不要自己添加文件,客户端无法访问
此配置下,所有用户(nobody)都可以访问共享目录
rw读写权限async异步写入no_subtree_check禁止子目录检查all_squash所有用户都映射为 nobody 用户insecure允许非特权端口访问 -
sudo chown nobody:nogroup /mnt/nfs -R -
sudo chmod 700 /mnt/nfs -R
-
-
重启nfs
sudo systemctl restart nfs-kernel-server
NFS 客户端
-
下载
sudo apt install nfs-commonText Only 1 2
service rpcbind start service nfs-common start -
挂载
sudo mount 10.0.0.15:/mnt/nfs /mnt/nfs -
持久化
Bash 110.0.0.15:/mnt/nfs /mnt/nfs nfs nfsvers=4.1,noresvport 0 0 -
强行卸载
Bash 1sudo umount -f -l /mnt/nfs -
测试
Bash 1 2 3 4 5 6
sudo docker run --rm -it --privileged ubuntu:latest bash -c " export DEBIAN_FRONTEND=noninteractive && ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && apt update && apt install -y nfs-common && mkdir -p /mnt/nfs && mount -t nfs 10.0.0.15:/mnt/nfs /mnt/nfs && ls -la /mnt/nfs"
系统
btop 状态总览
screenfetch 配置
Process
ps -aux 查看所有进程
ps -aux | grep [关键字] 查看包含关键字的进程
ps -p [PID] 查看指定进程
ps -u [USER] 查看指定用户的进程
| USER | PID | %CPU | %MEM | VSZ(KB) | RSS(KB) | TTY | STAT | START | TIME | COMMAND |
|---|---|---|---|---|---|---|---|---|---|---|
| 进程所有者的用户名 | 进程 ID | CPU 使用率 | 内存使用率 | 虚拟内存大小 | 常驻内存集大小 | 终端类型 | 进程状态 | 启动时间 | 进程使用的 CPU 时间 | 启动该进程的命令行 |
-
STAT:-
S睡眠:等待事件(等待 I/O ) -
s领导:具有子进程 -
+前台进程 -
R运行 -
l多线程,克隆线程 -
L有些页被固定在内存中,不允许交换到磁盘 -
D不可中断的睡眠:等待事件完成(正在进行 I/O ) -
Z僵尸:进程已经终止,但是父进程还没有回收
-
ps -ef 多了一个 ppid 父进程 ID
ps -ef --forest 查看进程树
pstree 查看进程树
kill -9 [PID] 杀死进程,-9 是强制杀死
pkill -9 [进程名] 杀死进程
killall -9 [进程名] 杀死同名进程
MEM
IO
其他
查看时间 date,修改时区
| Bash | |
|---|---|
1 | |
校准时间
| Bash | |
|---|---|
1 | |
网络
net
| Bash | |
|---|---|
1 | |
- 静态 IP
| YAML | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 | |
port
-
查看某进程占用的端口
Bash 1watch -n 1 'lsof -i -nP | grep 进程'
ping
traceroute
nextroute
ip route
ip route show 查看路由表
-
[destination network]
- ip/mask:目标网络,例如
10.0.1.0/24 - default:默认路由,用
"default"表示
- ip/mask:目标网络,例如
-
via[gateway ip]- gateway ip:经过的网关 IP 地址。如果没有网关,该字段为空。
-
dev[interface]- interface:出口接口,通过哪个接口发送数据包(如
eth0、br-lan、tun0等)
- interface:出口接口,通过哪个接口发送数据包(如
-
proto[protocol]- static:静态路由
- kernel:内核路由(系统自动生成)
-
scope[scope type]- link:作用范围为本地链路,数据包不会被转发
-
src[source ip]- source ip:指定源地址,用于发送到该目标网络的数据包
| Bash | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | |
iptables
curl
- 代理请求
curl -x http://192.168.19.19:7890
wget
-
带密码下载
wget --http-user=用户名 --http-password=密码 http://url -
代理下载
wget -e "https_proxy=http://192.168.19.19:7890"
nmap
nmap [ <扫描类型> ...] [ <选项> ] { <扫描目标说明> }
nmap 端口状态
open(开放的)
应用程序正在监听端口,或者响应一个请求来自已连接的客户端。接收TCP连接或者UDP报文。
closed(关闭的)
没有应用程序监听端口。但是此端口可以被探测到,因为没有应用程序监听,所以会返回一个 RST 包或者 ICMP 端口不可达消息。
filtered(屏蔽的)
防火墙或者 ACL 屏蔽了端口,所以无法确定端口是否开放。目标端口可能有以下几种情况: * 未响应,屏蔽器丢弃了探测包,此举会让 nmap 误认为探测包丢失,导致扫描时间变长。 * 丢弃了探测包,但是返回了 ICMP 错误消息。
unfiltered(未屏蔽的)
防火墙或者 ACL 没有屏蔽端口,但是 nmap 无法确定端口开放或者关闭。用其它类型的扫描,如窗口扫描,SYN 扫描,或者 FIN 扫描可以帮助确定端口是否开放。
open|filtered(开放或者屏蔽的)
开放的端口不响应探测包,屏蔽的端口也不响应探测包。所以无法确定端口是否开放。
closed|filtered(关闭或者屏蔽的)
只可能出现在 IPID Idle 扫描中,因为此扫描类型需要发送两个探测包,如果两个探测包都没有响应,那么就无法确定端口是否开放。
nmap 扫描技术
1 默认扫描
nmap dxll.love
默认扫描是 nmap 的最基本的扫描方式,它会扫描 1000 个最常用的端口,扫描方式是 SYN 扫描。
| Bash | |
|---|---|
1 2 3 4 5 6 | |
-T0 是最慢的扫描方式,-T5 是最快的扫描方式,-T3 是默认的扫描方式,-T4 是常用的扫描方式。
nmap -6 dxll.love
开启 IPv6 扫描。
nmap -v dxll.love
开启详细模式,显示扫描过程。
nmap -A dxll.love
全面扫描,包括 1-10000 端口扫描,服务版本探测,操作系统探测,脚本扫描等。
2 扫描多个 IP
| Bash | |
|---|---|
1 2 3 4 | |
3 扫描指定端口
| Bash | |
|---|---|
1 2 3 4 | |
4 TCP扫描
TCP SYN 扫描
nmap -sS dxll.love
此方式不完成 TCP 三次握手,而是发送一个 SYN 包,如果目标端口开放,那么会返回一个 SYN/ACK 包,如果端口关闭,那么会返回一个 RST 包。
TCP Connect 扫描
nmap -sT dxll.love
此方式完成 TCP 三次握手,如果目标端口开放,那么会返回一个 SYN/ACK 包,如果端口关闭,那么会返回一个 RST 包。 目标主机可能会记录下连接,所以此方式不太隐蔽。
TCP 隐秘扫描
如果收到 RST 响应,则端口关闭,否则判定端口开放或被屏蔽。
nmap -sN dxll.love
不设置任何标志位。
nmap -sF dxll.love
只设置TCP FIN标志位。
nmap -sX dxll.love
flags的FIN、URG、PUSH都为1的包。
TCP ping 扫描
nmap -sP dxll.love
通过发送ICMP Echo请求(也称为Ping请求)到目标主机,命令将检测主机是否响应了请求并返回IP地址。如果主机响应,则表示主机是在线的。在这个扫描中,Nmap只检查是否有响应,而不扫描主机的任何端口。
5 UDP 扫描
namp -sU dxll.love
UDP 扫描需要发送 UDP 包,如果目标端口开放,那么会返回一个 ICMP 端口不可达消息,如果端口关闭,那么会返回一个 ICMP 端口不可达消息或者没有响应。
6 路由跟踪
nmap --traceroute dxll.love
查出从本地计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间。
7 操作系统探测
nmap -O dxll.love
nmap 会发送一系列的 TCP 和 UDP 包,然后分析返回的包,从而判断目标主机的操作系统。
telnet
iperf3
tmux
守护进程
计划作业
crontab
- 查看计划作业
crontab -l - 编辑计划作业
crontab -e - 删除计划作业
crontab -r
UFW
ufw enable启动防火墙ufw disenable关闭防火墙ufw allow 22打开端口ufw delete allow 22关闭端口ufw status防火墙状态
远程桌面
other -> linux
直接使用微软的远程桌面协议(RDP)
-
下载
sudo apt install xrdp -
打开端口
sudo ufw allow 3389
linux -> other
-
sudo apt install freerdp2-x11 -
xfreerdp /v:10.0.0.6 /u:root /p:password