我想找到所有设置了 setuid 位的文件,但又不想安装所有 ubuntu 软件包。是否有一个数据库包含此类信息,以便我可以查找?
答案1
对于已安装的软件包...
sudo find / -perm -4000 -type f -exec ls -l {} \; > /tmp/files_with_setuid.txt
-perm -4000
是setuid的权限。-perm -u=s
也可以使用。-type f
仅适用于文件;如果需要包含目录,则删除ls -l
显示为长列表- 并将其存储到文件 /tmp/files_with_setuid.txt 中
您将从 /proc 和 /run 收到一些错误通知。第一对文件...
more /tmp/files_with_setuid.txt
-rwsr-xr-x 1 root root 43088 sep 16 2020 /snap/core18/1997/bin/mount
-rwsr-xr-x 1 root root 64424 jun 28 2019 /snap/core18/1997/bin/ping
-rwsr-xr-x 1 root root 44664 mrt 22 2019 /snap/core18/1997/bin/su
-rwsr-xr-x 1 root root 26696 sep 16 2020 /snap/core18/1997/bin/umount
-rwsr-xr-x 1 root root 76496 mrt 22 2019 /snap/core18/1997/usr/bin/chfn
-rwsr-xr-x 1 root root 44528 mrt 22 2019 /snap/core18/1997/usr/bin/chsh
...
脚本 (在 SO 上找到)下载每个包并检查setuid
:
PKG=$(apt-cache search . | cut -f 1 -d ' ');
echo $PKG | xargs apt-get download;
F=(`find *.deb`); for i in ${F[@]};
do dpkg -c $i | cut -c 4- | grep ^s | cut -c 4- | cut -f 2 -d '.';
done | tee suid_root;
它不安装软件包,只下载它们...所以您仍然需要大量的磁盘空间。