J'ai trouvé cet exemple, intitulé: ACL et MASK sous linux . Dans cet article, les exemples suivants sont présentés, ce qui, à mon avis, aide à comprendre comment les ACL et umaskinteragissent les uns avec les autres.
Contexte
Lorsqu'un fichier est créé sur un système Linux, les autorisations par défaut 0666sont appliquées tandis que lorsqu'un répertoire est créé, les autorisations par défaut 0777sont appliquées.
exemple 1 - fichier
Supposons que nous réglions notre umask sur 077 et que nous touchions un fichier. Nous pouvons utiliser stracepour voir ce qui se passe réellement lorsque nous faisons cela:
$ umask 077; strace -eopen touch testfile 2>&1 | tail -1; ls -l testfile
open("testfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
-rw-------. 1 root root 0 Sep 4 15:25 testfile
Dans cet exemple, nous pouvons voir que l'appel système open()est effectué avec les autorisations 0666, mais lorsque le umask 077est ensuite appliqué par le noyau, les autorisations suivantes sont supprimées ( ---rwxrwx) et nous nous retrouvons avec rw-------aka 0600.
exemple - 2 répertoire
Le même concept peut être appliqué aux répertoires, sauf qu'au lieu des autorisations par défaut étant 0666, elles sont 0777.
$ umask 022; strace -emkdir mkdir testdir; ls -ld testdir
mkdir("testdir", 0777) = 0
drwxr-xr-x 2 saml saml 4096 Jul 9 10:55 testdir
Cette fois, nous utilisons la mkdircommande. La mkdircommande a ensuite appelé l'appel système mkdir(). Dans l'exemple ci-dessus, nous pouvons voir que la mkdircommande a appelé l' mkdir()appel système avec les autorisations par défaut 0777( rwxrwxrwx). Cette fois avec un umask des 022autorisations suivantes sont supprimées ( ----w--w-), nous nous retrouvons donc avec 0755 ( rwxr-xr-x) lors de la création des répertoires.
exemple 3 (Application de l'ACL par défaut)
Créons maintenant un répertoire et montrons ce qui se passe lorsque l'ACL par défaut lui est appliquée avec un fichier à l'intérieur.
$ mkdir acldir
$ sudo strace -s 128 -fvTttto luv setfacl -m d:u:nginx:rwx,u:nginx:rwx acldir
$ getfacl --all-effective acldir
# file: acldir
# owner: saml
# group: saml
user::rwx
user:nginx:rwx #effective:rwx
group::r-x #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:user:nginx:rwx #effective:rwx
default:group::r-x #effective:r-x
default:mask::rwx
default:other::r-x
Créons maintenant le fichier aclfile:
$ strace -s 128 -fvTttto luvly touch acldir/aclfile
# view the results of this command in the log file "luvly"
$ less luvly
Obtenez maintenant les autorisations du fichier nouvellement créé:
$ getfacl --all-effective acldir/aclfile
# file: acldir/aclfile
# owner: saml
# group: saml
user::rw-
user:nginx:rwx #effective:rw-
group::r-x #effective:r--
mask::rw-
other::r--
Remarquez le masque, mask::rw-. Pourquoi n'est-ce pas mask::rwxcomme lorsque le répertoire a été créé?
Vérifiez le luvlyfichier journal pour voir quelles autorisations par défaut ont été utilisées pour la création du fichier:
$ less luvly |grep open |tail -1
10006 1373382808.176797 open("acldir/aclfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3 <0.000060>
C'est là que ça devient un peu déroutant. Avec le masque défini rwxlors de la création du répertoire, vous vous attendriez à ce que le comportement soit identique pour la création du fichier, mais cela ne fonctionne pas de cette façon. C'est parce que le noyau appelle la open()fonction avec les autorisations par défaut de 0666.
Résumer
- Les fichiers ne seront pas autorisés à exécuter (masquage ou efficace). Peu importe la méthode que nous utilisons: ACL, umask ou mask & ACL.
- Les répertoires peuvent obtenir des autorisations d'exécution, mais cela dépend de la façon dont le champ de masquage est défini.
- La seule façon de définir les autorisations d'exécution pour un fichier qui se trouve sous les autorisations ACL est de les définir manuellement à l'aide
chmod.
Références
mask::rw-. Mais ce n'est pas vraiment votre question, n'est-ce pas?