it-swarm.com.de

nginx auf Ubuntu: Erlaubnis verweigert

Ich bin neu in der Systemadministration. Nach der Installation von nginx via puppet auf Ubuntu erhalte ich folgende Ausgabe:

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

Wie entferne ich all diese Nachrichten?

Ich möchte die Befehlszeile nicht direkt verwenden (chown/chmod) und sie jedes Mal wiederholen, wenn ich einen neuen Server erstelle. Deshalb denke ich darüber nach, was dem Marionettenmanifest hinzugefügt werden muss.

Was ist die beste sysadmin-Methode in diesem Fall: Besitzer/Berechtigungen für/var/log/nginx ändern oder Protokolle an einem anderen Ort speichern? Wenn chown/chmod der richtige Weg ist, welche speziellen Berechtigungen würden das höchste Sicherheitsniveau gewährleisten?

Ich habe es versucht, aber es hat nicht geholfen:

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

Bearbeitet:

[email protected]:~$ 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

Stellen Sie sicher, dass Sie den Test als Superuser ausführen.

Sudo nginx -t

Oder der Test verfügt nicht über alle erforderlichen Berechtigungen, um den Test ordnungsgemäß durchzuführen.

148
Carlsson

Wenn ich davon ausgehe, dass Ihr zweiter Code die Marionetten-Konfiguration ist, dann habe ich eine logische Erklärung. Wenn die Fehler- und Protokolldateien zuvor erstellt wurden, können Sie dies versuchen

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

Ich war beim Neustart von Nginx mit einem ähnlichen Problem konfrontiert und fand es als Ursache für SeLinux . Probieren Sie es aus, nachdem Sie SeLinux deaktiviert oder den Modus Permissive vorübergehend mit dem folgenden Befehl eingestellt haben:

setenforce 0

Ich hoffe, es hilft :)

21
Chirag Jain

nur weil Sie nicht berechtigt sind, auf die Datei zuzugreifen, verwenden Sie

chmod -R 755 /var/log/nginx;

oder du kannst dann zu Sudo wechseln 

7
Wang Kevin

Die Berechtigung zum Anzeigen von Protokolldateien wird Benutzern gewährt, die sich in der Gruppe adm befinden.

So fügen Sie einen Benutzer zu dieser Gruppe im Befehlszeilenproblem hinzu:

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

wenn du nginx nicht als root starten willst.

erst Logdatei erstellen:

Sudo touch /var/log/nginx/error.log

und dann die Berechtigungen korrigieren:

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

Für mich habe ich einfach den Selinux von erzwungen zu permissiv geändert und dann konnte ich nginx ohne Fehler starten.

0
vipin kumar

Ich patche nur nginx binär und ersetze den Pfad /var/log/nginx/error.log und andere mit dem lokalen Pfad.

$ Perl -pi \
    -e '[email protected]/var/log/nginx/@_var_log_nginx/@g;' \
    -e '[email protected]/var/lib/nginx/@_var_lib_nginx/@g;' \
    -e '[email protected]/var/run/[email protected]_var_run/[email protected];' \
    -e '[email protected]/run/[email protected]_run/[email protected];' \
    < /usr/sbin/nginx > nginx
$ chmod +x nginx
$ mkdir _var_log_nginx _var_lib_nginx _var_run _run
$ ./nginx -p . -c nginx.conf

Es funktioniert zum Testen.

0
starius