如何查找所有设置了 setuid 位的文件?

如何查找所有设置了 setuid 位的文件?

我想找到所有设置了 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;

它不安装软件包,只下载它们...所以您仍然需要大量的磁盘空间。

相关内容