我正面临一个问题。当我尝试sudo在我的终端上做时,我得到:
sudo: must be setuid root
Run Code Online (Sandbox Code Playgroud)
我在 google 上搜索了这个问题,并按照设置 sudo 权限之类的建议进行了操作,但它们已经处于所需状态。无法弄清楚可能是什么问题。请帮忙。
谢谢
的输出mount:
/dev/sda8 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/sda6 on /home type ext4 (rw)
/dev/sda7 on /var type ext4 (rw)
/home/incaendo/.Private on /home/incaendo type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=b746275454680798,ecryptfs_fnek_sig=2164f6a8d7aa74c7)
gvfs-fuse-daemon on /home/incaendo/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=incaendo)
Run Code Online (Sandbox Code Playgroud)
使用重新安装sudo包
pkexec apt-get --reinstall install sudo
Run Code Online (Sandbox Code Playgroud)
将设置 sudo 的 setuid 标志。如果失败,请尝试使用图形包管理器或aptitude. 如果这也失败了,请手动设置 sudo 的 setuid 位:
pkexec chmod u+s /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)
如果该操作也失败并出现错误"pkexec: must be setuid root",则检查包含的文件系统/usr/bin是否未使用nosuid选项集意外挂载。检查 的输出mount。
如果也不是这种情况,则检查是否有任何二进制文件/usr/bin设置了其 setuid 位,使用:
find /usr/bin -perm 4755
Run Code Online (Sandbox Code Playgroud)
这应该至少列出passwd,sudo和喜欢。如果没有,那么肯定是一个流浪的宇宙射线把那些 setuid 位踢了过来(或者这毕竟是你,chmod -s *因为有传言说 setuid 是坏的,所以过于热心?)
无论哪种方式,您都必须首先重新建立您的 sudo 权限。我已经在这个问题的单独答案中描述了这样做的方法。一旦你有了这些,重新安装每个包含 setuid 二进制文件的包,或者手动 chmod 每个二进制文件,如本答案顶部所示。
不幸的是,正如另一个问题的答案所述,没有简单的方法可以找出 Ubuntu 中的哪些二进制文件安装了 setuid root。
这是一个几乎原始的 12.04 的列表,以供参考。左边的包名,冒号右边的二进制文件:
$ find {/usr,}/bin -perm 4755 | xargs dpkg -S
passwd: /usr/bin/chsh
iputils-tracepath: /usr/bin/traceroute6.iputils
mtr-tiny: /usr/bin/mtr
passwd: /usr/bin/gpasswd
sudo: /usr/bin/sudoedit
login: /usr/bin/newgrp
passwd: /usr/bin/chfn
sudo: /usr/bin/sudo
passwd: /usr/bin/passwd
login: /bin/su
iputils-ping: /bin/ping
mount: /bin/umount
mount: /bin/mount
fuse: /bin/fusermount
iputils-ping: /bin/ping6
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4842 次 |
| 最近记录: |