Wie lege ich Standard-Dateiberechtigungen für alle Ordner / Dateien in einem Verzeichnis fest?


254

Ich möchte einen Ordner so einrichten, dass alle darin erstellten Elemente (Verzeichnisse, Dateien) Standardberechtigungen und -gruppen erben.

Nennen wir die Gruppe "Medien". Außerdem sollten die im Verzeichnis erstellten Ordner / Dateien automatisch g + rw haben.


1
Wird das nicht vom Benutzer gesteuert, der die neue Datei / den neuen Ordner erstellt, und von seiner umask?
Wadih M.

umask bezieht sich auf Berechtigungen, aber ich glaube nicht, dass es etwas mit dem Festlegen einer Standardgruppe zu tun hat, die nicht der Benutzer selbst ist.
Chris

1
Welches Betriebssystem? Tags benötigt. setfaclund Standard-ACLs existieren unter AIX nicht.
Amit Naidu

Antworten:


269

Ich habe es gefunden: Anwenden von Standardberechtigungen

Aus dem Artikel:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

Als nächstes können wir überprüfen:

getfacl /<directory>

Ausgabe:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

5
Yay für das klebrige Stück!
gabe.

22
Verwechseln wir gid nicht mit sticky bit.
Amit Naidu

10
g + s stellt sicher, dass neue Inhalte im Verzeichnis die Gruppeneigentümer übernehmen. setfacl ändert nur den chmod, setzt in deinem Fall die Erlaubnis auf o = rx
Steen Schütt

10
Beachten Sie, dass die Zugriffssteuerungsliste aktiviert sein muss (als eine der Einhängeoptionen für das eingehängte Dateisystem enthalten), damit die Dateiberechtigungen übernommen werden können.
SG23

11
Vielleicht möchten Sie stattdessen 'X' verwenden, damit nur die Ausführungsberechtigung für Verzeichnisse und nicht für Dateien festgelegt wirdsetfacl -d -m g::rwX /<directory>
Adrian Gunawan

27

Dies ist eine Ergänzung zu Chris 'Antwort. Sie basiert auf meinen Erfahrungen mit meinem Arch Linux-Rig.

Wenn Sie den Standardschalter (-d) und den Änderungsschalter (-m) verwenden, werden nur die Standardberechtigungen geändert, die vorhandenen bleiben jedoch erhalten:

setfacl -d -m g::rwx /<directory>

Wenn Sie die gesamte Berechtigungsstruktur des Ordners einschließlich der vorhandenen ändern möchten (Sie müssen eine zusätzliche Zeile einfügen und sie rekursiv machen - R:

setfacl -R -m g::rwx /<directory>

z.B.

setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively
setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders 
setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively
setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else. 

( CREDIT in den Kommentaren für die Synthax des revoke all Privilegien Linie markdwite)


2
So widerrufen Sie Gruppenberechtigungen (als Beispiel): sudo setfacl -d -mg :: --- / path
markdwhite

1
Ist das nur ein Tippfehler, der setfacl -R -m g::rwx /<directory>in Ihrer Antwort zweimal vorkommt?
Shane Rowatt

0

Fügen Sie sich selbst / den angemeldeten Benutzer zur WWW-Datengruppe hinzu, damit wir mit Dateien arbeiten können, die vom WWW-Datenserver erstellt wurden

sudo usermod -a -G www-data $USER

Muss neu gestartet / angemeldet werden, damit die neu hinzugefügte Gruppe wirksam wird

cd /var/www

Fügen Sie www-data als Gruppenmitglied des HTML-Ordners und Ihren Benutzer als Eigentümer hinzu, damit wir es ebenso besitzen wie ein Gruppenmitglied

sudo chown -R $USER:www-data html

Geben Sie Ihren Benutzernamen anstelle von USER ein

Setze Lese-, Schreib- und Ausführungsrechte wie erforderlich, (ugo) u = Benutzer, g = Gruppe, o = andere

sudo chmod 750 html

Stellen Sie die GID von html ein. Neu erstellte Dateien in html erben nun die Eigentumsrechte:

sudo chmod g+s html

Dadurch werden die Standardregeln für neu erstellte Dateien / Verzeichnisse im HTML-Verzeichnis und in den Unterverzeichnissen erstellt.

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html

Wenn SELinux installiert ist, ignorieren Sie die Anforderungen für den WWW-Datenkontext, damit Schreibberechtigungen zugelassen werden

sudo setsebool -P httpd_unified 1

Verzeichnis auflisten, um die neuen Berechtigungen anzuzeigen

ls -ld html

Gibt dies zurück

drwxrwsr-x+   3 html www-data

Das abschließende + bedeutet, dass die Zugriffssteuerungsliste (ACL) für das Verzeichnis festgelegt ist.

Hinweis : Link zum Forum


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.