如何在“chmod -R 777 / usr / bin”之后修复sudo?

我输入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错误。

尽管接受了状态,我现在确信这个答案是错误的 (我希望在与OP讨论接受之后很快就会改进它。)我想我记得其他人说这有效,但我相信他们的问题至少有些不同。 这里描述的方法对于使用Ctrl + C中断chmod -R 777 /usr/bin或者不完成的一些情况仍然是有价值的。 但是一旦它确实如此, pkexec也没有被设定,并且它不会比sudo更好 ,因为Damien Roche和Oli正确地评论道。

在Ubuntu桌面系统上安装了PolicyKit ,因此pkexec可用于修复损坏的sudo可执行文件或sudoers文件 。 您无需启动进入恢复模式,也无需从Live CD启动。 你甚至不需要重启。

在这种情况下,请运行以下命令:

 pkexec chown root:root /usr/bin/sudo pkexec chmod 4755 /usr/bin/sudo 

有关更多信息,请参阅此问题 。

即使从live CD / Pendrive运行,也必须在chmod命令前加上sudo 。 所以你的步骤将如下:

  1. 从现场CD / Pendrive启动
  2. 检查您的磁盘是否已自动挂载(以及在何处)。 如果没有,安装它(见下文)
  3. 使用sudo chmod 0755 来调整权限

如何确定磁盘的安装位置:从终端窗口运行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

如果您最初使用-R参数以递归方式运行chmod命令,那么现在仍然可能遇到麻烦。 在这种情况下,您可以尝试手动修复每个条目 – 或者您可以直接进行全新安装……

我认为Mat是正确的,你必须将root添加到/ usr / bin,但当然sudo已被破坏。 如果您有root密码,则可以使用该密码以root用户身份登录,然后使用上述命令修复权限。 但是,如果你不这样做(我也不这样做),那么最好是:

  • 从Linux Live CD启动
  • 成为那里的根
  • 使用上述系统挂载分区
  • 然后使用终端理顺该文件系统的权限。

Root始终是用户编号0,因此任何系统上的root都可以允许更改为root用户在其他文件系统上。

我没有太多的知识。 但这些步骤解决了我的问题,即使没有重新启动我的机器。 跟着这些步骤:

 su root  cd /usr chmod -R 755 * 

在尝试为我的本地脚本设置权限时,我打破了sudo权限并错误地更改了所有权。 通过执行以下操作,我能够将sudo的所有权更改为root:

第1步:切换到ubuntu恢复模式 。 如果您不知道该过程,可以在此处参考答案: https : //askubuntu.com/a/172346/223901

步骤2:进入恢复模式后,选择root – Drop to root shell prompt

第3步:执行以下命令

 mount -o remount,rw / chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo reboot 

等待系统正常启动,您将看到sudo的所有权回到root。