Gestion de l’umask sous Linux

I. Présentation

Dans ce tutoriel, nous allons apprendre la fonction, le fonctionnement et l'utilisation de l'umask sur les distributions Linux. L’umask est un outil de gestion des droits sur la création des fichiers et des répertoires qui permet de gérer une certaines sécurité et une restriction des droits par défaut. En définissant un umask, on retire automatiquement l’umask des droits défini sur la création des futurs fichiers ou répertoires.

II. Fonctionnement

Lors de la création d’un fichier, les droits par défaut qui s’y appliquent sont « rw-r--r--». On peut imaginer que par défaut, le fichier est créé par défaut avec les droits « 666 » ou « rw-rw-rw- » mais que l’umask qui s’y applique enlève automatiquement certains droits qui sont les droits d’écriture pour le groupe et les autres utilisateurs. Un répertoire quant à lui est créé par défaut avec les droits « 777 », il faut donc calculer l’umask en conséquence car un umask de « 022 » donnera un droit final de « 755 » soit « rw-r---r-- ».

L’umask qui est par défaut défini pour les fichiers comme pour les répertoires est en fait « 022 » ce qui fait 666-022 = 644. Plus simplement on enlève les droits d’écriture (w = 2) sur le groupe et les autres donc on passe de « rw-rw-rw- » à « rw-r--r--». Il est possible de modifier l’umask de façon temporaire, c’est-à-dire que nous allons mettre en place un umask avec une commande :

umask 077

Puis nous allons créer des fichiers et des dossiers sur lesquels ce nouvel umask s’appliquera par défaut. Sur la création d’un dossier, il aura les droits « rwx------» (777 - 077) c’est-à-dire que seul le propriétaire pourra agir dessus. Un fichier aura également les droits « rwx------». L’umask se réinitialiser à sa valeur par défaut (022) à la fermeture d’une session.

III. Umask des utilisateurs

On peut penser que par défaut le système ne met pas en place de bonnes restrictions car lors de la création d’un fichier ou d’un dossier, tout le monde a le droit de le lire. On voudrait par exemple que le groupe ait le droit de lecture du fichier ou du dossier et que les autres utilisateurs n’aient aucun droit dessus. L’umask à appliquer serait alors « 027 ». On peut paramétrer cet umask pour qu’il s’applique par défaut à tous les utilisateurs.

Par défaut, ce paramètre ce gère dans « /etc/profile » :

UMASK01

Mais nous voyons que le système nous dit que ce paramètre est maintenant géré par « pam_umask ». Nous allons alors aller dans le fichier « /etc/login.defs » pour aller modifier ce paramètre à la ligne 144:

UMASK02

On voit d’ailleurs dans ce fichier des recommandations systèmes où on nous dit que 022 n’est pas une politique très sécurisée et qu’il est possible de mettre en place une politique plus sécurisée comme « 027 » ou « 077 » :

UMASK03

On doit ensuite aller dire au fichier de configuration PAM « /etc/pam.d/common-session » d’utiliser la module « pam_umask.so » qui gérera l’umask par défaut en lui ajoutant cette ligne :

UMASK04

Après redémarrage d’une session avec un utilisateur, nous pourrons vérifier que l’umask définie c’est bien appliqué avec la commande suivante :

umask -p

 

Le « p » est pour « print » .

IV. Umask de root

Les soucis et que l’umask par défaut s’applique aussi à root qui fait partie des utilisateurs. Nous pourrions penser que ce que root créé, seul root devrait pouvoir le relire par sécurité. On devrait donc définir un umask« 077 » pour root. Pour déjouer l’umask par défaut, on doit aller modifier le fichier « .profile » de l’utilisateur. Ici, on doit donc modifier le fichier « /root/.profile » puis dé-commenter et modifier cette ligne :

UMASK05

Nous sommes maintenant sûrs que cet umask plus restrictif permet une sécurité plus approfondie de notre système.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Mickael Dorigny

