Проблема
Я хотел бы, чтобы 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
делает свое дело, но я бы посчитал это потенциально опасным, так как любой, у кого есть доступ к оболочке сервера, может прочитать эти файлы.
Файлы конфигурации
# 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» и мне удалось заставить это работать.