在Linux中,nosuid
选项通常用于移除文件或目录的setuid位,这样可以防止文件执行者获得root权限
然而,你可以在一个特定的场景下将nosuid
与sudo
结合使用,那就是当sudo
配置允许某个用户或用户组无需输入密码即可执行特权命令时。在这种情况下,你可以将该用户或用户组的shell设置为没有setuid位的可执行文件,例如/bin/false
。这样,即使他们使用sudo
执行命令,也不会获得root权限,因为可执行文件没有setuid位。
要实现这一点,你需要编辑/etc/sudoers
文件,找到相应的用户或用户组设置,并添加以下行:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
UserAlias sudoers = user1,user2,user3
RunasAlias sudoers = ALL
Percent-Group sudoers = %admin
Defaults env_reset, !requiretty
Defaults secure_root_file=/dev/null
然后,将UserAlias
、RunasAlias
和Percent-Group
中的用户或用户组添加到Defaults secure_path
行中。这样,当这些用户使用sudo
执行命令时,将会使用/bin/false
作为他们的shell,从而避免了获得root权限的风险。