これは働きます:
apache ALL=(ALL) NOPASSWD:ALL
しかし、そうではありません:
apache ALL=(ALL) NOPASSWD:/var/log/maillog
「sudo:ttyが存在せず、Askpassプログラムが指定されていません」と表示されます。
パスが正しいです。ここで何か抜けましたか?アイデア?
NOPASSWD:
機能しない後にスペースを追加します。.sh
次の内容でPHPからファイルを呼び出します。
#!/bin/sh
grep bounced /var/log/maillog
スクリプトとログファイルにパスを追加しましたが、機能しません。
ベストアンサー1
sudoers ライン
apache ALL=(ALL) NOPASSWD:/var/log/maillog
apache
ユーザーを許可実装する文書/var/log/maillog
。ただし、スクリプトが実行されるため、その行grep
は適用されません。
Sudoはコマンドで動作します。どのコマンドでも特定のファイルへのアクセスを許可するために使用することはできません。grep bounced /var/log/maillog
必要に応じてこのコマンドを許可できます。ただし、必要なものがユーザーがどのプログラムを使用してapache
も読めるようにすることである場合は、そのファイルのアクセス制御リストに追加する/var/log/maillog
必要があります。apache
setfacl -m user:apache:r /var/log/maillog
ログの回転によってファイルが再生成されるたびに、このコマンドが必要です。これは、新しいバージョンのlogrotateを使用すると自動的に行われます。。バージョンが古すぎると、このコマンドをpostrotate
logrotate設定にエントリとして追加します。。