문제
www-data
에 있는 그룹이 소유한 파일에서 작동하는 스크립트로 이메일을 파이프하는 postfix를 원합니다 /var/www/
. 그러나 권한이 부족하다는 오류 메시지가 나타납니다. 스크립트를 실행함으로써 whoami
올바른 사용자 scriptuser
(내 /etc/postfix/transport
파일에 설정된 대로)가 스크립트를 실행했는지 확인할 수 있습니다. 또한 를 사용하여 스크립트를 실행하면 오류가 발생하지 않아 사용자에게 충분한 액세스 권한이 있음을 확인할 수 있습니다 sudo -u scriptuser /path/to/script
.
그러므로 나는 매우 혼란스럽고 약간 길을 잃었습니다. 사용자가 파일에 대한 액세스 권한을 가지고 있고 Postfix에서 이 특정 사용자로 스크립트를 실행했지만 여전히 메시지를 받는 것이 어떻게 가능합니까 permission denied
?
나는 또한 에서 제안한대로 default_privs = www-data
에 추가하려고 시도했습니다./etc/postfix/main.cf
여기성공하지 못했습니다. via를 통한 액세스를 활성화하면 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"으로 변경했고 작동하게 만들 수 있었습니다.