如何将 /etc 文件夹所有者改回 root:root?

如何将 /etc 文件夹所有者改回 root:root?

/etc昨天我意外地使用此命令更改了文件夹组的所有者:

sudo chown -R pts:apache /etc

我这样做是为了从我的终端上传文件。后来当我尝试将其改回时,root:root它显示了此错误:

sudo: /etc/sudo.conf is owned by uid 1001, should be 0
sudo: /etc/sudo.conf is owned by uid 1001, should be 0
sudo: /etc/sudoers is owned by uid 1001, should be 0
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

sudo由于这个原因,我不能再使用了。

我该如何解决这个问题?谢谢。

答案1

尝试这个命令

pkexec chown root:root /etc/sudoers /etc/sudoers.d -R

答案2

/etc 中并非所有文件都是root:root.

您可以使用 Gryu 或 berkancetin 提供的命令,但需要更改一些文件:

-rw-r----- 1 root  daemon   144 Oct 21  2013 at.deny
drwxr-sr-x 2 smmta smmsp   4096 Apr  1  2016 mail  
-rw-r----- 1 root  shadow  1110 Aug 10  2018 gshadow 
drwxr-s--- 2 root  dip     4096 Apr 28  2019 chatscripts
-rw-r----- 1 root  shadow  1462 Aug  5  2019 shadow

还可以有更多(因为这个列表来自我的一台机器)

答案3

在这种情况下,这三种方法都有效:

  • 从 LiveCD 启动(带有无需安装即可试用 Ubuntu选项),在 liveCD 中挂载你的根分区并/etc使用它来更改文件夹的所有者:

    $ sudo mount -t ext4 -o rw /dev/sda1 /mnt
    $ sudo chown -R root:root /mnt/etc
    

    重启

  • 或者,如果你知道 root 的密码:

    $ su 
    # chown -R root:root /mnt/etc
    

    测试了两种版本并且都可以正常工作。

  • berkancetin 的方法也有效:

    $ pkexec chown root:root /etc/sudoers /etc/sudoers.d -R
    $ sudo chown -R root:root /etc
    $ ls -ailh / | grep etc
    1046529 drwxr-xr-x 139 root root  12K кві 22 12:38 etc
    

对于不属于 root 的文件和目录(如 Rinzwind 所述),您可以运行:

sudo chown root:daemon /etc/at.deny
sudo chown -R root:bind /etc/bind
sudo chown -R root:dip /etc/chatscripts
sudo chown -R root:lp /etc/cups
sudo chown root:shadow /etc/*shadow*
sudo chown -R root:landscape /etc/landscape
sudo chown mpd:audio /etc/mpd.conf
sudo chown -R postgres:postgres /etc/postgresql
sudo chown -R root:dip /etc/ppp
sudo chown -R smmta:smmsp /etc/mail

/etc/您可以从其他具有几乎相同配置的正常运行的 ubuntu 机器上获取不属于 root 的文件和目录列表。

相关内容