Normalmente, cada usuario físico en un sistema tiene una ID, y se ejecuta un proceso en ejecución como el usuario que lo inicia. Esto significa que el proceso puede acceder a todos los archivos del usuario, incluso aquellos que no están destinados a este programa específico. Por ejemplo, si empiezas a ejecutar Firefox, entonces tendrá acceso a los archivos de configuración de Chrome y viceversa. Pero como puede ver, esto es irracional porque cualquier navegador funciona correctamente sin acceso a los archivos de configuración de otra persona.
Esto también es peligroso si considera que un programa malintencionado que un usuario inicia es suficiente para modificar sigilosamente todos sus archivos, además de enviar correos electrónicos a otras personas como usuario, acceder a cuentas web si el usuario almacena una cookie y muchos otros posibles comportamientos indeseables. La causa principal es que el proceso se ejecuta como usuario, no como sí mismo.
El problema se ha remediado parcialmente en los sistemas Linux de productos básicos especificando UID y GID al iniciar un proceso. Si bien esto es cierto para muchos demonios del sistema, no es el caso típico de los programas de cliente. Muchas utilidades como browers, clientes FTP, editores de texto se ejecutan como usuario pero no como su propio UID.
El sistema operativo que busca una solución a nivel de sistema operativo es Android, en el que cada aplicación tiene su propia ID y accede a los datos del usuario a través de permisos. Añade algo de complejidad pero evita muchas posibilidades de ataque. Si esto se considera una buena práctica, entonces ¿por qué esta función no se traslada a Linux de escritorio (o lo tiene)? con una implementación más amplia de systemd
, los usuarios ahora tienen un mejor control de los procesos se ejecutan y no debería haber dificultades técnicas para implementar dicha función.