跳到主要内容

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

自动工具