我输入了chmod -R 777 /usr/bin
,但是现在 sudo 不起作用。
它说sudo must be setuid root
。
网上的一些建议说要运行chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo
。
输入后chown root:root /usr/bin/sudo
显示opened in readonly mode
错误。
答案1
尽管已被录取,但我现在确信这个答案是错误的。(在与 OP 讨论过 accept 之后,我希望尽快改进它。)我记得其他人说这有效,但我相信他们的问题至少略有不同。此处描述的方法对于某些被+
chmod -R 777 /usr/bin
中断或无法完成的情况仍然有用。但一旦完成,CtrlCpkexec
也是未设置的,并且它不会比sudo
正如 Damien Roche 和 Oli 正确评论的那样。
在 Ubuntu 桌面系统上,PolicyKit已安装,因此pkexec
可以用来修复损坏的sudo
可执行文件或sudoers
文件。您无需启动到恢复模式,也无需从实时 CD 启动。您甚至无需重新启动。
在这种情况下,运行以下命令:
pkexec chown root:root /usr/bin/sudo
pkexec chmod 4755 /usr/bin/sudo
看这个问题了解更多信息。
答案2
即使从实时 CD/U盘运行,您也必须chmod
在命令前加上前缀sudo
。因此您的步骤将如下所示:
- 从实时 CD/U盘启动
- 检查磁盘是否已自动挂载(以及挂载到哪里)。如果没有,请挂载它(见下文)
- 用于
sudo chmod 0755 <path>
调整权限
如何确定磁盘的安装位置:从终端窗口运行mount
(不带参数)。这将列出所有已安装的设备。检查type
列出的内容——您可以跳过不使用“真实文件系统”的所有内容(您的磁盘可能使用 ext3 或 ext4——您肯定可以跳过诸如 proc、sysfs 等内容)。如果某事听起来很有希望(看起来像/dev/sda1 on /media/sda1 type ext3
),请使用检查其内容ls /media/sda1
以查看是否是那样。
如果未安装,您可以检查/dev
磁盘可能所在的条目(使用ls /dev/ |grep '/dev/sd
检查可用设备;您的磁盘应看起来像/dev/sdaX
或/dev/sdbX
类似的东西——其中 X 是数字)。将其与已安装设备的列表进行比较。如果它不在那里,请尝试安装它并检查其内容(如上所示)。要安装它,首先创建一个安装点,例如sudo mkdir /mnt/mydisk
,然后尝试使用 安装设备mount /dev/sda1 /mnt/mydisk
并使用 检查其内容ls /mnt/mydisk
。
一旦您获得正确的磁盘,您就可以去更改您的 usr 目录中的权限:sudo chmod 0755 /mnt/mydisk/usr
。
chmod
现在,如果您最初使用参数递归运行该命令,则可能仍会遇到麻烦-R
。在这种情况下,您可以尝试手动修复每个条目 - 或者您可以直接进行全新安装...
答案3
我认为 Mat 是对的,您必须是 root 才能将位添加到 /usr/bin,但 sudo 当然是坏的。如果您有 root 密码,则可以使用该密码以 root 身份登录,然后使用上述命令修复权限。但是,如果您没有(我也没有),那么最好这样做:
- 从 Linux Live CD 启动
- 成为根
- 使用上述系统挂载分区
- 然后使用终端理顺该文件系统的权限。
Root 始终是用户编号 0,因此任何系统上的 Root 都可以对其他文件系统上的 Root 进行允许的更改。
答案4
在尝试设置本地脚本的权限时,我错误地破坏了 sudo 权限并更改了所有权。我可以通过执行以下操作将 sudo 的所有权改回 root:
步骤1:切换到ubuntu 恢复模式。如果你不了解这个过程,你可以参考这里的答案:https://askubuntu.com/a/172346/223901
第2步:进入恢复模式后,选择root — 进入 root shell 提示符
步骤3:执行以下命令
mount -o remount,rw /
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
reboot
等待系统启动通常情况下您将看到 sudo 的所有权已回到 root 手中。