web-dev-qa-db-fra.com

nginx sur Ubuntu: permission refusée

Je suis nouveau dans l'administration système. Après avoir installé nginx via puppet sur Ubuntu, je reçois le résultat suivant:

[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)

Comment puis-je me débarrasser de tous ces messages?

Je ne veux pas utiliser la ligne de commande directement (chown/chmod) et la répéter à chaque fois que je crée un nouveau serveur. Par conséquent, je pense à ce qui doit être ajouté au manifeste de marionnettes.

Quelle est la meilleure pratique sysadmin dans ce cas: modifier le propriétaire/les autorisations pour/var/log/nginx ou stocker les journaux à un emplacement différent? Si chown/chmod est la voie à suivre, quelles autorisations spécifiques garantiraient le plus haut niveau de sécurité?

J'ai essayé cela, mais ça n'a pas aidé:

  file { '/var/log/nginx':
    ensure  => directory,
    mode    => '0755',
    owner   => 'www-data',
    group   => 'www-data',
    recurse => true
  }

Édité:

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
41
krn

Assurez-vous que vous exécutez le test en tant que superutilisateur.

Sudo nginx -t

Ou le test ne disposera pas de toutes les autorisations nécessaires pour mener à bien le test correctement.

148
Carlsson

Si je suppose que votre deuxième code est la configuration de la marionnette, alors j'ai une explication logique, si l'erreur et les fichiers journaux ont été créés auparavant, vous pouvez essayer ceci

Sudo chown -R www-data:www-data /var/log/nginx;
Sudo chmod -R 755 /var/log/nginx;
28
Mohammad AbuShady

J'ai fait face à un problème similaire lors du redémarrage de Nginx et j'ai constaté que c'était une cause de SeLinux . Assurez-vous d'essayer après avoir désactivé SeLinux ou l'avoir réglé temporairement sur le mode Permissive à l'aide de la commande ci-dessous:

setenforce 0

J'espère que ça aide :)

21
Chirag Jain

juste parce que vous n’avez pas le droit d’accéder au fichier, utilisez

chmod -R 755 /var/log/nginx;

ou vous pouvez changer à Sudo alors 

7
Wang Kevin

L'autorisation d'affichage des fichiers journaux est accordée aux utilisateurs du groupe adm.

Pour ajouter un utilisateur à ce groupe sur le problème de ligne de commande:

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

Pour moi, je viens de changer le selinux d’application en permissif, puis j’ai pu démarrer nginx sans erreur.

0
vipin kumar

Je viens de corriger le binaire nginx en remplaçant le chemin /var/log/nginx/error.log et les autres par un chemin local.

$ 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

Cela fonctionne pour les tests.

0
starius