如何恢复系统目录的 sudo/root 所有权?

如何恢复系统目录的 sudo/root 所有权?

我正在尝试找出我的 ubuntu 安装的默认所有权和权限。我还想弄清楚错误地将系统文件的文件所有权授予用户 robert 是否是一个不可恢复的错误。尝试撤消我对系统所做的操作并重新安装是否太复杂了?

首先,介绍一些背景知识。我认为我在尝试更改第二个 ext4 驱动器(该驱动器上以前安装了 ubuntu)的权限时输入了错误的命令。我一定是无意中更改了我当前的 / 目录而没有意识到这一点。问题的症状是我在当前系统上不再具有 sudo 访问权限。

robert@robert-KJ379AA-ABA-a6400f:/$ sudo ls -al
sudo: /etc/sudoers is owned by uid 1000, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

我看到“robert”现在拥有 /etc 内的所有文件:示例:

drwxr-xr-x   3 robert root    4096 Apr  9 12:27 firefox
drwxr-xr-x   4 robert root    4096 Aug 23  2012 fonts
drwxr-xr-x   3 robert root    4096 Aug 23  2012 foomatic
-rw-r--r--   1 robert root     766 Apr 11 12:39 fstab
-rw-r--r--   1 robert root     664 Apr  9 11:26 fstab~
drwxr-xr-x   2 robert root    4096 Mar 29  2012 fstab.d
-rw-r--r--   1 robert root     664 Apr 11 12:36 fstab.original
-rw-r-----   1 robert fuse     216 Oct 18  2011 fuse.conf
-rw-r--r--   1 robert root    3343 Apr 19  2012 gai.conf
drwxr-xr-x   5 robert root    4096 Aug 23  2012 gconf

以下是 / 目录的权限和所有权

drwxr-xr-x  25 root   root    4096 May  5 15:26 .
drwxr-xr-x  25 root   root    4096 May  5 15:26 ..
drwxr-xr-x   2 robert root    4096 Apr 10 22:55 bin
drwxr-xr-x   3 robert root    4096 May  5 15:26 boot
drwxr-xr-x   2 robert root    4096 Apr  9 11:30 cdrom
drwxr-xr-x  15 root   root    4560 May  5 17:28 dev
drwxr-xr-x 150 robert root   12288 May  5 17:45 etc
drwxr-xr-x   3 robert root    4096 Apr  9 11:37 home
lrwxrwxrwx   1 robert root      33 May  5 15:26 initrd.img -> /boot/initrd.img-3.2.0-41-generic
lrwxrwxrwx   1 robert root      33 Apr  9 12:26 initrd.img.old -> /boot/initrd.img-3.2.0-40-generic
drwxr-xr-x  22 robert root    4096 Apr 24 16:58 lib
drwxr-xr-x   2 robert root    4096 Apr 24 16:58 lib64
drwx------   2 robert root   16384 Apr  9 11:26 lost+found
drwxr-xr-x   5 root   root    4096 May  5 17:28 media
drwxr-xr-x   2 root   root    4096 Apr 19  2012 mnt
drwxr-xr-x   2 root   root    4096 Aug 23  2012 opt
dr-xr-xr-x 198 root   root       0 May  5 12:26 proc
drwx------   8 root   root    4096 Apr 17 02:11 root
drwxr-xr-x  23 root   root     820 May  5 17:43 run
drwxr-xr-x   2 root   root    4096 Apr 24 16:58 sbin
drwxr-xr-x   2 root   root    4096 Mar  5  2012 selinux
drwxr-xr-x   2 root   root    4096 Aug 23  2012 srv
drwxr-xr-x  13 root   root       0 May  5 12:27 sys
drwxrwxrwt  10 root   root    4096 May  5 19:37 tmp
drwxr-xr-x  10 root   root    4096 Aug 23  2012 usr
drwxr-xr-x  14 root   root    4096 May  5 17:26 var
lrwxrwxrwx   1 root   root      29 May  5 15:26 vmlinuz -> boot/vmlinuz-3.2.0-41-generic
lrwxrwxrwx   1 root   root      29 Apr  9 12:26 vmlinuz.old -> boot/vmlinuz-3.2.0-40-generic
drwxrwxr--   1 robert robert  4096 Apr  9 01:37 windows1

有人能确认“robert”一定不拥有根目录下的任何这些目录吗?这里有没有什么迹象表明这个问题可能很容易恢复?如果是,你有什么建议或资源来解决这个问题吗?谢谢。

答案1

要使所有内容成为 root 所有者/etc

sudo chown root:root -R /etc

你需要启动 Live CD 并运行

sudo chown root:root -R /media/$USER/*/etc

您需要在文件浏览器中打开文件夹来安装磁盘

答案2

运行以下命令:

pkexec chown root:root -R /etc

现在写下您的密码。

答案3

最好的办法是重新安装所有软件包,然后让其为您修复权限。这需要一些时间,但这是修复所有问题的唯一方法。

sudo apt-get --reinstall install $(dpkg --get-selections | grep install | grep -v deinstall | cut -f1)

您可以查看更多相关内容在这个网站上,包括针对运行该命令的常见问题的一些修复。

请记住,您将需要在命令完成后立即重新启动,否则不同版本的库将(或至少可能)出现奇怪的事情。

答案4

只需运行这些命令

pkexec apt-get install sudo

然后

pkexec chmod 0440 /etc/sudoers.d/README

就这样

相关内容