Inv*_*orn 9 permissions command-line root sudo mount
几天我除了上网什么都没在电脑上做任何事情,突然当我试图做:
$ sudo apt-get update
Run Code Online (Sandbox Code Playgroud)
我有:
sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set
or an NFS file system without root privileges?
Run Code Online (Sandbox Code Playgroud)
我不知道发生了什么,我记得上次跑步sudo是我更新的时候。
sudo使用称为setuid(设置用户 ID,或也称为suid)的机制。如果在可执行文件(如sudo)上设置了该位,则应用程序在用户的权限下执行,用户是该文件的所有者(在 的情况下sudo,所有者是root用户)。
这意味着, sudo 作为root. 到现在为止还挺好。但是,现在没有什么可以阻止您插入带有外壳的 USB 驱动器,该驱动器设置了 setuid 位。您拥有完全的 root 访问权限!这就是为什么通常使用 mount 选项挂载 USB 驱动器的原因noexec,以防止在此类设备上执行二进制文件/脚本。如果您仍想执行文件,则另一个挂载选项是您问题中的错误消息中提到的选项:nosuid.
请参阅安装手册页的摘录:
Run Code Online (Sandbox Code Playgroud)[...] nosuid Do not allow set-user-identifier or set-group-identifier bits to take effect. [...]
使用该mount命令,您可以确定您的根文件系统是否使用该选项挂载。只需输入:
$ mount
Run Code Online (Sandbox Code Playgroud)
您现在可以即时重新挂载文件系统并更改挂载选项:
$ mount -n -o remount,suid /
Run Code Online (Sandbox Code Playgroud)
这设置了suid选项,这与nosuid.
| 归档时间: |
|
| 查看次数: |
26800 次 |
| 最近记录: |