跳转至

Linux 基础

环境变量

Bash
# 系统级环境变量配置文件
/etc/environment
# 登录时加载的profile文件
/etc/profile
# 查看当前环境变量
env
# 查看当前Shell PID
echo $$
# 查看可执行文件搜索路径
echo $PATH
# 查看当前用户名
echo $USER

帮助手册

Bash
1
2
3
4
5
6
7
# 查看passwd命令手册
man passwd
# 按关键字搜索手册页
man -k passwd
man -k '^passwd$'
# 查看passwd配置文件手册(第5节)
man 5 passwd

查找文件

Bash
# 查找nc命令位置
which nc
which python3
# 查找今天(0天内)修改的文件
find / -mtime 0
# 查找2天内修改的文件,按大小排序取前10个
find / -mtime 2 -ls | sort -k 9 -k 10 | more
# 查找.sh脚本,且最近30分钟内修改
find / -type f -iname "*.sh" -mmin 30 -ls
# 批量删除.txt文件
find . -iname "*.txt" -exec rm -rf {} \;
# 查找root用户可写的.sh脚本并丢弃错误
find . -user root -type f -perm -o=w -iname "*.sh" 2>/dev/null
# 查找root用户可执行、其他用户不可读的文件
find / -user root -perm -u=s 2>/dev/null

检索关键字

Bash
# 递归查找当前目录下包含passwd的文件
grep -Ri passwd .
# 查找/etc/passwd中以sh结尾的行
grep -E "*sh$" /etc/passwd
# 查找/etc/passwd中以root/bash开头的行
grep -E '^root|bash$' /etc/passwd
# 在rockyou.txt中查找包含bg|zip的行
grep '[bg]zip' rockyou.txt
# 递归查找包含password的行并去重
grep -RE "password\s*=" . 2>/dev/null | sort -u

数据流修改

Bash
1
2
3
4
# 全局替换root为ROOT
cat /etc/passwd | sed 's/root/ROOT/g'
# 替换/etc/passwd中root行的密码字段
grep -E '^root' /etc/passwd | sed 's/x/$1$nEpQ3bhF$6SdtanppL/'

字符提取

Bash
1
2
3
4
5
6
7
8
# 以:为分隔符,提取/etc/passwd第1、7列
cut -d":" -f1,7 /etc/passwd
# 提取/etc/passwd中以sh结尾行的第1列
cat /etc/passwd | grep -E "sh$" | cut -d ":" -f1
# 以:为分隔符,打印/etc/passwd第1、3列
cat /etc/passwd | awk -F':' '{print $1, $3}'
# 打印who命令输出的第1、2列
who | awk '{print $1"\n"$2}'

查看进程

Bash
1
2
3
4
5
6
7
8
# 查看所有进程(全格式)
ps -efw
# 查看所有进程(BSD格式)
ps aux
# 查看chrome进程
ps -fC chrome
# 杀死指定PID进程
kill -9 <PID>

SSH 服务

Bash
# 查看是否允许root登录
grep PermitRootLogin /etc/ssh/sshd_config
# 查看SSH服务systemd配置
/lib/systemd/system/ssh.service
# 生成RSA密钥
ssh-keygen -t rsa
# 生成DSA密钥
ssh-keygen -t dsa
# 生成ECDSA密钥
ssh-keygen -t ecdsa
# 生成Ed25519密钥
ssh-keygen -t ed25519
# 授权公钥
cat ~/.ssh/id_rsa.pub > authorized_keys
# 设置authorized_keys权限
chmod 640 ~/.ssh/authorized_keys
# 设置私钥权限
chmod 400 ~/.ssh/id_rsa