新しいUbuntu Lucidサーバーにawstatsをインストールしましたが、cronがユーザーwww-data
として実行しようとすると、cannot access /var/log/Apache2/access.log: Permission denied
と文句を言います。
/usr/share/doc/awstats/README.Debian
には次の段落があります。
デフォルトでは、Apacheはuid = rootおよびgid = admのログファイル(バージョン1.3.22-1以降)を保存するため、次のいずれかを行う必要があります...
1)/etc/logrotate.d/Apacheのログファイルの権限を変更して、www-dataが少なくとも読み取りアクセスできるようにします。
2)1)と同じですが、特定のユーザーに変更し、ApacheのsuEXEC機能を使用して同じユーザーとして実行します(および/ var/lib/awstatsの権限も変更するか、別のディレクトリを使用します)。これはより複雑ですが、ログは一般的にサーバーにアクセスできません(おそらくApacheのデフォルトのポイントでした)。
3)awstats.plをグループadmに変更します(ただし、マシンの管理スタッフへのCGIスクリプトアクセスを許可するリスクを負うことに注意してください!)。
私は1で行きますが、付与する推奨される許可は何ですか?
ポイント1に進み、www-dataには少なくとも読み取り許可が必要であると言われている場合、推奨されるのは読み取り専用です。
以下の行を変更できます(logrotateファイル内):
create 640 root adm
に
create 644 root adm
すべてのユーザー(www-dataを含む)に読み取り権限を付与します。
この設定に一致するように、/ var/log/Apache2 /にある既存のファイルのパーミッションを変更する必要があります。
chmod a+r /var/log/Apache2/* #or whatever your path is
これにより、すべてのファイルをすべてのユーザーが読み取ることができ、logrotateが将来作成するすべてのファイルにadecuate権限が付与されます
ほとんどのセットアップで:
所有権と許可の設定は、ファイル/ etc/logrotate.d/Apache2にあります。その内容は次のとおりです。
/var/log/Apache2/*.log {
daily
missingok
rotate 60
compress
delaycompress
notifempty
dateext
create 640 root adm
sharedscripts
postrotate
/etc/init.d/Apache2 reload > /dev/null
endscript }
最も簡単な解決策は次のとおりです。
1)「create 640 root adm」を「create 644 root adm in / etc/logrotate.d/Apache2」を好みのテキストを使用して変更しますエディター、またはすべてのスクリプトを作成する必要がある場合:
Sudo sed -i 's/create 640 root adm/create 644 root adm/g' /etc/logrotate.d/Apache2
2)/ var/log/Apache2/access.logおよび/ var/log/Apache2/error.logの許可を644に変更します。
Sudo chmod 644 /var/log/Apache2/access.log /var/log/Apache2/error.log
3)Apacheを再起動します。
Sudo apachectl -k graceful
ソリューションとしてadmユーザーグループにwww-dataを追加する人を見てきました。 www-dataには、私が慣れているよりもはるかに多くの権限があります。
他のより安全なオプションには、awstats用の新しいユーザーとグループを作成し、この新しいユーザー/グループとしてawstatsを実行/実行することが含まれます。