Das Problem
Ich möchte, dass Postfix E-Mails an ein Skript weiterleitet, das Dateien bearbeitet, die der www-data
Gruppe gehören, die sich unter befindet /var/www/
. Ich erhalte jedoch Fehlermeldungen, die auf unzureichende Berechtigungen hinweisen. Indem ich das Skript ausführen lasse whoami
, kann ich bestätigen, dass es vom richtigen Benutzer ausgeführt wird scriptuser
(wie in meiner /etc/postfix/transport
Datei festgelegt). Ich kann auch bestätigen, dass der Benutzer über ausreichende Zugriffsrechte verfügt, da beim Ausführen des Skripts mit keine Fehler auftreten sudo -u scriptuser /path/to/script
.
Daher bin ich ziemlich verwirrt und ein wenig verloren. Wie ist es möglich, dass der Benutzer Zugriffsrechte auf die Dateien hat, das Skript von Postfix als dieser bestimmte Benutzer ausgeführt wird und ich trotzdem die permission denied
Meldung erhalte?
Ich habe auch versucht, hinzuzufügen default_privs = www-data
, /etc/postfix/main.cf
wie in vorgeschlagenHierohne Erfolg. Das Aktivieren des Zugriffs über chmod o+rx
funktioniert, aber ich würde das als potenziell gefährlich einstufen, da jeder mit Shell-Zugriff auf den Server diese Dateien lesen könnte.
Die Konfigurationsdateien
# 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
Die Dateirechte liegen bei /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
Die Fehlermeldung
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 )
Antwort1
Ich habe „user=scriptuser“ in „user=scriptuser:scriptgroup“ geändert und es hat funktioniert.