Fondateur d'IT-Connect.fr et d'Information-security.fr. Auditeur sécurité chez Amossys.

    mickael a publié 475 articles sur IT-Connect.See all posts by mickael

    11 réactions sur “Gestion de l’umask sous Linux

    • 29/06/2014 à 11:12
      Permalink

      Merci pour ces explications mais je n’y arrive pas parce que les fichiers sont en lecture seule comme /etc/login.defs que je ne peux modifier sous gedit malgré des droits modifies à 777. dans le fichier /etc/pam.d/common-session, il n’y a aucune section umask.
      Alors comment ?
      Merci
      Abdel nouvel utilisateur

      Répondre
      • 30/06/2014 à 13:33
        Permalink

        Si la section umask n’existe pas, ce qui est fort probable. Tu peux la créer et elle sera prise en compte. Tu doit être en Root pour pouvoir modifier les fichiers comme /etc/login.dfs ou /etc/bashrc.

        Répondre
    • 10/09/2014 à 14:23
      Permalink

      Bonjour Mickael,

      J’ai une petite remarque sur l’exemple utilisé sur cet article concernant la valeur « umask 077 ».

      En théorie, un utilisateur a 1 et 1 seule valeur UMASK sous prétexte que les valeurs de bases utilisés pour un fichier et répertoire sont différents, à savoir 0666 pour un fichier et 0777 pour un répertoire.

      Ainsi, est-il possible d’avoir un valeur umask 077?

      Répondre
    • 03/12/2014 à 14:15
      Permalink

      Bonjour Mickael,
      Merci pour ce tutoriel très clair. J’ai une question concernant le chapitre IV Unmask de root. J’ai vérifié en root sur un serveur avec OS Centos et je ne trouve pas le fichier /root/.profile.
      Sur un serveur avec OS Ubuntu le fichier /root/.profile contient :

      if [ "$BASH" ]; then
      if [ -f ~/.bashrc ]; then
      . ~/.bashrc
      fi
      fi

      J’ai cherché ensuite dans le fichier /root/.bashrc et ne trouve pas la ligne à « dé-commenter » umask 077

      Répondre
      • 03/12/2014 à 20:15
        Permalink

        Bonjour Miles,

        Dans le fichier que tu as trouvé /root/.bashrc, si tu ne trouves pas la ligne umask 077. Il faut la rajouter à la main

        A bientôt

        Répondre
    • 01/03/2015 à 18:20
      Permalink

      Merci infiniment grand Monsieur!!!!!!!!!!!!!

      Répondre
    • 09/03/2015 à 13:58
      Permalink

      Bonjour,

      J’echangeais sur umask avec des collègues, puis nous avons lu votre blog.

      Vous indiquez : donnera un droit final de « 744 » soit « rw-r-x-r-x ». »
      ce ne serait pas plutôt rwx-r–r– ?

      a bientôt

      Répondre
    • 26/06/2015 à 11:13
      Permalink

      Bonjour,
      Peux tu m’éclaircir sur le présente d’un « + » a la din des droits d’un fichier ou d’un dossier avec la commande « ls -l ».
      Je m’explique :
      Lorsque que je fais un « ls -l » j’ai une retour de genre :
      (d)rwxr-x—

      mais voici ce que j’obtiens sur certain fichier ou dossier :
      (d)rwxr-x—+

      Par avance, merci pour la réponse.

      Répondre
    • 21/06/2016 à 11:29
      Permalink

      Bonjour Mickael,

      Bravo pour ce très bel article,
      dans la partie « fonctionnement », 1er paragraphe, dernière ligne :
      vous expliquez que « 755 » donne « rw-r–r–« , ne serait-ce pas plutôt :
      « rwxr-xr-x » ?

      Car r = 4 ; w = 2 ; x=1

      A bientôt

      Répondre
    • 09/06/2017 à 10:58
      Permalink

      grosse faute. Vous dites que 755 donne => rw-r—r–
      alors que c’est rwxr-xr-x !

      Répondre

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *