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, httpd
sodass 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 root
als Eigentümer zu erstellen und devs
den 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:
- logrotate:https://linux.die.net/man/8/logrotate
- mod_log_config:https://httpd.apache.org/docs/current/mod/mod_log_config.html