Les Umasks sous Linux

Lorsque vous créez un fichier ou un dossier, vous allez avoir des permissions par défaut:

Cas d’un dossier:

simon:~$ mkdir test && stat test
  Fichier : «test»
   Taille : 4096        Blocs : 8          Blocs d'E/S : 4096   répertoire
Périphérique : fc00h/64512d     Inœud : 266034      Liens : 2
Accès : (0775/drwxrwxr-x)  UID : ( 1000/   simon)   GID : ( 1000/   simon)

Cas d’un fichier:

simon:~$ touch test && stat test
  Fichier : «test»
   Taille : 0           Blocs : 0          Blocs d'E/S : 4096   fichier vide
Périphérique : fc00h/64512d     Inœud : 266034      Liens : 1
Accès : (0664/-rw-rw-r--)  UID : ( 1000/   simon)   GID : ( 1000/   simon)

Problème: comment changer ce comportement parfois gênant ?

Il faut tout d’abord savoir qu’un umask s’applique au niveau d’un utilisateur et non d’un répertoire. Il est donc préférable de créer des utilisateurs dédiés à du SCP, du Rsync pour pouvoir leur attribuer un umask adapté sans mauvaise surprise.

Calcul d’un umask

Un umask se calcule de façon octale (8 bits):

022
|--- Propriétaire (0: rwx)
-|-- Groupe (2: rx)
--|- Autre (2: rx)

Les valeurs acceptées sont les suivantes:

0: Read Write Execute
1: Read Write -
2: Read -     Execute
3: -    Write Execute
5: -    Write -
6: -    -      Execute
7: -    -     -

Pour les non-anglophones: Read = Lire ‐ Write = Ecrire ‐ Execute = Exécuter.

Récupérer la valeur actuelle

Pour obtenir la valeur actuelle, utilisez la commande umask (valeur octale) ou umask -S (u=rwx,g=rwx,o=rx):

Pour un utilisateur standard (002):

simon@ubuntu:~$ umask
0002
simon@ubuntu:~$ umask -S
u=rwx,g=rwx,o=rx

Pour l’utilisateur root (022):

root@ubuntu:~# umask
0022
root@ubuntu:~# umask -S
u=rwx,g=rx,o=rx

Modifier l’umask

Pour modifier l’umask pour l’utilisateur en cours, utilisez la commande umask suivi du code octal:

umask 077 # u=rwx,go=

Vous pouvez également utiliser directement la syntaxe u=rwx,go=:

umask u=rwx,go=

Rendre persistent l’umask

Le seul moyen de rendre pour rendre persistent un umask est d’ajouter la commande dans le profil de l’utilisateur:

echo 'umask 077' >> ~/.bashrc # ou .bash_profile

Pour l’appliquer à tous les utilisateurs (à éviter !), ajoutez la ligne dans /etc/profile:

echo 'umask 077' >> /etc/profile

Exprimer en permissions

Pour voir ce que va donner un umask sur les permissions, une simple soustraction suffit:

  • Pour un fichier: 666 – <UMASK>
  • Pour un dossier: 777 – <UMASK>

Exemple avec un umask 022:

# Cas d'un fichier:
666 - 022 = 644
# Cas d'un dossier:
777 - 022 = 755

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s