![Postfix 管道始终以 nobody 身份运行](https://linux22.com/image/718961/Postfix%20%E7%AE%A1%E9%81%93%E5%A7%8B%E7%BB%88%E4%BB%A5%20nobody%20%E8%BA%AB%E4%BB%BD%E8%BF%90%E8%A1%8C.png)
问题
我希望 Postfix 将电子邮件传输到对www-data
下组所拥有的文件进行操作的脚本/var/www/
。但是,我收到错误消息,指出权限不足。通过让脚本运行whoami
,我可以确认它是由正确的用户运行的scriptuser
(如我的文件中所设置/etc/postfix/transport
)。我还可以确认用户具有足够的访问权限,因为使用 执行脚本时不会发生任何错误sudo -u scriptuser /path/to/script
。
因此,我感到很困惑,有点不知所措。为什么用户有权访问这些文件,并且脚本由 Postfix 以该特定用户的身份运行,但我仍然收到该permission denied
消息?
我也尝试过按照建议添加default_privs = www-data
到/etc/postfix/main.cf
这里但没有成功。启用访问方式chmod o+rx
可以完成这个任务,但我认为这可能很危险,因为任何有服务器 shell 访问权限的人都可以读取这些文件。
配置文件
# in file /etc/postfix/main.cf
transport_maps = hash:/etc/postfix/transport
virtual_maps = hash:/etc/postfix/virtual/addresses
# in file /etc/postfix/master.cf
mailreply unix - n n - - pipe
flags=FR user=scriptuser argv=/usr/lib/postfix/sbin/pipemailreply
# in file /etc/postfix/transport
mailreplyuser@localhost mailreply
# in file /etc/postfix/virtual/addresses
mydomain.com DOMAIN
@mydomain.com mailreplyuser@localhost
文件权限/var/www/hmtl/
(通过ls -la
):
drwxrws--- 4 www-data www-data 4096 Mar 13 00:41 .
drwxr-xr-x 3 root root 4096 Mar 13 01:02 ..
-rw-r--r-- 1 root www-data 8 Mar 13 00:15 test.txt
错误消息
Mar 13 10:13:21 myservername postfix/pipe[3545]: 774F3FEB3B: to=<mailreplyuser@localhost>, orig_to=<[email protected]>, relay=mailreply, delay=0.13, delays=0.07/0/0/0.06, dsn=5.3.0, status=bounced (Command died with status 1: "/usr/lib/postfix/sbin/pipemailreply". Command output: cat: /var/www/html/test.txt: Permission denied )
答案1
我将“user=scriptuser”更改为“user=scriptuser:scriptgroup”,并且能够使其正常工作。