Réponses:
Il existe trois façons normales de définir le umask d'un utilisateur.
UMASK
dans/etc/login.defs
pam_umask.so
à votre configuration PAM dans/etc/pam.d
/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 le suivant: 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
pour s'exécuter en tant qu'utilisateur système que vous spécifiez .
Vos principales options sont:
umask
votre script init (faites un grep umask /etc/init.d/*
exemple)start-stop-daemon
, passez l' option umaskLes utilisateurs du système diffèrent des utilisateurs «normaux» de trois manières: expiration du mot de passe, répertoire personnel (les utilisateurs système n'en ont pas) et UID (les utilisateurs système sont généralement inférieurs à 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 de choses autres que ces trois différences.
En d'autres termes, vous ne pouvez pas demander à PAM de faire 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, archiver /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 ce faire. Je pense que cela serait bien accueilli par de nombreuses personnes, car la définition du 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 si un moyen meilleur / approprié existe maintenant.
pam_umask
, mais peut-être pas pam_succeed_if
. Avec pam_succeed_if , vous pouvez faire en sorte que tout autre module ne s'applique qu'à un utilisateur ou un groupe donné. Mais je ne pense toujours pas que PAM va aider ici.
Comme le suggère @Mikel, si vous essayez de configurer un compte système qui est un démon, essayez de configurer le démon lui-même.
Je suis venu à cette question en regardant comment définir le umask pour le compte _www sur MacOS. Bien que cela soit difficile comme le suggèrent les réponses ci-dessus, j'ai trouvé que je pouvais le résoudre en configurant le service apache comme (dans ce cas) l'utilisateur == un démon.
Étrangement, je n'ai pas pu trouver le script de démarrage (normalement dans /etc/init.d/ mais sur un mac dans Library / LaunchDaemons /), mais avec l'aide de: http://krypted.com/mac-security/apache2-umasks / découvert qu'apache a son propre script d'environnement spécifique.
$ sudo vim /usr/sbin/envvars
umask 002
Peut-être que d'autres démons ont des méthodes similaires, ce qui pourrait aider dans des cas spécifiques.