GNU/Linux >> Tutoriels Linux >  >> Linux

Comment définir umask pour un utilisateur système ?

Il existe trois manières normales de définir le umask d'un utilisateur.

  1. Définir UMASK en /etc/login.defs
  2. Ajouter pam_umask.so à votre configuration PAM en /etc/pam.d
  3. 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 :

  1. mettre umask dans votre script d'initialisation (faites un grep umask /etc/init.d/* pour un exemple)
  2. configurer init pour démarrer le programme avec un umask personnalisé (systemd.exec upstart umask)
  3. si vous utilisez start-stop-daemon , passez l'option umask
  4. 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.


Linux
  1. CentOS / RHEL :Comment définir la prison chroot pour vsftp uniquement pour des utilisateurs spécifiques

  2. Comment définir l'ID de processus sous Linux pour un programme spécifique

  3. Comment définir JAVA_HOME sous Linux pour tous les utilisateurs

  4. Comment installer un module pour tous les utilisateurs avec pip sous linux ?

  5. Comment définir PATH pour tous les utilisateurs dans Debian ?

Comment configurer l'authentification à deux facteurs pour cPanel

Comment configurer le démarrage PXE pour le matériel UEFI

Comment configurer Tls pour Postfix sur Ubuntu ?

Comment configurer un killswitch Linux pour les VPN

Comment définir le chemin pour les commandes sudo

Comment définir umask par défaut pour le servlet Webdav Tomcat ?