¿Es posible configurar umask
para un usuario del sistema (creado con useradd --system username
)?
Respuesta1
Hay tres formas normales de configurar la umask de un usuario.
- Establecer
UMASK
en/etc/login.defs
- Agregue
pam_umask.so
a su configuración PAM en/etc/pam.d
- Configúrelo en los archivos de inicio del shell, por ejemplo
/etc/profile
No hay diferencia entre los usuarios del sistema y los usuarios normales a este respecto.
Pero supongo que estás intentando iniciar un demonio con una máscara de usuario personalizada.
El problema es: todas las opciones anteriores ocurren 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 setuid
para ejecutar como el usuario del sistema que usted especifique. .
Tus principales opciones son:
- coloque
umask
su script de inicio (haga ungrep umask /etc/init.d/*
ejemplo) - configure init para iniciar el programa con una máscara de usuario personalizada (systemd.exec máscara de usuario advenediza)
- si lo usa
start-stop-daemon
, pase elopción de máscara - modificar el programa en sí para llamar almáscarafunción o llamada al sistema
Respuesta2
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 algún umbral arbitrario).
En el caso general, casi no tienes suerte. Puede usar PAM para configurar la umask, pero PAM selecciona comportamientos basándose en cosas distintas a estas tres diferencias.
En otras palabras, no se puede lograr que PAM distinga entre usuarios del "sistema" y "que no pertenecen al sistema". Esto te deja con dos opciones:
O usa PAM para configurar la umask para todos (por ejemplo, registrarse
/etc/login.defs
), luego configura explícitamente la umask para usuarios que no pertenecen al sistema en/etc/bash.bashrc
(o similar);O escribe tu propio módulo PAM para hacer esto. Creo que muchas personas agradecerían esto, ya que configurar la umask es una solicitud común.
Tome esta respuesta con una generosa pizca de sal. Este tipo de solicitud es bastante común y no me sorprendería que ahora exista una forma mejor o más adecuada.
Respuesta3
Como sugiere @Mikel, si está intentando configurar una cuenta del sistema que es un demonio, intente configurar el demonio mismo.
Llegué a esta pregunta buscando cómo configurar la umask para la cuenta _www en MacOS. Si bien esto es difícil como sugieren las respuestas anteriores, descubrí que podía resolverlo configurando el servicio Apache como (en este caso) el usuario == un demonio.
Curiosamente no pude encontrar el script de inicio (normalmente en /etc/init.d/ pero en una 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 tengan métodos similares, lo que podría ayudar en casos específicos.