意外更改sudo运行权限,导致其无法运行

Jos*_*nto 2 permissions sudo

我运行sudo chmod 777 -R /usr/bin了一些程序,因为我希望能够更轻松地运行,而无需不断输入我的 root 密码,但现在/usr/bin/sudo每当我运行时都会出现错误sudo。即这个错误:

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Run Code Online (Sandbox Code Playgroud)

我不知道如何解决这个问题。

Ter*_*nce 5

还可以从启动到选择 Root 的恢复模式执行以下过程。然后启动 root 后,输入以下命令将驱动器挂载为读/写,以便进行更改:

mount -o remount,rw /
Run Code Online (Sandbox Code Playgroud)

我建议按照此站点上的第一个答案启动到 Live CD,以便您可以安装硬盘驱动器并修复文件。点击步骤 #5 后停止,以便您的硬盘驱动器以 root 用户身份安装。

如何修复 grub?(安装Windows后如何恢复Ubuntu?)


以 root 用户身份安装驱动器后,您应该能够从终端窗口输入:

chmod 4755 /usr/bin/sudo
Run Code Online (Sandbox Code Playgroud)

为 sudo 文件设置 setuid。

以下列表是/usr应设置 setuid 的所有文件:(我将它们保留为列表,您可以根据需要复制和粘贴)

chmod 4755 /usr/bin/pkexec
chmod 4755 /usr/bin/sudo
chmod 4755 /usr/bin/mtr
chmod 4755 /usr/bin/traceroute6.iputils
chmod 4755 /usr/bin/gpasswd
chmod 4755 /usr/bin/lppasswd
chmod 4755 /usr/bin/passwd
chmod 4755 /usr/bin/newgrp
chmod 4755 /usr/bin/chsh
chmod 4755 /usr/bin/chfn
Run Code Online (Sandbox Code Playgroud)

编辑2:

以下文件具有以下权限rwxr-sr-x,并且可以在主机备份后通过将以下内容复制并粘贴到终端来重置:(有些文件可能与您的系统不同)

sudo chmod 2755 /usr/bin/mail-unlock
sudo chmod 2755 /usr/bin/dotlockfile
sudo chmod 2755 /usr/bin/ssh-agent
sudo chmod 2755 /usr/bin/wall
sudo chmod 2755 /usr/bin/dotlock.mailutils
sudo chmod 2755 /usr/bin/chage
sudo chmod 2755 /usr/bin/bsd-write
sudo chmod 2755 /usr/bin/crontab
sudo chmod 2755 /usr/bin/expiry
sudo chmod 2755 /usr/bin/mlocate
sudo chmod 2755 /usr/bin/mail-touchlock
sudo chmod 2755 /usr/bin/mail-lock
Run Code Online (Sandbox Code Playgroud)

由于您运行的只是chmod 777 -R /usr/bin并且该目录中没有子目录,因此除了链接和列表中上面明显的文件之外的所有文件都设置了“suid”权限,该目录中的其余文件都具有权限-rwxr-xr-x(或755)的设置。您可以通过键入以下内容来重置这些文件的权限,而无需触摸 setuid 文件或链接:

sudo chmod go-w /usr/bin/*
Run Code Online (Sandbox Code Playgroud)

group这会将和权限设置otherr-x并将链接保留为lrwxrwxrwx不要运行 AS,chmod 755因为这会弄乱我们已修复的权限!