Postfixパイプは常にnobodyとして実行されます

Postfixパイプは常にnobodyとして実行されます

問題

www-datapostfix を使用して、 の下にあるグループが所有するファイルを操作するスクリプトに電子メールをパイプしたいと思います/var/www/。しかし、権限が不十分であることを示すエラー メッセージが表示されます。スクリプトを実行させることで、 (ファイルに設定されているとおりに)whoami正しいユーザーによってスクリプトが実行されていることを確認できます。また、 を使用してスクリプトを実行してもエラーが発生しないため、ユーザーに十分なアクセス権があることも確認できます。scriptuser/etc/postfix/transportsudo -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」に変更したら動作するようになりました。

http://www.postfix.org/pipe.8.html

関連情報