GNU/Linux >> Tutoriels Linux >  >> Linux

Comment umask affecte-t-il les ACL ?

J'ai trouvé cet exemple, intitulé :ACL et MASK sous Linux. Dans cet article, les exemples suivants sont démontrés, ce qui, je pense, aide à comprendre comment les ACL et umask interagir les uns avec les autres.

Contexte

Lorsqu'un fichier est créé sur un système Linux, les autorisations par défaut 0666 sont appliqués alors qu'à la création d'un répertoire les permissions par défaut 0777 sont appliqués.

exemple 1 - fichier

Supposons que nous définissions 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 :

$ 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 fait avec les permissions 0666, cependant quand le umask 077 est alors appliqué par le noyau les permissions suivantes sont supprimées (---rwxrwx ) et il nous reste rw------- alias 0600.

exemple - 2 répertoires

Le même concept peut être appliqué aux répertoires, sauf qu'au lieu que les autorisations par défaut soient 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 le mkdir commande. Le mkdir commande a ensuite appelé l'appel système mkdir() . Dans l'exemple ci-dessus, nous pouvons voir que le mkdir commande appelée mkdir() appel système avec les autorisations par défaut 0777 (rwxrwxrwx ). Cette fois avec un umask de 022 les autorisations suivantes sont supprimées (----w--w- ), il nous reste donc 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::rwx comme lors de la création du répertoire ?

Vérifiez le luvly log 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 réglé sur rwx lorsque le répertoire a été créé, vous vous attendriez au même comportement pour la création du fichier, mais cela ne fonctionne pas de cette façon. C'est parce que le noyau appelle le open() fonction avec les permissions par défaut de 0666 .

Pour résumer

  • Les fichiers n'obtiendront pas l'autorisation d'exécution (masquée ou effective). 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.
  • Le seul moyen de définir des autorisations d'exécution pour un fichier sous autorisations ACL consiste à les définir manuellement à l'aide de chmod .

Références

  • page de manuel acl

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. Cela permet d'empêcher les cyber-attaquants d'écrire des programmes dans de tels fichiers et de les exécuter s'ils accèdent à 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


Linux
  1. Comprendre comment Umask contrôle les autorisations initiales de fichiers/répertoires sous Linux

  2. Comment ça marche ? Que fait rm ?

  3. Comment grep \n dans le fichier

  4. Déplacer un fichier en cours d'utilisation -- Comment ça marche ?

  5. Que signifie un + à la fin des autorisations de ls -l ?

Autorisations Linux - Comment trouver les autorisations d'un fichier

Commande Chmod - Comment modifier les autorisations de fichiers sous Linux

Comment modifier les autorisations de fichiers à l'aide de FileZilla

Comment modifier les autorisations de fichiers dans cPanel

Comment modifier les autorisations de fichier

Comment fonctionne /proc/* ?