Utilice este procedimiento de depuración cuando falle un comando o un proceso. Después de encontrar el primer error del privilegio, es posible que deba ejecutar el comando ppriv -eD command nuevamente para encontrar los requisitos de privilegios adicionales.
% 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
Se ha encontrado el nombre del número syscall en el archivo /etc/name_to_sysnum.
% grep 224 /etc/name_to_sysnum creat64 224
En este ejemplo, la llamada creat64() está fallando. Para que se realice correctamente, el proceso debe tener asignado el derecho a crear un archivo en el directorio /etc/acct/yearly.
El comando truss puede depurar el uso de privilegios en un shell común. Por ejemplo, el siguiente comando depura el proceso con errores touch:
% truss -t creat touch /etc/acct/yearly creat64("/etc/acct/yearly", 0666) Err#13 EACCES [file_dac_write ] touch: /etc/acct/yearly cannot create
Las interfaces ampliadas /proc informan el privilegio file_dac_write faltante después del código de error en la salida del comando truss.
Ejemplo 7-6 Utilización del comando ppriv para examinar el uso de privilegios en un shell de perfilEn este ejemplo, el usuario jdoe puede asumir el rol objadmin. El rol objadmin incluye el perfil de derechos de gestión de acceso a objetos. Este perfil de derechos permite al rol objadmin cambiar permisos en archivos que no son propiedad de objadmin.
En el fragmento siguiente, jdoe no puede cambiar los permisos en el archivo 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
Cuando jdoe asume el rol objadmin, se modifican los permisos en el archivo:
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.scriptEjemplo 7-7 Modificación de un archivo que es propiedad del usuario root
Este ejemplo ilustra la protección contra la escalada de privilegios. Para ver una explicación, consulte Escalada de privilegios y privilegios del núcleo. El archivo es propiedad del usuario root. El rol menos poderoso, el rol objadmin, necesita todos los privilegios para cambiar la propiedad del archivo, por lo que la operación no se ejecuta correctamente.
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