Umask

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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