我需要编辑一个.config
文件(我知道事实上它不会产生这些问题,只是为了清除它)并且它不允许我保存它,所以我使用/etc
该命令获取了所有内容的所有权chown -hR username /etc
,这样我就能够编辑该.config
文件,但是现在每当我尝试安装任何软件包或使用任何 sudo 命令时,它都不起作用(我已经检查了 sudoers.d 中的 sudo 文件中的错误,并且没有任何问题)。
那么我该如何将它归还给前任主人呢?
答案1
由于 中的某些文件/etc
可能不属于root
,如果您想避免重新安装,可以执行以下操作:
启动实时系统并挂载包含
/etc
目录的分区。例如,如果您的/
分区是/dev/sda1
,您可以从实时系统执行以下操作: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
。如果是这种情况,您要么需要找到您安装的东西并重新安装,要么可能需要重新安装系统。
答案2
启动恢复系统并发出以下命令:
mount -o remount,rw -n /
chown -R root: /etc