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 次 |
最近记录: |