使用chown命令将自己设置为/ etc的所有者,现在可以获得各种错误
我需要编辑一个.config
文件(我知道这个事实不是创建这些问题,只是为了清除它)并且它不会让我保存它,所以我取得了/etc
所有权和所有内容的命令chown -hR username /etc
,让我编辑.config
文件,但现在每当我尝试安装任何软件包或使用任何sudo命令时,它都不起作用(我在sudoers.d中检查了sudo文件中的错误)并且没有任何错误)。
那么我该如何将它归还给以前的所有者呢?
由于/etc
某些文件可能不归root
,因此如果要避免重新安装,可以执行以下操作:
-
引导到实时系统并挂载包含
/etc
目录的分区。 例如,如果/
partition是/dev/sda1
,则可以从live系统执行此操作:sudo mount /dev/sda1 /mnt
-
将所有文件的所有权设置为
root
:sudo chown -R root /mnt/etc
-
此时所有文件都属于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
的文件,但这无关紧要。 你可以写一个更复杂的方法,但它不值得,因为这需要几秒钟。 -
重启你的机器:一切都应该恢复正常。
重要提示 :如果您安装了不在实时系统上且/etc
的文件不属于root
则无效。 如果是这种情况,您需要找到您安装的内容并重新安装它,否则您可能需要重新安装系统。
启动到恢复并发出以下命令:
mount -o remount,rw -n / chown -R root: /etc