案例一:切换用户,切换后保持当前用户所在的目录,并使用当前用户的环境变量
# su <user>
案例二:切换用户,切换后进入被切换用户的家目录,并使用被切换用户的环境变量
# su - <user>
# su <user>
# su - <user>
# getcap /usr/bin/ping
(补充:确认没有输出结果)
# sysctl net.ipv4.ping_group_range="0 2147483647"
# setcap cap_net_raw+eip /usr/bin/ping
# getcap /usr/bin/ping
/usr/bin/ping = cap_net_raw+eip
# sysctl net.ipv4.ping_group_range="1 0"
# sysctl net.ipv4.ping_group_range="0 2147483647"
如果是 Rocky Linux & RHEL:
ping: socket: Address family not supported by protocol
如果是 openSUSE & SLES:
Error: ping: socket: Operation not permitted
# vim /etc/audit/rules.d/audit.rules
添加以下内容:
......
-a exit,always -F dir=/tmp -F perm=rwxa
(补充:这里以监控目录 /tmp 里的目录和文件为例)
# vim /etc/audit/rules.d/audit.rules
添加以下内容:
......
-a exit,always -S unlink -S unlinkat -S rmdir -S rename -S renameat -F path=/dev/null
(补充:这里以监控目录 /dev/null 文件为例)
# service auditd restart
# cat /var/log/audit
(
补充:记录里的
1) nametype=CREATE 字段代表创建
2) nametype=NORMAL 字段代表普通
3) nametype=DELETE 字段代表删除
)
或者:
# sudo ausearch -i -k user-modify
(补充:这里以显示文件被修改的记录为例)
显示当前系统正在打开的文件
1) a 代表前后 2 个参数都必须满足时才显示
2) -c 代表只显示指定的进程所打开的文件,后面接进程名
3) +d 代表只显示指定目录下被进程打开的文件,后面接目录名
4) +D 代表只显示指定目录下以及此目录下所有子目录下被进程打开的文件,后面接目录名
5) -g 代表只显示指定 GID 所属的进程,后面接 GID 号
6) -i 代表只显示所有符合条件的进程情况,也可以在后面接协议名称 tcp、udp 这样就只显示属于此协议的进程,或者接协议名称加端口号例如 tcp:<端口号>、udp:<端口号> 这样就只显示属于此类端口号的进程
7) -n 不显示主机名称
8) -p 代表只显示指定 <进程号> 所打开的文件
9) -r 代表指定显示的频率,单位为秒,后面接数字
10) -u 代表之显示指定用户所属的进程,后面接用户名
# lsof | more
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 251,1 4096 1 /
......
1) COMMAND 进程名
2) PID (Process Id) PID 号
3) USER 用户
4) FD 文件描述信息
(补充:cwd 代表当前目录,txt 代表 txt 文件,rtd 代表 root 目录,mem 代表内存映射文件)
5) TYPE 文件类型
(补充:DIR 代表当前目录,REG 代表普通文件,CHR 代表字符,a_inode 代表 Inode 文件,FIFO 代表管道或者 socket文件,netlink 代表网络,unkonwn 代表未知)
6) DEVICE 设备 ID
7) SIZE/OFF 进程大小
8) NODE 文件的 Inode 号
9) NAME 路径或链接
# lsof | grep deleted
# lsof -u zhumingyu mingyuzhu
(补充:这里以显示用户 zhumingyu 和 mingyuzhu 已打开的文件为例)
# lsof -u mingyuzhu
(补充:这里以不显示用户 mingyuzhu 已打开的文件为例)
# lsof -p 1024
(补充:这里以显示 PID 号是 1024 已打开的文件为例)
# lsof -p ^1024
(补充:这里以不显示 PID 号是 1024 已打开的文件为例)
# lsof -p 1,2,3
(补充:这里以显示 PID 号是 1、2 和 3 已打开的文件为例)
# lsof -i
# lsof -i 4
# lsof -i 6
# lsof -i TCP
# lsof -i UDP
# lsof -i:22
(补充:这里以显示 TCP 或者 UPD 的 22 端口已打开的文件为例)
# lsof -i TCP:22
(补充:这里以显示 TCP 的 22 端口已打开的文件为例)
# lsof -i TCP:1-1024
(补充:这里以显示 TCP 的 1 端口到 1024 端口打开的文件为例)