fix(acl): nur Log-Verzeichnisse, Timeout pro Wurzel
setfacl -R lief ueber die GANZE Panel-Wurzel (/home/users) — dort liegen auch Mails, Webinhalte und Backups. Das Recht auf die Logs waere damit teuer und wirkungslos zugleich. Jetzt werden die logs/-Verzeichnisse eingesammelt (find -maxdepth 3), und jeder setfacl-Lauf hat ein Timeout von 120 s, damit ein langsamer Lauf nicht wie ein Haenger aussieht.
This commit is contained in:
1 parent
7ec5d44517
commit
c7ab78e9dd
1 file changed
+22
-7
+22
-7
@@ -647,14 +647,29 @@ grant_apache_log_access() {
|
||||
[ -n "$_roots" ] || return 0
|
||||
|
||||
_n=0
|
||||
# Timeout pro Wurzel: setfacl laeuft rekursiv. Auf einem Panel-Host kann eine
|
||||
# Wurzel sehr gross sein; ohne Grenze sieht ein langsamer Lauf wie ein Haenger
|
||||
# aus. 120 s pro Wurzel sind grosszuegig und begrenzen die Gesamtdauer.
|
||||
for _r in $_roots; do
|
||||
# Durchgangsrecht (x) auf die Elternverzeichnisse, Leserecht (r) auf die
|
||||
# Dateien: rX vergibt x nur fuer Verzeichnisse.
|
||||
setfacl -R -m "u:$_u:rX" "$_r" 2>/dev/null && _n=$((_n+1))
|
||||
# Neu angelegte Dateien/Ordner erben das Recht (default-ACL nur fuer dirs).
|
||||
if [ -d "$_r" ]; then
|
||||
setfacl -R -d -m "u:$_u:rX" "$_r" 2>/dev/null || true
|
||||
fi
|
||||
# Nur die LOG-Verzeichnisse, nicht den ganzen User-Baum: /home/users
|
||||
# enthaelt auch Mails, Webinhalte und Backups — ein rekursives Recht darauf
|
||||
# waere wirkungslos fuer die Logs, aber teuer und semantisch falsch.
|
||||
_targets=""
|
||||
case "$_r" in
|
||||
/home/*|/var/www*)
|
||||
# Untergeordnete logs/-Verzeichnisse einsammeln (eine Ebene tief genug)
|
||||
_targets="$(find "$_r" -maxdepth 3 -type d -name 'logs' 2>/dev/null | head -500 | tr '\n' ' ')"
|
||||
[ -n "$_targets" ] || _targets="$_r" ;;
|
||||
*) _targets="$_r" ;;
|
||||
esac
|
||||
for _t in $_targets; do
|
||||
[ -d "$_t" ] || continue
|
||||
# Durchgangsrecht (x) auf die Elternverzeichnisse, Leserecht (r) auf die
|
||||
# Dateien: rX vergibt x nur fuer Verzeichnisse.
|
||||
timeout 120 setfacl -R -m "u:$_u:rX" "$_t" 2>/dev/null && _n=$((_n+1))
|
||||
# Neu angelegte Dateien/Ordner erben das Recht (default-ACL nur fuer dirs).
|
||||
timeout 120 setfacl -R -d -m "u:$_u:rX" "$_t" 2>/dev/null || true
|
||||
done
|
||||
done
|
||||
[ "$_n" -gt 0 ] && log "Log-Leserechte gesetzt (ACL fuer '$_u') auf $_n Wurzel(n)."
|
||||
|
||||
|
||||
Reference in new issue
Block a user