![禁止 root 对未在 /etc/passwd 中列出的用户执行 su 操作](https://linux22.com/image/533891/%E7%A6%81%E6%AD%A2%20root%20%E5%AF%B9%E6%9C%AA%E5%9C%A8%20%2Fetc%2Fpasswd%20%E4%B8%AD%E5%88%97%E5%87%BA%E7%9A%84%E7%94%A8%E6%88%B7%E6%89%A7%E8%A1%8C%20su%20%E6%93%8D%E4%BD%9C.png)
在 Linux 上,我们根据 AD 验证用户身份。AD 用户未列在 /etc/passwd 中。
我们即将部署 NFS 解决方案,为每组用户安装一些额外的空间。
如果具有 sudo su 权限的用户(A)进入 root 权限,那么他只需通过 su 用户(B)并进入 NFS 即可模拟用户(B)。
如果用户未在 /etc/passwd 中列出,有什么方法可以禁止 root 用户成为 su 用户?
答案1
我认为你应该重新考虑你的问题。我不知道有什么方法可以实现你想要的,但是...如果你有一个拥有 sudo ALL 权限的用户,而你并不完全信任他,那么你应该限制该权限。
答案2
如果您要授予用户 A 根权限,那么您无法限制他们做任何事情(无论您设置了什么阻止,根权限始终可以绕过它们;只有极少数例外)。您应该将用户 A 添加到 sudoers 并严格配置他们可以运行或不能运行的程序。
答案3
没有回答您的直接问题,但我认为您的问题出在 NFS,而不是 sudo/su - 您在使用 NFSv3 时都会遇到这个问题,因为它依赖于 UID 来强制执行访问权限。
即使您确实以某种方式阻止用户切换到 root 并返回另一个 UID,恶意用户也可以简单地连接他们自己的设备或启动不同的操作系统来代替您特别配置的系统并突破保护。
您是否考虑过使用 NFSv4?它使用 Kerberos 来验证挂载请求并强制执行访问权限,因此不容易发生这种情况。