La práctica no es crear un usuario y grupo por aplicación, sino por servicio. Es decir, los programas que ejecuta un usuario local no necesitan instalarse como un usuario que no sea root. Son demonios , programas que se ejecutan en segundo plano y que ejecutan solicitudes que llegan a través de la red u otros medios de comunicación, que deberían ejecutarse como un usuario dedicado.
El daemon se ejecuta como un usuario dedicado, de modo que si se comporta mal (debido a un error, probablemente provocado por un atacante), el daño que puede hacer es limitado: solo los archivos de datos del daemon se ven afectados (a menos que el atacante logre encontrar un agujero raíz local , que puede suceder). Por ejemplo, el daemon de la base de datos se mysqldejecuta como un usuario y grupo dedicado mysql:mysqly los archivos de datos de la base de datos ( /var/lib/mysql/*) pertenecen mysql:mysql.
Tenga en cuenta que el ejecutable del daemon y otros datos estáticos y archivos de configuración que se usan pero que no deben ser modificados por el daemon no deben pertenecer al usuario dedicado; deben ser propiedad de root:root, como la mayoría de los archivos de programa y configuración El mysqldproceso no tiene ninguna sobreescritura de negocio /usr/sbin/mysqldo /etc/mysql/my.cnf, por lo que estos archivos no deben pertenecer al mysqlusuario o ser modificable por el mysqlusuario o el mysqlgrupo. Si algunos archivos necesitan ser legibles solo por el demonio y el administrador, deben ser propiedad del usuario root y del grupo dedicado, y deben tener el modo 0640 ( rw-r-----).
Una categoría especial de ejecutables que no pueden ser propiedad de los root:rootprogramas son invocados por un usuario pero que necesitan ejecutarse con privilegios adicionales. Estos ejecutables deben ser setuid root si necesitan ejecutarse (al menos en parte) como root; entonces el ejecutable debe tener el modo 4755 ( rwsr-xr-x). Si el programa necesita privilegios adicionales pero no como root, entonces el programa debe establecerse de manera fija, de modo que los privilegios adicionales provengan de un grupo y no de un usuario. El ejecutable tiene el modo 2755 ( rwxr-sr-x). Las razones son dobles:
- No se debe permitir que el ejecutable se modifique a sí mismo, de modo que si un usuario logra explotar una vulnerabilidad, podría modificar los archivos de datos utilizados por el programa pero no inyectar un troyano en el ejecutable para atacar a otros usuarios que ejecutan el programa. .
- El archivo de datos del ejecutable pertenece al grupo. Un programa setuid tendría que cambiar entre el usuario real (el usuario que invocó el programa) para interactuar con el usuario y con el usuario efectivo (el usuario con el que se ejecuta el programa) para acceder a sus archivos de datos privados (la razón para ello tener privilegios adicionales). Además, un programa setgid puede segregar los datos por usuario a los que solo puede acceder el grupo (por ejemplo, almacenando archivos propiedad del usuario en un directorio al que solo pueda acceder el usuario root y el grupo del programa).