Problem nur mit Leseberechtigungen für das HTTP-Verzeichnis

Problem nur mit Leseberechtigungen für das HTTP-Verzeichnis

In meinem Szenario muss das Verzeichnis „httpd“ in „/var/log/“ für die Benutzer in der Gruppe „devs“ (Amazon Linux 2) lesbar sein. Kann mir jemand erklären, wie das geht?

Wir haben einige Entwickler, die das System warten, und ich möchte, dass sie die Protokolldateien in /var/log/httpd problemlos lesen können, ohne Root-Zugriff zu benötigen.

kann das helfen??

chmod -R go+r /var/log/httpd

oderchmod -R go+rX /var/log/httpd

oder muss ich gehen mit:

chmod 644 /var/log/httpd

chgrp -R apache /var/log/httpd
chmod 02750 /var/log/httpd
chmod 0640 /var/log/httpd/*
create 0640 root apache

ls

[root@ip-10-0-10-165 httpd]# ls -la
total 48
drwx------ 19 root   devs   4096 Apr  3 03:42 .
drwxr-xr-x 11 root   devs   4096 Apr  8 07:45 ..
-rw-r--r--  1 root   root      0 Feb 15 14:55 access_log
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u1-dev.qwerty.com
-rw-r--r--  1 root   root   1648 Apr  3 03:42 error_log
-rw-r--r--  1 root   root    883 Mar 13 03:41 error_log-20220313
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u4-dev.qwerty.com
drwxr-xr-x  2 root   root     41 Mar  1 20:44 langs.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u8-dev3.qwerty.com
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_access_log
-rw-r--r--  1 root   root    314 Apr  3 03:42 ssl_error_log
-rw-r--r--  1 root   root    157 Mar  6 03:50 ssl_error_log-20220313
-rw-r--r--  1 root   root      0 Feb 15 14:55 ssl_request_log
drwxr-xr-x  2 apache apache  253 Apr  3 03:42 www.qwerty.com
drwxr-xr-x  2 root   devs     41 Mar  1 20:44 u13-dev.qwerty.com
[root@ip-10-0-20-173 httpd]#

Wie ändere ich diesen Berechtigungssatz? Was ist hier die beste Vorgehensweise?

Antwort1

Sie können ACL für dieses Verzeichnis verwenden und Berechtigungen für die Entwicklergruppe erteilen. Beispiel:

setfacl -m g:devs:rx httpd/

Sie können eine Dateizugriffsliste für ein Verzeichnis festlegen. In Ihrem Beispiel haben Sie ein httpd-Verzeichnis mit Berechtigungen, die nur für den Benutzer/die Gruppe „root“ festgelegt sind.

# ls -la| grep httpd
drwx------   2 root     root        4096 Apr  8 10:11 httpd

Sie können überprüfen, dass dieses Verzeichnis keine ACL-Liste hat:

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
other::---

Wir legen die Berechtigungen für die Entwicklergruppe mit Lese- und Ausführungsberechtigungen fest:

setfacl -m g:devs:rx httpd/

Nach dem Festlegen der Berechtigungen sieht es folgendermaßen aus:

getfacl httpd/
# file: httpd/
# owner: root
# group: root
user::rwx
group::---
group:devs:r-x
mask::r-x
other::---

Beachten Sie das zusätzliche Zeichen (+) zu allen vorhandenen ACLs im Befehl „ls“.

# ls -la| grep httpd
drwxr-x---+  2 root     root        4096 Apr  8 10:11 httpd

Es empfiehlt sich möglicherweise, den Befehl setfacl mit dem Schalter -b zu wiederholen, um die Standardberechtigungen festzulegen. Normalerweise mache ich das.

-d, --default
           All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning  is  issued
           if that happens).

Grüße

Antwort2

Laut der Markierung der Frage verwenden Sie eine Umgebung im Redhat-Stil. Vorausgesetzt, Sie verwenden die Standardinstallation von Apache httpd, arbeiten Sie im Hintergrund wahrscheinlich mit logrotate. Standardmäßig wird logrotate täglich ausgeführt /etc/cron.daily. Es räumt Ihre aktuellen Protokolldateien aus dem Weg, erstellt neue und startet neu, httpdsodass es beginnt, die neu erstellten, leeren Protokolldateien zu verwenden.

Überprüfen Sie /etc/logrotate.d/httpd. Die Standardversion zeigt beispielsweise:

/var/log/httpd/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}

Wenn Sie eine Zeile wie diese in die geschweiften Klammern einfügen, rotiert logrotate Ihre Protokolldateien ordnungsgemäß und erstellt sie mit den richtigen Besitzern und Gruppenmitgliedschaften neu:

    create 0640 root devs

Dadurch wird logrotate angewiesen, die neuen Protokolldateien mit der Gruppe rootals Eigentümer zu erstellen und devsden Lese-/Schreibberechtigungen des Eigentümers sowie der Leseberechtigung der Gruppe zu geben.

Sie können dann Ihr httpd-Protokollverzeichnis mit Berechtigungen und Eigentümern wie folgt einrichten:

chown root:devs /var/log/httpd
chmod 0750 /var/log/httpd

Für den ersten Tag möchten Sie möglicherweise auch die Berechtigungen für die Protokolldateien manuell festlegen. Logrotate übernimmt dies dann an den folgenden Tagen:

chown root:devs /var/log/httpd/*log
chmod 0640 /var/log/httpd/*log

Sie können es mit ACLs ausgefallener angehen, wie oben von @KuchnMar gezeigt, aber diese Lösung hält die Dinge einfach und bietet Kompatibilität über verschiedene *nix- und Dateisystemtypen hinweg.

Dies kann auf einem Host im Debian-Stil ähnlich sein, aber stattdessen wird möglicherweise Ihre Logrotate-Konfigurationsdatei aufgerufen apache2.

Weitere Informationen finden Sie hier:

verwandte Informationen