检查系统中的常用命令是否被修改.sh
思路:在 Linux 操作系统中只有目录与文件,Linux 系统命令都是在该系统安装时创建的命令文件,通过遍历命令文件来判断文件创建时间是否被修改,如果命令文件修改时间与系统创建时间不一致,则很有可能被修改
- /bin
- /usr/bin
两目录下存有着所有系统自带的常用命令
#!/bin/bash
# 定义要检查的目录列表
directories=(
"/bin"
"/usr/bin"
)
# 遍历目录列表,检查每个目录下的命令是否被修改
for dir in "${directories[@]}"
do
# 使用通配符获取目录下的所有文件
for cmd in "$dir"/*
do
# 确保文件存在且是一个普通文件
if [[ -f $cmd && -x $cmd ]]; then
# 获取命令的修改时间
mod_time=$(stat -c %Y "$cmd")
# 获取命令的安装时间(假设安装时间为文件的创建时间)
install_time=$(stat -c %W "$cmd")
# 如果修改时间大于安装时间,则认为命令被修改过
if [[ $mod_time -gt $install_time ]]; then
echo "命令 $cmd 可能被修改过,请检查!"
fi
fi
done
done