所以我输入
sudo chmod 777 -R /usr/bin
现在当我尝试使用 sudo 时,它说,
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
我尝试使用 chmod 更改 /usr/bin/sudo 的权限,但它说
chmod: changing permissions of '/usr/bin/sudo': Operation not permitted
我该怎么办?我无法使用 sudo,而且我没有足够的权限在不使用 sudo 的情况下更改 sudo 的权限。
编辑:为什么投反对票?
答案1
如果你不知道 root 密码,那么这个方法su
也行不通。现在你运气不好。但密码还没有丢失。
进入已安装的系统并输入:
% df -k /usr
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda5 61386772 5754168 52491280 10% /usr
记住并最好记下这个 /dev/sda5。对于你的情况,这个设备可能有所不同,因为我有多个分区。
现在启动到实时 DVD。
以 root 身份进入终端。
执行如下命令:
# mount /dev/sda5 /mnt
注意:不要输入/dev/sda5,而要输入上一步写下的设备!!!
现在输入:
# chmod 4755 /mnt/bin/{sudo,chsh,newgrp,passwd,chfn,gpasswd}
# chmod 6755 /mnt/bin/{at,procmail}
事实上,最好的办法就是
# chmod 4755 /mnt/bin/sudo
其余操作您可以按照上述说明在已安装的操作系统中以正常启动的方式进行。
答案2
尝试重新设置 sudo 上的 setuid 位:
# chmod 4755 /usr/bin/sudo
以 root 身份,但在 /usr/bin 上设置 777 权限不是一个好主意,因此您可能还需要执行以下操作:
# chmod go-w -R /usr/bin
从外界删除你的二进制文件的写权限。
可能有许多程序需要 setuid 位,我将尝试从我的系统中列出这些程序:
root@myhost:~# find /usr/bin -perm -4000 -ls
131794 156 -rwsr-xr-x 1 root root 157192 Jan 20 2021 /usr/bin/sudo
131485 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh
131175 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp
131359 56 -rwsr-sr-x 1 daemon daemon 55560 Jul 24 2018 /usr/bin/at
131488 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd
131484 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn
131487 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd
131333 92 -rwsr-sr-x 1 root mail 93392 Nov 16 2017 /usr/bin/procmail
root@myhost:~#
所有这些都需要一个chmod 4755 /usr/bin/<program>
。
这意味着:
# chmod 4755 /usr/bin/sudo
# chmod 4755 /usr/bin/chsh
# chmod 4755 /usr/bin/newgrp
# chmod 4755 /usr/bin/passwd
# chmod 4755 /usr/bin/chfn
# chmod 4755 /usr/bin/gpasswd
或者在 bash 中,对于懒人来说,只需一个命令:
# chmod 4755 /usr/bin/{sudo,chsh,newgrp,passwd,chfn,gpasswd}
编辑:请注意,/usr/bin/at 和 /usr/bin/procmail 也设置了 setgid,因此您需要:
# chmod 6755 /usr/bin/at
# chmod 6755 /usr/bin/procmail
希望这可以帮助。
问候,马文