Phi*_*ort 7 unix permissions email-server postfix www-data
问题
我希望 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
Run Code Online (Sandbox Code Playgroud)
/var/www/hmtl/(via 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
Run Code Online (Sandbox Code Playgroud)
错误信息
Mar 13 10:13:21 myservername postfix/pipe[3545]: 774F3FEB3B: to=<mailreplyuser@localhost>, orig_to=<test@mydomain.com>, 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 )
Run Code Online (Sandbox Code Playgroud)
小智 1
我将“user=scriptuser”更改为“user=scriptuser:scriptgroup”,并且能够使其工作。
http://www.postfix.org/pipe.8.html