如果我在任何用户的交互式shell中工作,/home
的inode列表查询将返回:
[postgres@localhost ~]$ ls -ild /home
2 drwxr-xr-x 14 root root 4096 May 20 16:20 /home
但是,脚本通过ExecStartPre=
子句在systemd单元文件中调用,并指定作为特定用户(即User=postgres
)运行,该用户运行相同的ls
命令上面,显示一个完全不同的inode并失败,阻止我正常运行systemd单元:
10364 d--------- 2 root root 40 May 20 15:06 /home
我真的不知道为什么会这样。这实际上很奇怪。有人可以解释一下发生了什么吗?
答案 0 :(得分:0)
我试图访问的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
可用于脚本。