web-dev-qa-db-fra.com

Comment définir les autorisations de fichiers par défaut pour tous les dossiers / fichiers d'un répertoire?

Je veux définir un dossier de telle sorte que tout ce qui y est créé (répertoires, fichiers) hérite des autorisations et du groupe par défaut.

Appelons le groupe "media". Et aussi, les dossiers/fichiers créés dans le répertoire devraient avoir g + rw automatiquement.

274
Chris

Je l'ai trouvé: Application des autorisations par défaut

De l'article:

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

Ensuite, nous pouvons vérifier:

getfacl /<directory>

Production:

# 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
288
Chris

Ceci est un ajout à la réponse de Chris, il est basé sur mon expérience sur ma plate-forme Arch Linux.

L'utilisation du commutateur par défaut (-d) et du commutateur de modification (-m) ne modifiera que les autorisations par défaut mais laissera intactes les autorisations existantes:

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

Si vous souhaitez modifier l'intégralité de la structure des autorisations du dossier, y compris celles existantes (vous devrez faire une ligne supplémentaire et la rendre récursive -R:

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

par exemple.

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. 

( CRÉDIT pour marquer dans les commentaires le synthax de la ligne de révocation de tous les privilèges)

29
thebunnyrules

Ajoutez-vous/utilisateur connecté au groupe www-data, afin que nous puissions travailler avec des fichiers créés par le serveur www-data

Sudo usermod -a -G www-data $USER

Doit redémarrer/se reconnecter pour que le nouveau groupe ajouté prenne effet

cd /var/www

Ajoutez www-data en tant que membre du groupe du dossier html, et votre utilisateur en tant que propriétaire, afin que nous le possédions ainsi que le membre du groupe

Sudo chown -R $USER:www-data html

Mettez votre nom d'utilisateur à la place de USER

Définissez les autorisations de lecture, d'écriture et d'exécution selon les besoins, (ugo) u = utilisateur, g = groupe, o = autres

Sudo chmod 750 html

Définissez le GID de html, maintenant, les fichiers nouvellement créés en html hériteront des autorisations de propriété:

Sudo chmod g+s html

Cela crée les règles par défaut pour les fichiers/répertoires nouvellement créés dans le répertoire html et les sous-répertoires.

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

Faire SELinux s'il est installé, ignorer les exigences du contexte www-data afin qu'il autorise les autorisations d'écriture

Sudo setsebool -P httpd_unified 1

répertoire de liste pour voir les nouvelles autorisations appliquées

ls -ld html

Renvoie ceci

drwxrwsr-x+   3 html www-data

Le signe de fin + signifie que l'ACL, la liste de contrôle d'accès, est définie sur le répertoire.

Référence: Lien vers le forum

1
Bsienn