Hay tres formas normales de configurar el umask de un usuario.
- Establecer
UMASK
en/etc/login.defs
- Agregar
pam_umask.so
a su configuración PAM en/etc/pam.d
- Ajústelo en los archivos de inicio de shell, p.
/etc/profile
No hay diferencia entre los usuarios del sistema y los usuarios normales en este sentido.
Pero asumo que estás tratando de iniciar un demonio con un umask personalizado.
El problema es:todas las opciones anteriores suceden cuando un usuario inicia sesión. Si está ejecutando un demonio, nunca inicia sesión. Se inicia con init, luego se ejecuta como root o llama a setuid
para ejecutar como el usuario del sistema que especifique.
Sus opciones principales son:
- poner
umask
en su script de inicio (haga ungrep umask /etc/init.d/*
para un ejemplo) - configure init para iniciar el programa con un umask personalizado (systemd.exec upstart umask)
- si usa
start-stop-daemon
, pasa la opción umask - modificar el programa en sí mismo para llamar a la función umask o llamar al sistema
Los usuarios del sistema se diferencian de los "normales" en tres formas:caducidad de la contraseña, directorio de inicio (los usuarios del sistema no tienen uno) y UID (los usuarios del sistema suelen estar por debajo de un umbral arbitrario).
En el caso general, casi no tienes suerte. Puede usar PAM para configurar el umask, pero PAM selecciona comportamientos basados en otras cosas además de estas tres diferencias.
En otras palabras, no puede hacer que PAM distinga entre los usuarios del 'sistema' y los 'no del sistema'. Esto te deja con dos opciones:
-
O usa PAM para configurar el umask para todos (por ejemplo, marque
/etc/login.defs
), luego configure explícitamente el umask para usuarios que no sean del sistema en/etc/bash.bashrc
(o similar); -
O escribe su propio módulo PAM para hacer esto. Creo que esto sería bien recibido por muchas personas, ya que configurar el umask es una solicitud común.
Por favor, tome esta respuesta con una generosa pizca de sal. Este tipo de solicitud es bastante común, y no me sorprendería si ahora existe una forma mejor/adecuada.