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
% 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
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.
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 profilDans 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.scriptExemple 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