web-dev-qa-db-ja.com

Ubuntuのnginx:許可が拒否されました

システム管理は初めてです。 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
45
krn

スーパーユーザーとしてテストを実行していることを確認してください。

Sudo nginx -t

または、テストは、テストを適切に完了するために必要なすべての権限を持ちません。

156
Carlsson

あなたの2番目のコードがパペット設定であると仮定すると、論理的な説明があります。エラーとログファイルが以前に作成されていた場合、これを試すことができます

Sudo chown -R www-data:www-data /var/log/nginx;
Sudo chmod -R 755 /var/log/nginx;
30

Nginxの再起動中に同様の問題に直面し、それがSeLinuxの原因であることがわかりました。以下のコマンドを使用して、SeLinuxを無効にするか、一時的にPermissiveモードに設定した後、必ず試してください:

setenforce 0

私はそれが役立つことを願っています:)

24
Chirag Jain

あなたがファイルにアクセスする権利を持っていないという理由だけで、

chmod -R 755 /var/log/nginx;

または、Sudoに変更してから

8
Wang Kevin

ログファイルを表示する権限は、グループadmに属するユーザーに付与されます。

コマンドラインの問題でこのグループにユーザーを追加するには:

Sudo usermod -aG adm <USER>
5
Stéphane

ルートとして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 {} \;

0
Amin.Qarabaqi

私にとっては、selinuxを強制から許容に変更しただけで、nginxをエラーなしで起動することができました。

0
vipin kumar

パス/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

テスト用に機能します。

0
starius