Respuestas:
Hay tres formas normales de configurar la máscara de usuario de un usuario.
UMASK
en/etc/login.defs
pam_umask.so
a su configuración PAM en/etc/pam.d
/etc/profile
No hay diferencia entre los usuarios del sistema y los usuarios normales a este respecto.
¿Pero supongo que estás tratando de iniciar un demonio con una máscara personalizada?
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 por init, luego se ejecuta como root o llama setuid
a ejecutarse como el usuario del sistema que especifique .
Sus principales opciones son:
umask
en su script de inicio (haga un grep umask /etc/init.d/*
para un ejemplo)start-stop-daemon
, pase la opción umaskLos usuarios del sistema difieren 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 generalmente están por debajo de un umbral arbitrario).
En el caso general, casi no tienes suerte. Puede usar PAM para configurar la 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 usuarios de 'sistema' y 'no-sistema'. Esto te deja con dos opciones:
Puede usar PAM para configurar la máscara de usuario para todos (por ejemplo, registrarse /etc/login.defs
), luego configurar explícitamente la máscara de usuario para usuarios que no son del sistema /etc/bash.bashrc
(o similar);
O puede escribir su propio módulo PAM para hacer esto. Creo que esto sería bien recibido por muchas personas, ya que configurar 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.
pam_umask
, pero tal vez no pam_succeed_if
. Con pam_succeed_if , puede hacer que cualquier otro módulo se aplique solo a un usuario o grupo dado. Pero todavía no creo que PAM ayude aquí.
Como sugiere @Mikel, si está intentando configurar una cuenta del sistema que es un demonio, intente configurar el mismo demonio.
Llegué a esta pregunta buscando cómo configurar la umask para la cuenta _www en MacOS. Si bien esto es difícil como lo sugieren las respuestas anteriores, descubrí que podía resolverlo configurando el servicio apache como (en este caso) el usuario == un demonio.
Extrañamente no pude encontrar el script de inicio (normalmente en /etc/init.d/ pero en un mac en Library / LaunchDaemons /), pero con la ayuda de: http://krypted.com/mac-security/apache2-umasks / descubrí que apache tiene su propio script de entorno específico.
$ sudo vim /usr/sbin/envvars
umask 002
Posiblemente otros demonios tienen métodos similares, lo que podría ayudar en casos específicos.