¿Es una buena práctica si todos los programas tienen su propia identificación de usuario? [cerrado]

3

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.

    
pregunta Cyker 14.12.2016 - 08:21
fuente

1 respuesta

4

La pregunta invierte el problema. El aislamiento del subsistema existe desde hace mucho tiempo en el sistema operativo del servidor a través de UID específicos. Incluso puede ir un paso más allá con máquinas virtuales o jails en sistemas BSD.

Para la parte de programas cliente, la forma de sistema operativo de escritorio es dividir el programa en dos partes, una interfaz humana que se ejecuta bajo la identificación utilizada y un demonio (o servicio en el mundo de Windows) que puede ejecutarse bajo su propia identificación ( piense en bases de datos como PostgreSQL, por ejemplo).

Por lo tanto, la seguridad está en manos del administrador del sistema, que puede elegir un patrón de seguridad adaptado a la sensibilidad de la aplicación / datos.

Pero en Android, no tiene acceso a una cuenta administrativa, por lo que el usuario final no puede configurar ningún patrón de seguridad. Por lo tanto, la solución fue declarar una identificación de usuario por parte del proveedor de la aplicación (¡nota por parte del proveedor, no por la aplicación!) Para limitar los daños causados por una aplicación a las aplicaciones del mismo desarrollador.

En el caso opuesto, hasta las versiones más recientes de Android, el usuario final no podía elegir a qué acceso podría acceder una aplicación: si el desarrollador había elegido solicitar acceso al directorio de contactos, el usuario no podía hacer nada en su contra, excepto que instalando la aplicación.

Entonces, mi respuesta es que una identificación de usuario por aplicación no tiene ningún medio para agregarse a los sistemas operativos normales porque ya está presente durante mucho tiempo (siempre que los desarrolladores la utilicen). Pero tal vez el sistema Android agregue funciones para permitir que el usuario final controle con más precisión qué aplicaciones pueden hacer

    
respondido por el Serge Ballesta 14.12.2016 - 11:52
fuente

Lea otras preguntas en las etiquetas