Supposons que mon umask soit 0077.
J'ai un répertoire,, foo
que je souhaite que des autorisations spéciales lui soient appliquées. Tous les fichiers que je crée foo
doivent être lisibles par tous et tous les répertoires doivent être lisibles et exécutables par tous.
Actuellement, si je crée un fichier, ce sera 0600, et un répertoire sera 0700:
$ cd foo/
$ touch file
$ mkdir directory
$ ls -l
drwx------ 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw------- 1 nfm nfm 0 2012-01-12 16:15 file
Je veux que le fichier soit 0644 et le répertoire 0755, quel que soit mon umask:
drwxr-xr-x 2 nfm nfm 4096 2012-01-12 16:16 directory
-rw-r--r-- 1 nfm nfm 0 2012-01-12 16:15 file
Comment puis-je atteindre cet objectif?
linux
permissions
access-control-list
umask
stickmangumby
la source
la source
Réponses:
Oui, les acl peuvent le faire.
Assurez-vous que votre système de fichiers est monté avec acl. Pour vérifier cela, tapez
mount
. Vous devriez voir «acl» répertorié parmi d'autres autorisations, par exemple:S'il n'est pas monté avec acl, ouvrez / etc / fstab et ajoutez 'acl' à la liste des options:
Maintenant, remontez le système de fichiers en cours d'exécution avec les nouvelles options:
Installez les utilitaires acl. Sur ubuntu / debian, c'est:
Vos nouveaux amis sont
setfacl
etgetfacl
. Utilisezsetfacl
pour modifier l'acl par défaut pour un répertoire:-d
définit la valeur par défaut,-m
modifie acl eto:r
accorde à "other" le droit de lire. La définition de la valeur par défaut sur un répertoire est à peu près équivalente à la définition de setgid sur un répertoire, mais au lieu de fichiers nouvellement créés héritant du groupe, ils héritent de l'acl. Ensemble, setgid et acl peuvent être puissants, car vous pouvez accorder des autorisations par défaut à un groupe et obtenir que les fichiers nouvellement créés appartiennent à ce groupe, pour un umask efficace par répertoire basé sur le groupe.Vérifiez votre travail:
ls -l
devrait maintenant afficher un "+" supplémentaire indiquant la présence de acl en plus des autorisations de fichier standard.Vous pouvez obtenir des informations détaillées sur l'ACL en utilisant
getfacl
.la source
setfacl
etgetfacl
retournent la sortie attendue, mais seuls les répertoires (pas les fichiers) dans le répertoire parent héritent de l'acl, et même alors, mon umask a priorité sur la valeur par défaut (s'ils ne sont pas lisibles par le monde, ledefault:other::r--
ne laisse pas un autre utilisateur y accéder). Ai-je raté quelque chose d'évident?Vous pouvez également forcer un umask pour le répertoire en définissant la propriété ACL du masque comme ceci:
la source
Installez simplement OnDir et configurez-le correctement selon vos besoins. J'ai répondu à un problème similaire situé ici .
la source