システム管理は初めてです。 Ubuntuにnginx via puppet をインストールすると、次の出力が表示されます。
[alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
[warn] 1898#0: the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /etc/nginx/nginx.conf:1
[emerg] 1898#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)
これらのメッセージをすべて削除するにはどうすればよいですか?
コマンドライン(chown/chmod)を直接使用したくないので、新しいサーバーを作成するたびに繰り返します。したがって、私は人形のマニフェストに追加する必要があるものを考えています。
この場合のシステム管理者のベストプラクティスは何ですか:/ var/log/nginxの所有者/アクセス許可を変更するか、ログを別の場所に保存するかchown/chmodが方法である場合、どの特定のアクセス許可が最高レベルのセキュリティを保証しますか?
私はこれを試しましたが、助けにはなりませんでした:
file { '/var/log/nginx':
ensure => directory,
mode => '0755',
owner => 'www-data',
group => 'www-data',
recurse => true
}
編集済み:
vagrant@precise64:~$ ps aux | grep [n]ginx
root 1001 0.0 0.1 62908 1388 ? Ss 08:47 0:00 nginx: master process /usr/sbin/nginx
www-data 1002 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1003 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1004 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
www-data 1005 0.0 0.1 63260 1696 ? S 08:47 0:00 nginx: worker process
スーパーユーザーとしてテストを実行していることを確認してください。
Sudo nginx -t
または、テストは、テストを適切に完了するために必要なすべての権限を持ちません。
あなたの2番目のコードがパペット設定であると仮定すると、論理的な説明があります。エラーとログファイルが以前に作成されていた場合、これを試すことができます
Sudo chown -R www-data:www-data /var/log/nginx;
Sudo chmod -R 755 /var/log/nginx;
Nginxの再起動中に同様の問題に直面し、それがSeLinuxの原因であることがわかりました。以下のコマンドを使用して、SeLinuxを無効にするか、一時的にPermissiveモードに設定した後、必ず試してください:
setenforce 0
私はそれが役立つことを願っています:)
あなたがファイルにアクセスする権利を持っていないという理由だけで、
chmod -R 755 /var/log/nginx;
または、Sudoに変更してから
ログファイルを表示する権限は、グループadmに属するユーザーに付与されます。
コマンドラインの問題でこのグループにユーザーを追加するには:
Sudo usermod -aG adm <USER>
ルートとしてnginxを起動したくない場合。
最初の作成ログファイル:
Sudo touch /var/log/nginx/error.log
そして、パーミッションを修正します:
Sudo chown -R www-data:www-data /var/log/nginx
Sudo find /var/log/nginx -type f -exec chmod 666 {} \;
Sudo find /var/log/nginx -type d -exec chmod 755 {} \;
私にとっては、selinuxを強制から許容に変更しただけで、nginxをエラーなしで起動することができました。
パス/var/log/nginx/error.log
およびその他をローカルパスに置き換えて、nginxバイナリにパッチを適用します。
$ Perl -pi \
-e 's@/var/log/nginx/@_var_log_nginx/@g;' \
-e 's@/var/lib/nginx/@_var_lib_nginx/@g;' \
-e 's@/var/run/nginx.pid@_var_run/nginx.pid@g;' \
-e 's@/run/nginx.pid@_run/nginx.pid@g;' \
< /usr/sbin/nginx > nginx
$ chmod +x nginx
$ mkdir _var_log_nginx _var_lib_nginx _var_run _run
$ ./nginx -p . -c nginx.conf
テスト用に機能します。