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
 
 

Asignación de derechos a aplicaciones y secuencias de comandos

Las aplicaciones y secuencias de comandos ejecutan un comando o una serie de comandos. Para asignar derechos, puede definir los atributos de seguridad, como los identificadores de juego o privilegios, para cada comando en un perfil de derechos. Las aplicaciones antiguas pueden comprobar autorizaciones, si corresponde.


Notas -  Si un comando de una secuencia de comandos necesita tener el conjunto de bits setuid o setgid para ejecutarse correctamente, el archivo ejecutable de la secuencia y el comando deben tener los atributos de seguridad agregados en un perfil de derechos. Cuando la secuencia de comandos se ejecuta en un shell de perfil, el comando se ejecuta con los atributos de seguridad.

Cómo ejecutar una secuencia de comandos de shell con comandos con privilegios

Para ejecutar una secuencia de comandos de shell con privilegios se agregan privilegios a la secuencia de comandos y a los comandos en la secuencia de comandos. A continuación, el perfil de derechos adecuado debe contener los comandos con privilegios asignados a ellos.

Antes de empezar

Debe asumir el rol root. Para obtener más información, consulte Uso de sus derechos administrativos asignados.

  1. Cree la secuencia de comandos con /bin/pfsh, o cualquier otro shell de perfil en la primera línea.
    #!/bin/pfsh
    # Copyright (c) 2013 by Oracle
  2. Como usuario común, determine los privilegios que necesitan los comandos en la secuencia de comandos.

    Mediante la ejecución de la secuencia de comandos sin privilegios, la opción debug para el comando ppriv muestra los privilegios que faltan.

    % ppriv -eD script-full-path

    Para obtener más información, consulte Cómo determinar los privilegios que necesita un programa.

  3. Cree o modifique un perfil de derechos para la secuencia de comandos.

    Agregue la secuencia de comandos de shell y los comandos en la secuencia de comandos de shell con sus atributos de seguridad necesarios al perfil de derechos. Consulte Cómo crear un perfil de derechos.

  4. Asigne el perfil de derechos a un usuario o rol confiable.

    Para ver ejemplos, consulte Asignación de derechos a usuarios.

  5. Para ejecutar la secuencia de comandos, realice una de las siguientes acciones:
    • Si se le asigna la secuencia de comandos como usuario, abra un shell de perfil y ejecute la secuencia de comandos.
      % pfexec script-full-path
    • Si se le asigna la secuencia de comandos como un rol, asuma el rol y ejecute la secuencia de comandos.
       % su - rolename
      Password: xxxxxxxx
      # script-full-path
Ejemplo 4-1  Asignación de los atributos de seguridad a una aplicación antigua

Porque no es una aplicación antigua, el administrador asigna el atributo de seguridad euid=0 para el ejecutable de la aplicación en un perfil de derechos. Luego, el administrador lo asigna a un usuario de confianza.

# profiles -p LegacyApp
profiles:LegacyApp> set desc="Legacy application"
profiles:LegacyApp> add cmd=/opt/legacy-app/bin/legacy-cmd
profiles:LegacyApp:legacy-cmd> set euid=0
profiles:LegacyApp:legacy-cmd> end
profiles:LegacyApp> exit
# profiles -p LegacyApp 'select cmd=/opt/legacy-app/bin/legacy-cmd;info;end'
	id=/opt/legacy-app/bin/legacy-cmd
	euid=0
# usermod -K profiles+="Legacy application" jdoe
Ejemplo 4-2  Ejecución de una aplicación con derechos asignados

En este ejemplo, el administrador asigna el perfil de derechos Example 5–7 a un usuario confiable. El usuario debe proporcionar una contraseña al ejecutar la secuencia de comandos.

# usermod -K auth_profiles+="Site application" jdoe
Ejemplo 4-3  Comprobación de autorizaciones en una secuencia de comandos o un programa

Para comprobar las autorizaciones, escriba una prueba que está basada en el comando auths. Para obtener información detallada sobre este comando, consulte la página del comando man auths(1).

Por ejemplo, la siguiente línea verifica si el usuario tiene la autorización que se proporciona como argumento $1:

if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then
        echo Auth granted
else
        echo Auth denied
fi

    Una prueba más completa incluye una lógica que compruebe el uso de caracteres comodín. Por ejemplo, para verificar si el usuario tiene la autorización solaris.system.date, debe comprobar las siguientes cadenas:

  • solaris.system.date

  • solaris.system.*

  • solaris.*

Si está escribiendo un programa, utilice la función getauthattr() para comprobar la autorización.