Quelqu'un peut-il m'expliquer comment umask
affecte le masque par défaut des fichiers nouvellement créés si les ACL sont activées? Existe-t-il une documentation à ce sujet?
Exemple:
$ mkdir test_dir && cd test_dir
$ setfacl -m d:someuser:rwx -m u:someuser:rwx . # give access to some user
$ getfacl .
# file: .
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx
group::---
mask::rwx
other::---
default:user::rwx
default:user:someuser:rwx
default:group::---
default:mask::rwx
default:other::---
$ umask # show my umask
077
$ echo "main(){}" > x.c # minimal C program
$ make x # build it
cc x.c -o x
$ getfacl x
# file: x
# owner: myUsername
# group: myGroup
user::rwx
user:someuser:rwx #effective:rw-
group::---
mask::rw-
other::---
Je m'attendrais mask:rwx
. En fait, après avoir défini umask
par exemple, 027
j'obtiens le comportement attendu.
linux
permissions
posix
acl
jofel
la source
la source
mask::rw-
. Mais ce n'est pas vraiment votre question, n'est-ce pas?mask::rw-
et nonmask::rwx
quel était le masque par défaut du répertoire.Réponses:
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
umask
interagissent les uns avec les autres.Contexte
Lorsqu'un fichier est créé sur un système Linux, les autorisations par défaut
0666
sont appliquées tandis que lorsqu'un répertoire est créé, les autorisations par défaut0777
sont appliquées.exemple 1 - fichier
Supposons que nous réglions notre umask sur 077 et que nous touchions un fichier. Nous pouvons utiliser
strace
pour voir ce qui se passe réellement lorsque nous faisons cela:Dans cet exemple, nous pouvons voir que l'appel système
open()
est effectué avec les autorisations 0666, mais lorsque leumask 077
est ensuite appliqué par le noyau, les autorisations suivantes sont supprimées (---rwxrwx
) et nous nous retrouvons avecrw-------
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.
Cette fois, nous utilisons la
mkdir
commande. Lamkdir
commande a ensuite appelé l'appel systèmemkdir()
. Dans l'exemple ci-dessus, nous pouvons voir que lamkdir
commande a appelé l'mkdir()
appel système avec les autorisations par défaut0777
(rwxrwxrwx
). Cette fois avec un umask des022
autorisations 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.
Créons maintenant le fichier
aclfile
:Obtenez maintenant les autorisations du fichier nouvellement créé:
Remarquez le masque,
mask::rw-
. Pourquoi n'est-ce pasmask::rwx
comme lorsque le répertoire a été créé?Vérifiez le
luvly
fichier journal pour voir quelles autorisations par défaut ont été utilisées pour la création du fichier:C'est là que ça devient un peu déroutant. Avec le masque défini
rwx
lors 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 laopen()
fonction avec les autorisations par défaut de0666
.Résumer
chmod
.Références
la source
chmod("file",0760)
->mask:rw
,chmod("file",0770)
->mask:rwx
). Je devrais peut-être commencer une nouvelle question à ce sujet ...pour des raisons de sécurité, le système d'exploitation linux ne permet pas la création automatique d'un fichier avec un bit d'exécution. Il s'agit d'empêcher les cyber-attaquants d'écrire des programmes dans ces fichiers et de les exécuter s'ils ont accès à votre serveur. C'est juste une mesure de sécurité. Vous devrez toujours définir manuellement le bit d'exécution sur les fichiers après les avoir créés avec l'utilitaire chmod
la source