Je souhaite configurer des autorisations par défaut pour un partage de fichier afin que tout le monde puisse rwx
tous les répertoires et que tous les fichiers nouvellement créés sont rw
.
Toute personne qui accède à cette action est dans le même groupe, ce n'est donc pas une préoccupation.
J'ai cherché à faire cela via ACLS sans changer tous les masks des utilisateurs et tels. Voici mes invocations actuelles:
setfacl -Rdm g:mygroup:rwx share_name
setfacl -Rm g:mygroup:rwx share_name
Mon problème est que pendant que je veux que tous les nouveaux créés sous-répertoires soit rwx
, je souhaite seulement que nouvellement créé fichiers soit rw
.
Quelqu'un a-t-il une meilleure méthode pour atteindre mon résultat final souhaité? Existe-t-il un moyen de définir des ACL sur des répertoires séparément des fichiers, dans une veine similaire à chmod +x
vs. chmod +X
?
Merci
Pour les futurs lecteurs, utiliser setfacl
sur fichiers/dossiers existants sans ajouter le bit exécutable à vos fichiers, la solution est cette partie de @ Réponse de Mikel :
Ma version de SetFacl permet X exactement comme vous le souhaitez, par exemple:
setfacl g:mygroup:rwX
Extraits pertinents de la setfacl
documentation :
Le champ Perms est une combinaison de caractères indiquant les autorisations: lecture (R), écrire (w), exécuter (x), n'exécute que si le fichier est un répertoire ou a déjà exécuté la permission pour certains utilisateurs (x) .
Aussi loin que je comprenne Linux ACLS, setfacl -Rdm g:mygroup:rwx share_name
fait exactement ce que vous voulez. Expérience:
umask 007
mkdir foo
chgrp mygroup foo
chmod 2700 foo
setfacl -d -m group:mygroup:rwx foo
setfacl -m group:mygroup:rwx foo
touch foo/data
echo '#!/bin/ls' >foo/exec
chmod +x foo/exec
Ensuite, comme un utilisateur différent du groupe mygroup
:
$ cat foo/*
#!/bin/ls
#!/bin/ls
$ ./foo/data
ash: ./foo/data: Permission denied
$ ./foo/exec
./foo/exec
Que se passe-t-il?
$ getfacl foo/data
# file: foo/data
# owner: myuser
# group: mygroup
user::rw-
group::---
group:mygroup:rwx #effective:rw-
mask::rw-
other::---
L'ACL effectif pour mygroup
est le résultat de l'ACL_GROUP
Entrée pour mygroup
(rwx
) avec l'entrée ACL_MASK (rw-
).
La page ACL (5) Man explique le calcul de cela sous "algorithmes de contrôle d'accès". Cela n'explique pas comment ACL_MASK
Les entrées sont générées, mais dans la pratique, la bonne chose semble se produire.