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.
Ejecutar una secuencia de comandos que necesita derechos: Cómo ejecutar una secuencia de comandos de shell con comandos con privilegios
Activar aplicaciones con privilegios para que sean ejecutadas por usuarios no -root: Example 4–1
Permitir que las aplicaciones que son propiedad de rootsean ejecutadas por usuarios no root: Example 4–2
Comprobar autorizaciones en una secuencia de comandos: Example 4–3
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.
#!/bin/pfsh # Copyright (c) 2013 by Oracle
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.
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.
Para ver ejemplos, consulte Asignación de derechos a usuarios.
% pfexec script-full-path
% su - rolename Password: xxxxxxxx # script-full-path
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" jdoeEjemplo 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" jdoeEjemplo 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.