这个问题一开始是问我的历史文件为什么不能正常工作。然后我注意到它-rw------- 1 root root
自 2012-09-11 以来就没有更新过。我更改了所有权,问题解决了。
但是现在我看到一些其他文件属于 root:
.gitconfig
.pearrc
.viminfo
我可以安全地将它们更改为由我的普通用户(而不是 root)拥有吗?我绞尽脑汁想弄清楚是否存在缺点或安全后果。
丢失七周的历史记录实际上非常痛苦,因为我非常依赖它(例如,提醒我上次存档的方式)。设置一个 cron 作业,如果它发现我的主目录中有除我之外的任何人拥有的文件,它会给我发送电子邮件,这合理吗?换言之:root 拥有我主目录中的文件有什么充分的理由吗?
更新:感谢到目前为止的回复。我知道 root 拥有的文件可能是通过 sudo 会话中的某些操作放在那里的。我的问题的核心是:我是否可以合理地将其视为需要修复的错误?或者,一旦我注意到 root 拥有的文件,是否有正当理由将其留在我的主目录中?谢谢!
答案1
Root 通常不需要拥有主目录中的文件。当然,这只是一般情况。正如其他答案和评论中提到的,如果文件是由在 sudo 下运行的程序创建或修改的,则它们可能归 root 所有。
要列出哪些文件由 root 拥有或属于 root 组,请尝试在终端中运行列出所有文件及其所有者信息并获取包含“root”的行:ls -al | grep root
。
在我的计算机上,在我的常规用户帐户下,我有几个文件甚至一个目录 (.compiz-1/) 显示为 root 所有,因此这种情况很常见。查看这些文件并查看其中的内容 - 您可能需要以 root 身份执行此操作 - 我可以合理地猜测它们是如何到达那里的。其中一些是我使用 执行的程序的日志文件sudo program
。请记住,使用 sudo 会以 root 身份运行程序,但会一直$HOME
指向您的主目录。对 GUI 程序使用gksu
或kdesu
会执行相同的操作,但还会确保图形环境使用您的设置(这也是您不应该对它们使用 sudo 的部分原因)。
.compiz-l/ 目录似乎是 .compiz/ 的备份,而 .compiz/ 属于我的用户。我猜想,在某个时候,我运行了升级或做了其他事情,以 root 身份触发了 Compiz 设置的备份,现在我可以删除这些文件了。如果有疑问,只需移动或重命名文件/目录,然后查看注销/登录或运行您认为使用它们的程序后会发生什么。
让我们看看您列出的文件并将它们与我的机器上的相同文件进行比较。
-rw-r--r-- 1 henrik henrik 211 apr 9 2011 .gitconfig
此文件很可能应归用户所有,其他人无权写入,因为它显然是每个用户的配置文件。如果 root 拥有此文件,而您没有写入权限,则必须以 root 身份运行 git 才能更新全局 git 配置,这不是很方便。我不介意其他人对此文件有读取权限,因为它不包含任何机密信息,只有我的姓名、电子邮件和一些偏好设置。
-rw-r--r-- 1 root root 143 dec 17 2011 .pearrc
此文件也是一个配置文件,但由于它属于 PHP PEAR 项目,因此我通常不会直接从我的用户帐户使用它。由于sudo
无论如何我都必须使用来安装 PHP 扩展,因此此文件最好归 root 所有,这样我就不会意外弄乱它。
-rw-rw-r-- 1 henrik henrik 30709 nov 7 00:29 .viminfo
这是 Vim 的历史文件,包含您在 Vim 中所做的几乎所有操作的日志,因此它可以轻松恢复状态。如果您不拥有它或至少无法写入它,我怀疑 Vim 是否能够更新它。
一般来说,是的,如果主目录中的文件通常由您以非 root 身份运行的程序使用,则将文件归 root 所有是错误的。如果文件不归您所有或您无法读取,则甚至很难对主目录中的配置文件进行完整备份。
答案2
您之前是否使用 sudo 复制过这些文件?这也许可以解释为什么这些文件归 root 所有。
通常,/home/ 下的文件/文件夹应该属于用户。