o comando “setcap” não inclui apropriadamente a capacidade no conjunto permitido

0

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.

    
por Márcio Jales 21.03.2018 / 18:31

0 respostas