我是否应该更改我自己主目录中的 .config 文件夹所有权?为什么它在 root 下?

我是否应该更改我自己主目录中的 .config 文件夹所有权?为什么它在 root 下?

这是我自己目录的截图/home/user,即~。有两个目录具有root所有权,.config.local。其余所有文件和目录均属于我的用户和我的用户组。

在此处输入图片描述

我不介意,但是它会让 git 总是抛出警告Permission denied

user@os /var/www/app $ git status
warning: unable to access '/home/user/.config/git/attributes': Permission denied
warning: unable to access '/home/user/.config/git/ignore': Permission denied

我有两个问题。

1)我是否应该为我的用户更改这些目录的所有权?

$ sudo chown user:user .local .config

2) 为什么我的用户主目录中有root目录? 它们不应该都属于我的用户吗? 它们是一些必须属于的特殊目录吗root

答案1

回答1)
是的,这些目录应该归您所有,而不是 root。您可以安全地chown将它们归还给您。

至于第二个问题:
如果您使用 运行程序,则可能会发生这种情况sudo

您可以看到为什么,当您运行 时sudo env,它会告诉您HOME仍然是/home/username而不是/root

为了避免这种混乱,你可以使用sudo如下方法:

sudo -u root -H env

现在您可以看到HOME=/rootenv您也可以使用任何其他命令。

答案2

经验法则:

使用执行命令或者sudo-H 复制代码使用具有图形用户界面 (GUI) 的程序

通常是 GUI 程序在主目录中创建和使用配置文件。可能会覆盖配置文件并获取所有权,这使得在没有 sudo 的情况下使用该程序变得困难或不可能。

您可以使用须藤没有任何选项可以使用简单的文本界面运行命令行程序。

例子:

sudo -H nautilus    # look at files with a GUI interface
sudo ls             # list files with a text interface
sudo ls -l          # long list (with permissons etc)

请注意你应该仅在必要时使用 sudo. 使用您的登录名运行大多数命令。这降低了损坏操作系统的风险。

'sudo -H' 和 'sudo' 之间的区别如下所示:

sudodus@xenial32 ~ $ sudo env|grep ^HOME
[sudo] password for sudodus: 
HOME=/home/sudodus

sudodus@xenial32 ~ $ sudo -H env|grep ^HOME
HOME=/root

相关内容