更改了 /usr/bin 的所有者

Ell*_*ink 7 sudo 12.04

我做到了...我想每个人都做过,但这是我的第一次。我执行sudo chown -R /usr/bin和我才意识到我的错误,但为时已晚......现在我无法访问sudo的,因为我收到以下错误:sudo: must be setuid root。我真的很感激,如果我能避免Ubuntu的完全重新安装,因为这将需要太多的工作:(

这是我尝试过但没有成功的命令(在恢复模式下):

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

我也尝试了chmod 0440 /etc/sudoers所有没有成功。关于我可以尝试修复它的任何想法?

注意:很抱歉创建另一个线程,但由于我知道我执行的确切命令来炸毁它,我认为这可能会有所作为 :)

ash*_*osh 3

只需使用任何 live CD 启动进入恢复,然后选择硬盘并导航到已安装的 ubuntu 的 bin 文件夹。然后像这样重置权限:转到根控制台。到达那里后,执行以下命令以返回权限:

chmod 755 /bin\
Run Code Online (Sandbox Code Playgroud)

编辑:只需从任何 live cd 进入终端并在那里写入:

sudo fdisk -l 
Run Code Online (Sandbox Code Playgroud)

这将列出所有分区。只需找到驱动器的根分区并记下其设备名称即可。它将按顺序列出设备:

/dev/sda1
/dev/sda2
/dev/sda3
....
....
Run Code Online (Sandbox Code Playgroud)

只需记下根分区的设备名称,即可使用Gparted更好地检查分区。但找出根分区是大家关心的事情。现在假设 /sda2 是您的根分区(我假设)。只需转到终端并安装设备即可

sudo mkdir /mnt //in case live cd does not have /mnt folder.
sudo mount /dev/sda2
Run Code Online (Sandbox Code Playgroud)

现在,当您安装设备时,只需导航到它:

sudo lshw 
Run Code Online (Sandbox Code Playgroud)

并记下根设备序列号

cd /media
cd device-logical-number  // for ex- mine have A272B6CF72B6A785
Run Code Online (Sandbox Code Playgroud)

现在您可以 cd 到 bin 目录并可以在那里应用权限。