Umask
| Fiche express | |
|---|---|
| Domaine | Permissions par défaut à la création |
| Commande | umask
|
| Contexte | Shells POSIX (bash, sh…), session SSH/SFTP |
| Voir aussi | Chmod (permissions explicites) |
umask définit le masque de permissions retiré par défaut à tout fichier ou dossier nouvellement créé. Contrairement à Chmod qui fixe des permissions explicitement après coup, umask agit en amont et de façon transparente : chaque programme qui crée un fichier (éditeur, script, démon…) hérite de ce masque sans avoir à s'en soucier.
Calcul des permissions
Les permissions maximales par défaut avant application du masque sont 666 pour un fichier (jamais exécutable par défaut) et 777 pour un dossier. Le masque est ensuite retiré bit à bit :
umask # affiche le masque courant, ex: 0022
umask -S # affiche le masque en notation symbolique, ex: u=rwx,g=rx,o=rx
| Umask | Fichiers (666 − umask) | Dossiers (777 − umask) | Usage typique |
|---|---|---|---|
022 |
644 (rw-r--r--) | 755 (rwxr-xr-x) | Défaut de la plupart des distributions, poste/serveur mono-utilisateur |
002 |
664 (rw-rw-r--) | 775 (rwxrwxr-x) | Travail en groupe (fichiers partagés en écriture entre membres d'un même groupe) |
077 |
600 (rw-------) | 700 (rwx------) | Répertoires sensibles (clés SSH, home restreint), aucun accès pour group/other |
Positionner l'umask
umask 0027 # dans le shell courant, pour la session en cours seulement
Pour une portée permanente, l'umask se règle au niveau du shell, pas au niveau du noyau :
# /etc/profile # portée globale, tous les utilisateurs
# ~/.bashrc # portée par utilisateur (interactif)
# ~/.bash_profile # portée par utilisateur (login)
umask 0022
Umask sur une session SSH
Le shell interactif ouvert via SSH lit normalement /etc/profile et les fichiers du home, mais une session SFTP en chroot ou certains clients n'exécutent aucun de ces fichiers. Dans ce cas, forcer l'umask via PAM :
# /etc/pam.d/sshd
session optional pam_umask.so umask=0002
Pour un SFTP interne (chroot), vérifier dans /etc/ssh/sshd_config que le sous-système utilisé passe bien par PAM :
Subsystem sftp internal-sftp
UsePAM yes
Voir aussi
- Chmod — permissions explicites, complémentaire d'umask qui ne fixe que les permissions par défaut à la création