linux-手工命令
酒醒只在花前坐,酒醉还须花下眠。
导航
- 基本命令
- 用户/组
- 特权
- 系统/进程
- 网络
- 文件/目录
- 日志
- 杂项
- 自动工具
基本命令
Shell 提升
#提升 Shell 体验
python3 -c 'import pty;pty.spawn("/bin/bash")'
export TERM=xterm
Ctrl + Z
stty raw -echo; fg
stty rows 38 columns 116
文本处理
#字符集转换【小写转大写】
tr '[:lower:]' '[:upper:]' < pass.txt
#nmap 扫描端口粘连用法
grep open port.txt | cut -d '/' -f1 | paste -sd,
sed -i "/regex_exp/d" test.txt #删除匹配行
sed -i "$d" test.txt #删除最后一行
sed -i "5s/old/new/" test.txt #替换第 5 行字串中的 old 为 new
sed -i "s/old/new/" test.txt #替换全文中的 old 为 new
sed -i "$a str" test.txt #在最后一行之后追加行
sed -i "$i str" test.txt #在最后一行之前插入行
杂七杂八
#递归查找 /etc/ 目录下包含 root (忽略大小写)文件,并列出对应的文件名称以及匹配字段所在行。
grep -Hrni root /etc/*
#将文件中不包含 # 的行都列出来
grep -v '#' /etc/crontab
#将匹配行前后 1 行的内容也一起输出
grep root -C 1 /etc/passwd
#根据文件名称查找
find /root /home/ -name '*.ext' -exec ls -l {} \;
#根据路径名称查找,并且要求匹配的是文件
find /root -path '*/.ssh/* -and -type f
#以正则表达的方式查找结尾是 .ssh 这样的文件或目录。【该命令速度更快】
locate -r '\.ssh$'
用户/组
#查看当前用户所束组
id
#查看用户登录记录
w;who;last
#查看 sudo 组的用户成员(无有两种表示:一种是用户和组名称一样,一种是没有用户。)
grep -E '^sudo:' /etc/group | cut -d: -f4
#遍历拥有 shell 的用户身份
for user in $(cat /etc/passwd | grep -i '/bin/.*sh' | awk -F: '{print $1}');do echo "$user" ; id "$user";done
特权
#查看可用的 sudo 命令
sudo -l
#查找 SUID/SGID 的命令
find / -perm -u=s -type f 2>/dev/null | xargs ls -l
find / -perm -g=s -type f -exec ls -l {} \; 2>/dev/null
#查看有没有以特权身份执行的任务
grep -v '#' /etc/crontab /etc/cron.d/*
系统/进程
#发行版本查询
cat /etc/*-release
#Linux 内核版本查询
uname -a
cat /proc/version
#当前环境变量查询
env
#查看 bash 文件正在被哪个进程所使用
fuser /bin/bash
#列出进程 PID 123 正在打开的文件列表
lsof -p 123
#列出 bash 进程的 pid 号
pidof bash
#(1)列出已安装的软件
dpkg -l
#(2)列出 openssh-server 安装包所释放的文件
dpkg -L openssh-server
#(3)根据文件搜索文件所对应的安装包
dpkg -S /usr/sbin/sshd
#(1)列出已安装的软件
rpm -ql
#(2)列出 openssh-server 安装包所释放的文件
rpm -ql openssh-server
#(3)根据文件搜索文件所对应的安装包
rpm -q --whatprovides /filepath/
网络
#主机名查看
hostname
#查看所有网卡详情
ifconfig | grep -B 1 inet
#查看本机路由表(网关)
route -n
#DNS 查看
cat /etc/resolv.conf
#关于 TCP/UDP 监听/连接查询
netstat -antup
#查看所有在本地打开的网络进程
lsof -i
#查找在 tcp/22 端口处打开的进程有哪些
lsof -i :22
#主机存活探测【注意:一旦开始便无法停止】
for net in $(seq 255); do for ip in $(seq 255);do ping -c 1 -W 1 192.168.$net.$ip;done;done
#临时更改网卡 ip
ifconfig eth0 192.168.1.1/24
#临时更改网卡 mac
ifconfig eth0 hw ether 08:00:27:d1:f8:5d
#列出网卡名称
nmcli connection show
#永久更改网卡 ip
nmcli connection modify "Wired" ipv4.method manual ipv4.addresses 192.168.1.1/24 ipv4.gateway 192.168.1.254 ipv4.dns 8.8.8.8
#永久更改网卡 mac
nmcli connection modify "Wired" ethernet.cloned-mac-address 00:11:22:33:44:55
#重启 connection【注:经上述修改之后,需要重启 connection 才能生效。】
nmcli connection down "Wired";nmcli connection up "Wired"
文件/目录
#查看各应用所产生的历史记录(如:zsh、bash、mariadb)
ls -aRl /root/ /home/ | grep .history
#SSH 私钥文件查找
find /root/ /home/ -name .ssh -exec ls -ld {} \; 2>/dev/null
#WEB 应用配置文件查找
find /var/www/ -iname '*conf*' -or -iname '*database*' -or -iname '*set*' -or -iname '*app*' -or -iname '*ini*'
日志
#查看 ssh 服务相关的日志
journalctl --unit=ssh.service
#根据关键字过滤日志信息
journalctl -g ssh
#查看本次开机以来所产生的所有日志信息
dmesg | less
杂项
#配合 binwalk 分割合并的文件。【注:其中 skip 是 DECIMAL 显示的值。】
dd if=AB.jpg of=C.jpg skip=100 bs=1 status=progress