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 "$_roots" ] || return 0
|
||||||
|
|
||||||
_n=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
|
for _r in $_roots; do
|
||||||
# Durchgangsrecht (x) auf die Elternverzeichnisse, Leserecht (r) auf die
|
# Nur die LOG-Verzeichnisse, nicht den ganzen User-Baum: /home/users
|
||||||
# Dateien: rX vergibt x nur fuer Verzeichnisse.
|
# enthaelt auch Mails, Webinhalte und Backups — ein rekursives Recht darauf
|
||||||
setfacl -R -m "u:$_u:rX" "$_r" 2>/dev/null && _n=$((_n+1))
|
# waere wirkungslos fuer die Logs, aber teuer und semantisch falsch.
|
||||||
# Neu angelegte Dateien/Ordner erben das Recht (default-ACL nur fuer dirs).
|
_targets=""
|
||||||
if [ -d "$_r" ]; then
|
case "$_r" in
|
||||||
setfacl -R -d -m "u:$_u:rX" "$_r" 2>/dev/null || true
|
/home/*|/var/www*)
|
||||||
fi
|
# 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
|
done
|
||||||
[ "$_n" -gt 0 ] && log "Log-Leserechte gesetzt (ACL fuer '$_u') auf $_n Wurzel(n)."
|
[ "$_n" -gt 0 ] && log "Log-Leserechte gesetzt (ACL fuer '$_u') auf $_n Wurzel(n)."
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user