Festlegen der Standarddateiberechtigungen mit setfacl

746
Justin

Ich muss die Standard-ACLs für neue Dateien festlegen, die von httpd über den Apache- Dienstbenutzer erstellt werden, und zwar so, dass die Datei mit der GUID für das dev-Benutzerkonto (die auch als devs bezeichnet wird ) und bestimmten Berechtigungen erstellt wird.

Anscheinend funktioniert die SGID einwandfrei, da alle von PHP-Webseiten erstellten Dateien den Apache- Besitzer und die devs- Gruppe haben. Aber anstatt die ACLs von rwxrwx---ihnen zu haben rw-rw----.

[root@webserver ~]# cd /var/www/html [root@webserver html]# setfacl -Rb .  [root@webserver html]# chmod -R g+s .  [root@webserver html]# setfacl -Rdnm u:apache:rwx,g:devs:rwx . [root@webserver html]# getfacl . # file: . # owner: apache # group: devs # flags: -s- user::rwx group::rwx other::--- default:user::rwx default:user:apache:rwx default:group::rwx default:group:devs:rwx default:mask::rwx default:other::---  [root@webserver html]# getfacl data.txt # file: data.txt # owner: apache # group: devs user::rw- user:apache:rwx #effective:rw- group::rwx #effective:rw- group:devs:rwx #effective:rw- mask::rw- other::--- 

Die Datei data.txt wurde über ein von httpd / apache ausgeführtes PHP-Skript erstellt. Der Besitz ist ordnungsgemäß eingerichtet ( Apache / devs ), er wurde jedoch nicht mit den ausführbaren Berechtigungen für den Benutzer oder die Gruppe erstellt.

Auf diesem Server wird die CentOS-Version 6.9 (Final) ausgeführt.

Irgendwelche Ideen?

Vielen Dank!

1

1 Antwort auf die Frage

1
RobertL

Linux-Dateiberechtigungen sind von dem setgidBit im Verzeichnis nicht betroffen . Gruppen-ID festlegen bewirkt, dass die Datei mit der Gruppen-ID des Verzeichnisses anstelle der Gruppen-ID des Erstellers erstellt wird.

Die Berechtigungen für neu erstellte Dateien werden vom Ersteller der Datei angegeben und von der Dateierstellungsmaske (umask) in den openoder anderen Systemaufrufen beeinflusst. Um die Dateiberechtigung in PHP zu beeinflussen, verwenden Sie fopenoder chmodusw.

Dies kann ohne die Verwendung von ACLs erfolgen. Diese Befehle bewirken dasselbe:

chmod g+s . chgrp devs . 

Es erscheint ungewöhnlich und unsicher, dass PHP aus httpd ausführbare Dateien erstellt. Ich hoffe du weißt was du tust.

Ja, ich verstehe was du meinst. Hierbei handelt es sich meistens um Protokolldateien oder Debugging-Informationen, die von Apache erstellt werden müssen und von Entwicklern zugänglich sind. Es gibt also keinen Grund für ausführbare Berechtigungen. Ich vermute, ich habe mehr versucht herauszufinden, warum * Ausführen nicht hinzugefügt wurde, als ich die Dateien mit `rw-rw ---- 'oder` r - r ----- `erstellen konnte , aber niemals `rwxrwx ---`. Ich hatte nicht wirklich vor, es dort zu lassen, besonders in der Produktion. Vielen Dank! Justin vor 6 Jahren 0