使用chown命令将自己设置为/ etc的所有者,现在可以获得各种错误

我需要编辑一个.config文件(我知道这个事实不是创建这些问题,只是为了清除它)并且它不会让我保存它,所以我取得了/etc所有权和所有内容的命令chown -hR username /etc ,让我编辑.config文件,但现在每当我尝试安装任何软件包或使用任何sudo命令时,它都不起作用(我在sudoers.d中检查了sudo文件中的错误)并且没有任何错误)。

那么我该如何将它归还给以前的所有者呢?

由于/etc某些文件可能不归root ,因此如果要避免重新安装,可以执行以下操作:

  1. 引导到实时系统并挂载包含/etc目录的分区。 例如,如果/ partition是/dev/sda1 ,则可以从live系统执行此操作:

     sudo mount /dev/sda1 /mnt 
  2. 将所有文件的所有权设置为root

     sudo chown -R root /mnt/etc 
  3. 此时所有文件都属于root。 这可能是您需要的,但/etc/某些文件可能具有不同的所有权。 如果这些文件在实时系统中也不归root用户所有,则可以将它们用作更改已安装系统权限的参考:

     shopt -s globstar liveSystem="/etc" cd /mnt/etc for file in **/*; do [ -e "$liveSystem/$file" ] && echo sudo chown --reference "$liveSystem/$file" "$file" done 

    如果您还更改了权限,请执行以下操作:

     shopt -s globstar liveSystem="/etc" cd /mnt/etc for file in **/*; do [ -e "$liveSystem/$file" ] && echo sudo chown --reference "$liveSystem/$file" "$file" && echo sudo chmod --reference "$liveSystem/$file" "$file" done 

    那将只打印将运行的命令。 一旦你看到它做了什么并且对它是否正确感到满意,就删除echo以使其实际运行命令。

    现在,这将迭代所有文件,包括那些在两个目录中所有权都是root的文件,但这无关紧要。 你可以写一个更复杂的方法,但它不值得,因为这需要几秒钟。

  4. 重启你的机器:一切都应该恢复正常。

重要提示 :如果您安装了不在实时系统上且/etc的文件不属于root则无效。 如果是这种情况,您需要找到您安装的内容并重新安装它,否则您可能需要重新安装系统。

启动到恢复并发出以下命令:

 mount -o remount,rw -n / chown -R root: /etc