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 доступно для сценария.

Другие вопросы по тегам