我是否破坏了 sudo?

我是否破坏了 sudo?

所以我输入

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

希望这可以帮助。

问候,马文

相关内容