Il existe trois manières normales de définir le umask d'un utilisateur.
- Définir
UMASK
en/etc/login.defs
- Ajouter
pam_umask.so
à votre configuration PAM en/etc/pam.d
- Définissez-le dans les fichiers de démarrage du shell, par ex.
/etc/profile
Il n'y a aucune différence entre les utilisateurs du système et les utilisateurs normaux à cet égard.
Mais je suppose que vous essayez de démarrer un démon avec un umask personnalisé ?
Le problème est :toutes les options ci-dessus se produisent lorsqu'un utilisateur se connecte. Si vous exécutez un démon, il ne se connecte jamais. Il est démarré par init, puis s'exécute en tant que root ou appelle setuid
à exécuter en tant qu'utilisateur système que vous spécifiez.
Vos principales options sont :
- mettre
umask
dans votre script d'initialisation (faites ungrep umask /etc/init.d/*
pour un exemple) - configurer init pour démarrer le programme avec un umask personnalisé (systemd.exec upstart umask)
- si vous utilisez
start-stop-daemon
, passez l'option umask - modifier le programme lui-même pour appeler la fonction umask ou l'appel système
Les utilisateurs du système diffèrent des utilisateurs "normaux" de trois manières :expiration du mot de passe, répertoire personnel (les utilisateurs du système n'en ont pas) et UID (les utilisateurs du système sont généralement en dessous d'un seuil arbitraire).
Dans le cas général, vous n'avez presque pas de chance. Vous pouvez utiliser PAM pour définir le umask, mais PAM sélectionne les comportements en fonction d'éléments autres que ces trois différences.
En d'autres termes, vous ne pouvez pas faire en sorte que PAM fasse la distinction entre les utilisateurs "système" et "non-système". Cela vous laisse deux options :
-
Soit vous utilisez PAM pour définir le umask pour tout le monde (par exemple, vérifiez dans
/etc/login.defs
), puis définissez explicitement le umask pour les utilisateurs non système dans/etc/bash.bashrc
(ou similaire); -
Ou vous écrivez votre propre module PAM pour le faire. Je pense que cela serait bien accueilli par de nombreuses personnes, car la définition de l'umask est une demande courante.
Veuillez prendre cette réponse avec une généreuse pincée de sel. Ce type de demande est assez courant, et je ne serais pas surpris qu'une meilleure méthode existe maintenant.