Estou tentando executar o programa check_password_caps
do livro "Linux Programming Interface", 2010, capítulo 39 ( código fonte ). Ele simplesmente autentica um usuário, lendo o arquivo de sombra e usando recursos em vez da permissão set-user-id.
O livro instrui a incluir CAP_DAC_READ_SEARCH
no conjunto permitido:
$ sudo setcap "cap_dac_read_search=p" check_password_caps
root's password:
$ getcap check_password_caps
check_password_caps = cap_dac_read_search+p
$ ./check_password_caps
Username: mtk
Password:
Successfully authenticated: UID=1000
Quando eu passo pelas mesmas etapas, ele retorna, no shell, ERROR: raiseCap() failed
. O comando getcap
retorna corretamente, mostrando que a capacidade do programa está lá, mas quando eu inspeciono /proc/PID/status
antes de digitar meu nome de usuário, não há nada no campo CapPrm
:
...
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
...
O erro vem da função cap_set_proc
. Isso é realmente um erro em relação ao conjunto permitido, como eu suspeito, ou é outra coisa?
Obrigado antecipadamente.
Tags permissions capabilities