Wie kann ich Nginx-Protokolle ohne Sudo für einen anderen Benutzer freigeben?

9

Ich habe 2 Benutzer auf meinem Server. Einer mit Sudo-Zugang ein anderer ohne. Wie kann ich Zugriff auf Nginx-Protokolle geben?

/var/log/nginx/error.log

An einen anderen Benutzer ohne sudoNutzungserlaubnis cat /var/log/nginx/error.log? Kann ich so etwas wie einen Symlink erstellen, um mich in seinem Verzeichnis / home / username anzumelden?

Meine Frage ist also: Wie kann ein Benutzer ohne sudoBerechtigung Nginx-Protokolle überprüfen?

Alexander Kim
quelle
sudoZugang zu was? Es ist nicht klar aus Ihrer Frage. Ich weiß, dass einige Leute "Sudo-Zugriff" als "Root-Zugriff" bezeichnen, aber das ist technisch nicht korrekt. Bitte arbeiten Sie aus.
Dawud
1
Ja, Sie könnten sudoihm die Berechtigungen geben, je nachdem, wie Sie sie konfigurieren möchten.
Eltern
Sie könnten ACLs verwenden. zB setfacl -m 'user:someuser:r' /var/log/nginx/error.log. Ich bin mir nicht sicher, wie das mit logrotate funktionieren würde. sudoZugang zu Katze / Schwanz / usw. Das Protokoll ist wahrscheinlich sowieso eine bessere Option. "
Greg Bowser
@ GregBowser IMHO ist die Verwendung von ACLs ohne Verständnis von ACLs ein Rezept für ein Problem.
Paul

Antworten:

15

Zum Beispiel so:

chmod 755 /var/log/nginx && chmod 644 /var/log/nginx/*.log && chmod 644 /var/log/nginx/*.gz

Auf diese Weise kann jeder den Inhalt des Verzeichnisses / var / log / nginx cwd und lesen und die * .log-Dateien lesen.

Sie sollten auch die rotierende Protokollkonfiguration überprüfen, damit die Berechtigungen nicht erneut geändert werden. In den letzten Versionen von Nginx bis einschließlich 1.6.2 hat die Datei /etc/logrotate.d/nginxdie Zeile create 0640 www-data admzum Festlegen von Berechtigungen beim Drehen von Protokollen verwendet. Dies sollte in so etwas wie geändert werden create 0644 www-data adm. Es ist zu beachten, dass mit dieser Lösung alle Benutzer auf dem Server alle Nginx-Protokolle lesen können.

Update: logrotate-Konfigurationen sollten ebenfalls aktualisiert werdensu www-data adm, damit das Dienstprogramm logadm funktioniert, ohne sich über falsche Verzeichnisberechtigungen zu beschweren.

Drookie
quelle
3
Die Standard-Nginx-Konfiguration in /etc/logrotate.d/nginxist create 0640 www-data adm. Das ist in 1.6.2, aber ich glaube nicht, dass sich diese Zeile seit einiger Zeit geändert hat.
Paul
1
Diese Antwort ist schriftlich, daher wäre sie universell und generisch und nicht Ubuntu-Nginx-1.6.2-20141110-spezifisch.
Drookie
1
nginx config in logrotate d hat es zurückgesetzt. Es wurde behoben, indem es geändert wurde.
SDKKS
Gibt es keine andere Möglichkeit, dies zu lösen, wenn ein anderer Benutzer versucht, nginx zu starten, und einen anderen Protokollpfad verwendet? Ich habe versucht, es meiner neuen Datei nginx.conf hinzuzufügen, aber wenn ich nginx -c newnginx.conf auf diesem neuen Benutzer ausführe, versucht es immer noch, auf / var / log / nginx zuzugreifen ...
Poul K. Sørensen