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

Quitter la vue de l'impression

Mis à jour : Juillet 2014
 
 

Détermination des privilèges requis par un programme

Utilisez cette procédure de débogage lorsqu'une commande ou un processus est défectueux. Après avoir identifié le premier privilège appliquée, puis le réparer, il peut être nécessaire d'exécuter la commande à nouveau pour trouver d'autres des exigences en matière de privilèges. ppriv -eD command

  1. Saisissez la commande ayant échoué en tant qu'argument de la commande de débogage ppriv.
    % ppriv -eD touch /etc/acct/yearly
    
    touch[5245]: missing privilege "file_dac_write"
         (euid = 130, syscall = 224) needed at zfs_zaccess+0x258
    touch: cannot create /etc/acct/yearly: Permission denied 
  2. Utilisez le numéro syscall à partir de la sortie de débogage pour déterminer l'appel système défaillant.

    Pour rechercher le nom d'le numéro syscall dans le fichier. /etc/name_to_sysnum

    % grep 224 /etc/name_to_sysnum
    
    creat64                 224

    Creat64 dans cet exemple, l'appel est défectueux. () Pour s'exécuter correctement, le droit de créer un fichier dans le répertoire /etc/acct/yearly doit être affecté au processus.

Exemple 7-5  Utilisation de la commande truss pour examiner l'utilisation des privilèges

La commande truss peut déboguer l'utilisation des privilèges dans un shell standard. Par exemple, la commande suivante débogue le processus touch défaillant :

% truss -t creat touch /etc/acct/yearly

creat64("/etc/acct/yearly", 0666)            
                       Err#13 EACCES [file_dac_write
]
touch: /etc/acct/yearly cannot create

Les interfaces /proc étendues signalent les privilèges file_dac_write manquants après le code d'erreur dans la sortie truss.

Exemple 7-6  Utilisation de la commande ppriv pour l'examen de l'utilisation des privilèges dans un shell de profil

Dans cet exemple, l'utilisateur jdoe peut endosser le rôle objadmin. Le rôle objadmin comprend le profil de droits Object Access Management (gestion de l'accès aux objets). Ce profil de droits permet au rôle objadmin de modifier les autorisations pour les fichiers dont objadmin n'est pas propriétaire.

Dans l'exemple ci-dessous, jdoe ne parvient pas à changer les autorisations pour le fichier useful.script :

jdoe% ls -l useful.script

-rw-r--r--  1 aloe  staff  2303 Apr 10 10:10 useful.script
jdoe% 
chown objadmin useful.script

chown: useful.script: Not owner
jdoe% 
ppriv -eD chown objadmin useful.script

chown[11444]: missing privilege "file_chown" 
            (euid = 130, syscall = 16) needed at zfs_zaccess+0x258
chown: useful.script: Not owner

Lorsque jdoe endosse le rôle objadmin, les autorisations pour le fichier sont modifiées :

jdoe% su - objadmin
Password: xxxxxxxx

# ls -l useful.script
-rw-r--r--  1 aloe  staff  2303 Apr 10 10:10 useful.script

# chown objadmin useful.script
# ls -l useful.script
-rw-r--r--  1 objadmin  staff  2303 Apr 10 10:10 useful.script
# chgrp admin useful.script

# ls -l objadmin.script
-rw-r--r--  1 objadmin  admin  2303 Apr 10 10:11 useful.script
Exemple 7-7  Modification d'un fichier appartenant à l'utilisateur root

Cet exemple illustre les protections contre l'escalade des privilèges. Pour plus de détails, reportez-vous à Privilèges Privilege Escalation et noyau. Escalade de privilèges et privilèges de noyau Le fichier appartient à l'utilisateur root. Le rôle le moins puissant, objadmin, a besoin de tous les privilèges pour modifier la propriété du fichier, de sorte que l'opération échoue.

jdoe% su - objadmin
Password: xxxxxxxx

# cd /etc; ls -l system
-rw-r--r--  1 root  sys   1883 Oct 10 10:20 system

# chown objadmin system
chown: system: Not owner
# ppriv -eD chown objadmin system
chown[11481]: missing privilege "ALL" 
     (euid = 101, syscall = 16) needed at zfs_zaccess+0x258
chown: system: Not owner