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 » :
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:
UMASK 022
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 » :
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 :
session optional pam_umask.so
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
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 :
UMASK 077
Nous sommes maintenant sûrs que cet umask plus restrictif permet une sécurité plus approfondie de notre système.