Это - мой собственный снимок экрана /home/user
каталог, который является ~
. Существует два каталога с root
владение, .config
и .local
. Все, что остальное регистрирует и каталоги, принадлежит моему пользователю и группе моего пользователя.
Я не возражаю, но это заставляет мерзавца всегда бросить предупреждение 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)
да, эти каталоги должны принадлежать Вам, не корню. Вы можете безопасно chown
их назад Вам.
что касается второго вопроса:
это может произойти при выполнении программ с помощью sudo
.
Вы видите, почему, когда Вы работаете sudo env
, который говорит, Вы HOME
все еще /home/username
вместо /root
.
Для предотвращения такой путаницы можно использовать sudo
как это:
sudo -u root -H env
теперь Вы видите HOME=/root
. Вместо env
можно использовать любую другую команду также.
Эмпирическое правило:
Использование gksudo или sudo-H с программами с графическим интерфейсом пользователя, GUI.
Это обычно - программы GUI, которые создают и используют конфигурационные файлы в корневом каталоге. корень мог бы перезаписать конфигурационные файлы и захватить владение, которое мешает или невозможный использовать программу без sudo.
можно использовать 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