ls сообщает другой инод для системного каталога (/home) в интерактивной оболочке и в скрипте
Если я работаю в интерактивной оболочке любого пользователя, запрос списка узлов для /home
возвращает:
[postgres@localhost ~]$ ls -ild /home
2 drwxr-xr-x 14 root root 4096 May 20 16:20 /home
Тем не менее, скрипт вызывается в системном файле systemd ExecStartPre=
и указано для запуска от имени определенного пользователя (т.е. User=postgres
), который работает так же ls
Команда, показанная выше, отображает совершенно другой inode и завершается ошибкой, мешая мне нормально запустить системный модуль:
10364 d--------- 2 root root 40 May 20 15:06 /home
Я действительно понятия не имею, почему это так. Это на самом деле очень странно. Может кто-нибудь объяснить, что происходит?
1 ответ
Стандартная форма файла модуля systemd, к которому я пытался получить доступ, включает ProtectHome=true
пункт, который согласно документации systemd:
ProtectHome=
Takes a boolean argument or "read-only". If true, the directories /home, /root and /run/user are made inaccessible and
empty for processes invoked by this unit.
Изменение предложения на false
сделал /home
доступно для сценария.