我已经这样做了:
sudo chown -R myname /usr/
Run Code Online (Sandbox Code Playgroud)
现在sudo由于此错误,我无法使用该命令:
sudo: 必须是 setuid root
当我读到这意味着这个文件的所有者/usr/bin/sudo不是根。由于/usr文件夹上的 chown,它现在是我的用户。
在许多论坛和博客上,人们建议以 root 身份执行此操作:
# chown root:root /usr/bin/sudo
# chmod 4111 /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)
...但问题是我需要以 root 身份登录,但我不能,因为如果我su在终端中输入密码是错误的(实际上我使用的是我添加到用户的密码):
$ su
Password:
su: Authentication failure
Run Code Online (Sandbox Code Playgroud)
那么我可以取回sudo命令吗?
编辑:我的 Ubuntu 在 Mac OS X 上的 Parallels 下。
我想找到所有 suid 二进制文件的列表。我使用命令
find / -perm 4000
Run Code Online (Sandbox Code Playgroud)
然而,这并没有给我任何输出。我了解到 SUID 文件可能处于 4xxx 权限模式。但是如果我发出命令
find / -perm -4000 (which all websites tell)
Run Code Online (Sandbox Code Playgroud)
或命令
find / -perm +4000
Run Code Online (Sandbox Code Playgroud)
两者都给我相同的结果。据我所知它应该总是+4000(因为如果它是用户 suid 二进制,那么第一个字节应该是 4,如果组 suid 二进制然后第一个字节应该是 2,如果一个粘滞位打开目录,那么第一个字节应该是是 1)。那-4000怎么也给结果呢?