Sécurisation des utilisateurs et des processus dans Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Juillet 2014
 
 

Affecter des scripts et des droits aux applications

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.


Remarque -  Si une commande d'un script doit avoir le bit setuid ou setgid défini pour s'exécuter correctement, les attributs de sécurité du fichier exécutable du script et de la commande doivent être ajoutés dans un profil de droits. Si le script est exécuté dans un shell de profil, la commande s'exécute avec les attributs de sécurité.

Exécution d'un script shell avec des commandes privilégiées

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.

  1. Commencez le script avec /bin/pfsh, ou tout autre shell de profil, sur la première ligne.
    #!/bin/pfsh
    # Copyright (c) 2013 by Oracle
  2. En tant qu'utilisateur standard, déterminez les privilèges requis pas les commandes du script.

    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.

  3. Créez ou modifiez un profil de droits pour le script.

    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.

  4. Attribuez le profil de droits à un utilisateur ou à un rôle de confiance.

    Pour consulter des exemples, reportez-vous à la section Attribution de droits aux utilisateurs.

  5. Pour exécuter le script, effectuez l'une des opérations suivantes :
    • Si l'on vous a affecté le script en tant qu'utilisateur, ouvrez un shell de profil, puis exécutez le script.
      % pfexec script-full-path
    • Si vous disposez du script en tant que rôle, prenez le rôle correspondant et exécutez le script.
       % su - rolename
      Password: xxxxxxxx
      # script-full-path
Exemple 4-1  Affecter des attributs de sécurité à une ancienne application

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" jdoe
Exemple 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" jdoe
Exemple 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.