这是我自己目录的截图/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=/root
。env
您也可以使用任何其他命令。
答案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