systemd override.conf 中的 UMask 设置被忽略

systemd override.conf 中的 UMask 设置被忽略

我在 fedora33 上使用 amavisd,并尝试更改它创建的套接字上的文件权限,以便 nagios 和 nrpe 可以读取 amavis 组中的文件。

当前的文件权限如下:

# ls -l /run/amavisd/amavisd.sock
srwxr-x--- 1 amavis amavis 0 Nov 23 20:29 /run/amavisd/amavisd.sock

我正在执行“systemctl edit amavisd.service”来创建一个包含以下内容的 override.conf 文件:

[Service]
LimitNOFILE=5000
UMask=0007
ExecStartPost=/usr/bin/su - amavis -c \'/usr/bin/chmod 770 /run/amavisd/amavisd.sock\'

amavis 用户的 shell 是 /bin/bash。保存并运行“systemctl daemon-reload”然后重新启动后,它会失败,没有任何原因提示。我也尝试过让它执行一个脚本,但同样失败了。

[Service]
LimitNOFILE=5000
UMask=0007
ExecStartPost=/bin/sh -c /etc/amavisd/chmod-sock.sh

为什么 UMask 参数被完全忽略? amavisd.service 启动时会处理 /etc/bashrc 吗?

以下是脚本的内容。

# cat /etc/amavisd/chmod-sock.sh
#!/bin/bash
    
sleep 1
/usr/bin/chmod 770 /run/amavisd/amavisd.sock

“systemctl status amavisd.service”和“journalctl -xe”没有提供有用的信息。

更新:我在 /var/log/messages 中发现了一些我之前一定错过的信息。看来 amavis 正在不断重启,因为“su”失败了:

su: (to amavis) root on none
su[73476]: su: cannot open session: Permission denied
systemd[1]: amavisd.service: Control process exited, code=exited, status=1/FAILURE

此链接讨论对 /etc/pam.d/su 进行修改以禁用某种身份验证保护。

https://unix.stackexchange.com/questions/171097/unable-to-su-into-an-account-could-not-open-session

此 systemd 链接表示需要转义单引号,但此处失败。删除反斜杠后,su 可以正常运行,amavisd 最终可以启动。 https://www.freedesktop.org/software/systemd/man/systemd.service.html

su[74032]: 770: -c: line 0: unexpected EOF while looking for matching `''
su[74032]: 770: -c: line 1: syntax error: unexpected end of file

所以我现在的问题是:

  • 为什么我的 override.conf 中忽略了“UMask 0007”?
  • 在创建 amavisd 套接字后,更改其权限的正确方法是什么,以便同一组中的其他人可以从中读取?
  • 修改 PAM 安全性对 su 有何影响?
  • 如何从 systemd override.conf 文件运行 shell 脚本?

相关内容