¿Cuándo se crearon estos usuarios?
En los casos de los que mencionó, se crearon en la instalación del sistema. Estas cuentas de usuario son convencionales, algunas datan de décadas. También están estandarizados. La base estándar de Linux los divide en:
- la requerida cuentas de usuario estándar,
root
, bin
, y daemon
; y
- el opcional de usuario estándar cuentas
adm
, lp
, sync
, shutdown
, halt
, mail
, news
, uucp
, operator
, man
, ynobody
Otras cuentas de usuario que se mencionan aquí - pulse
, avahi
, colord
, y Debian-exim
(a elegir uno de fichero de contraseñas de py4on) - nos llevan a la siguiente pregunta.
¿Cómo se relacionan estos con los nuevos programas que se instalan?
Las cuentas de usuario no estándar son creadas y destruidas por los "scripts de mantenimiento" para varios paquetes, ya que esos paquetes se instalan y purgan. Se creará una cuenta de usuario mediante la llamada postinst
secuencia de comandos del mantenedor del paquete , que se ejecuta getent
para ver si la cuenta de usuario ya existe, y useradd
si no es así. En teoría, sería eliminado por el llamado postrm
script de mantenedor del paquete , en ejecución userdel
.
En la práctica, las cuentas de usuario para paquetes no se eliminan. El wiki de Fedora (qv) explica que esto estaría lleno de dificultades. Consulte el error de Debian # 646175 para ver un ejemplo de esta lógica en acción, en la que se decide simplemente no eliminar la rabbitmq
cuenta de usuario cuando se purga el paquete, para resolver un problema con un demonio que continúa ejecutándose bajo los auspicios de esa cuenta.
¿Cómo comenzaron estos programas con diferentes UID?
Bajo Unix y Linux, un proceso que se ejecuta bajo los auspicios del superusuario puede cambiar su cuenta de usuario a otra y continuar ejecutando el mismo programa, pero no se permite lo contrario. (Uno debe usar el mecanismo set-UID).
El sistema de gestión de dæmon se ejecuta como superusuario. Sus datos de configuración especifican que los demonios particulares se ejecutan bajo los auspicios de cuentas de usuario particulares:
- Con el Sistema 5,
rc
el script /etc/init.d
utiliza una herramienta auxiliar como start-stop-daemon
y su --chuid
opción.
- Con un gestor de servicios daemontools familia, las
run
llamadas de guión setuidgid
, s6-setuidgid
, chpst
, o runuid
con el nombre de cuenta de usuario. Hay ejemplos de esto en /unix//a/179798/5132 que configuran la nagios
cuenta de usuario.
- Con el arranque, hay una
setuid
estrofa en un archivo de trabajo que especifica la cuenta de usuario. Esto no es particularmente fino, y a veces uno quiere lo que se describe en /superuser//a/723333/38062 .
- Con systemd hay una
User=
configuración en el archivo de la unidad de servicio, que especifica la cuenta de usuario.
Cuando el sistema de administración de daemon genera un proceso para ser el daemon, estos mecanismos eliminan los privilegios de superusuario para que el proceso de daemon continúe ejecutándose bajo los auspicios de la cuenta de usuario no privilegiada.
Hay una explicación bastante extensa de por qué se hace una buena gestión de demonios de esta manera. Pero no preguntaste por qué; solo cuándo, cómo y de dónde. ☺ Un breve resumen, por lo tanto:
Los sistemas operativos Unix y Linux aíslan los procesos que se ejecutan bajo los auspicios de diferentes cuentas de usuario entre sí. Históricamente, si uno podía hacerse cargo de un demonio que funcionaba como superusuario, podía hacer lo que quisiera. Un demonio que se ejecuta bajo los auspicios de una cuenta no privilegiada, por otro lado, solo puede acceder a archivos, directorios, dispositivos y procesos que esa cuenta no privilegiada puede. Un sistema de programas de daemon mutuamente no confiables que se ejecutan bajo los auspicios de diferentes cuentas de usuario y que no pueden acceder / controlar los archivos / directorios / procesos / dispositivos (internos, confiables) de los demás, es mucho más difícil de descifrar.
Otras lecturas