Protección de los usuarios y los procesos en Oracle® Solaris 11.2

Salir de la Vista de impresión

Actualización: Julio de 2014
 
 

Cómo se utilizan los privilegios

Los privilegios están integrados en Oracle Solaris. En esta sección se describe Oracle Solaris utiliza privilegios con los dispositivos, en la gestión de recursos y con aplicaciones antiguas.

Cómo obtienen privilegios los procesos

Los procesos pueden heredar privilegios o recibir una asignación de privilegios. Un proceso hereda privilegios de su proceso principal. En el inicio de sesión, el conjunto heredable inicial de privilegios del usuario determina qué privilegios están disponibles para los procesos del usuario. Todos los procesos secundarios del inicio de sesión inicial del usuario heredan ese conjunto.

También puede asignar directamente privilegios a programas, usuarios, roles y recursos específicos. Cuando un programa requiere privilegios, puede asignar los privilegios al archivo ejecutable del programa en un perfil de derechos. A los usuarios o roles que tienen permiso para ejecutar el programa se les asigna el perfil que incluye el programa. En el inicio de sesión o cuando se abre un shell de perfil, el programa se ejecuta con privilegios al escribir el archivo ejecutable del programa en el shell de perfil. Por ejemplo, un rol que incluya el perfil de gestión de acceso a objetos, puede ejecutar el comando chmod con el privilegio file_chown y, por lo tanto, puede cambiar la propiedad de un archivo que el rol no posee.

Cuando un rol o un usuario ejecutan un programa al que se asignó directamente un privilegio adicional, el privilegio asignado se agrega al conjunto heredable del rol o el usuario. Los procesos secundarios del programa al que se asignaron privilegios heredan los privilegios del proceso principal. Si el proceso secundario requiere más privilegios que el proceso principal, esos privilegios se deben asignar directamente al proceso secundario.

Los programas que están codificados para usar los privilegios se denominan programas reconocimiento de privilegios. Un programa para privilegios activa y desactiva el uso de privilegios durante la ejecución del programa. Para lograr un funcionamiento correcto en un entorno de producción, se deben asignar al programa los privilegios que el programa activa y desactiva. Antes de realizar un programa disponible para privilegios, puede asignar para el ejecutable sólo los privilegios que necesita el programa. Luego, prueba el programa para ver si el programa realiza sus tareas correctamente. También comprueba que el programa no abuse de su uso de privilegios.

Para ver ejemplos de código para privilegios, consulte el Capítulo 2, Developing Privileged Applications de Developer’s Guide to Oracle Solaris 11 Security . Para asignar privilegios a un programa que requiere privilegios, consulte Example 4–1 y Example 5–7.

Privilegios y dispositivos

En el modelo de derechos, los privilegios protegen las interfaces del sistema que, en el modelo de superusuario, están protegidas sólo por los permisos de archivos. En un sistema con privilegios, los permisos de archivo son demasiado débiles para proteger las interfaces. Un privilegio como proc_owner puede anular los permisos de archivo y, a continuación, proporcionar acceso completo a todo el sistema.

Por lo tanto, en Oracle Solaris, la propiedad del directorio de dispositivos no es suficiente para abrir un dispositivo. Por ejemplo, a los miembros del grupo sys ya no se les permite abrir automáticamente el dispositivo /dev/ip. Los permisos de archivo en /dev/ip son 0666, pero también se requiere el privilegio net_rawaccess para abrir el dispositivo.

Debido a que la política de dispositivos se controla mediante privilegios, se obtiene más flexibilidad al otorgar permiso para abrir dispositivos. Los requisitos de los privilegios son configurables para la política del dispositivo y para el propio controlador. Puede configurar los requisitos de los privilegios al instalar, agregar o actualizar un controlador de dispositivos.

Para obtener más información, consulte las páginas del comando man add_drv(1M), devfsadm(1M), getdevpolicy(1M) y update_drv(1M).

Privilegios y gestión de recursos

En Oracle Solaris, los controles de recursos project.max-locked-memory y zone.max-locked-memory se pueden utilizar para limitar el consumo de memoria de los procesos que tienen asignado el privilegio PRIV_PROC_LOCK_MEMORY. Este privilegio permite a un proceso bloquear páginas en la memoria física.

Si asigna el privilegio PRIV_PROC_LOCK_MEMORY a un perfil de derechos, puede otorgar a los procesos que tienen este privilegio la posibilidad de bloquear toda la memoria. Como protección, defina un control de recursos para evitar que el usuario del privilegio bloquee toda la memoria. Para los procesos con privilegios que se ejecutan en una zona no global, defina el control de recursos zone.max-locked-memory. Para los procesos con privilegios que se ejecutan en un sistema, cree un proyecto y define el control de recursos project.max-locked-memory. Para obtener información acerca de estos recursos de control, controle Capítulo 6, Acerca de los controles de recursos de Administración de la gestión de recursos en Oracle Solaris 11.2 y Capítulo 2, Descripción general de la configuración de zonas no globales de Introducción a Zonas de Oracle Solaris .

Aplicaciones antiguas y uso de privilegios

Para adaptarse a las aplicaciones antiguas, la implementación de privilegios funciona con el modelo de superusuario y el modelo de derechos. El núcleo realiza automáticamente un seguimiento del indicador PRIV_AWARE, que señala que un programa se ha diseñado para trabajar con privilegios. Piense en un proceso secundario que no reconoce privilegios. Los privilegios que se heredaron del proceso principal están disponibles en el conjunto permitido y el conjunto vigente del proceso secundario. Si el proceso secundario define un UID en 0, es posible que el proceso secundario no tenga derechos completos de superusuario. El conjunto vigente y el conjunto permitido del proceso están restringidos a los privilegios del conjunto límite del proceso secundario. Por lo tanto, el conjunto límite de un proceso que reconoce privilegios restringe los privilegios raíz de los procesos secundarios que no reconocen privilegios.

Uso del privilegio de depuración

Oracle Solaris proporciona herramientas para depurar errores en privilegios. El comando ppriv y el comando truss proporcionan los resultados de la depuración. Para ver ejemplos, consulte la página del comando man ppriv(1). Para ver ejemplos, consulte Resolución de problemas de derechos. También puede utilizar el comando dtrace. Para obtener más información, consulte la página man dtrace(1M) y Oracle Solaris 11.2 Dynamic Tracing Guide .