Les scripts et les applications s'exécutent une commande ou une série de commandes. Pour affecter des droits, vous définissez les attributs de sécurité, tels que ID de jeu ou les privilèges, pour chaque commande dans un profil de droits. Les applications peuvent vérifier les autorisations, le cas échéant.
Exécuter un script nécessitant des droits : Exécution d'un script shell avec des commandes privilégiées
Autoriser des applications prenant en charge les privilèges à être exécutées par des utilisateurs non root : Example 4–1
Autoriser des applications rootà être exécutées par des utilisateurs non root : Example 4–2
Vérifier les autorisations à l'aide d'un script : Example 4–3
Pour exécuter un script shell privilégié, vous ajoutez des privilèges au script et aux commandes du script. Ensuite, le profil de droits approprié doit contenir les commandes avec les privilèges qui leur sont attribués.
Avant de commencer
Vous devez prendre le rôle root. Pour plus d'informations, voir A l'aide de vos droits administratifs attribués.
#!/bin/pfsh # Copyright (c) 2013 by Oracle
Si le script est exécuté sans privilèges, l'option debug de la commande ppriv permet d'afficher les privilèges manquants.
% ppriv -eD script-full-path
Pour plus d'informations, voir Détermination des privilèges requis par un programme.
Ajoutez le script de shell et les commandes dans le script de shell, avec les attributs de sécurité requis au profil de droits. Voir Création d'un profil de droits.
Pour consulter des exemples, reportez-vous à la section Attribution de droits aux utilisateurs.
% pfexec script-full-path
% su - rolename Password: xxxxxxxx # script-full-path
Dans la mesure où une application ancienne ne prend pas en charge les privilèges, l'administrateur affecte l'attribut de sécurité euid=0 à l'exécutable de l'application dans un profil de droits. L'administrateur attribue ensuite le profil à un utilisateur de confiance.
# 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" jdoeExemple 4-2 Exécuter une application avec des droits attribués
Dans cet exemple, l'administrateur affecte le profil de droits de l'Example 5–7 à un utilisateur de confiance. Celui-ci doit fournir un mot de passe pour exécuter le script.
# usermod -K auth_profiles+="Site application" jdoeExemple 4-3 Recherche d'autorisations dans un script ou un programme
Pour vérifier des autorisations, écrivez un test basé sur la commande auths. Pour plus d'informations sur cette commande, reportez-vous à la page de manuel auths(1).
Par exemple, la ligne suivante vérifie si l'utilisateur dispose de l'autorisation fournie comme argument $1 :
if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then echo Auth granted else echo Auth denied fi
Un test plus complet doit comporter une routine recherchant des caractères génériques. Par exemple, pour tester si l'utilisateur dispose de l'autorisation solaris.system.date, vous devez rechercher les chaînes suivantes :
solaris.system.date
solaris.system.*
solaris.*
Si vous écrivez un programme, utilisez la fonction getauthattr() pour effectuer un test d'autorisation.