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
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.
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;
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 :)
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
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>
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 {} \;
Für mich habe ich einfach den Selinux von erzwungen zu permissiv geändert und dann konnte ich nginx ohne Fehler starten.
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.