Usar setcap
para dar permissões adicionais a um binário deve gravar a nova permissão em algum lugar, no armazenamento ou na memória, onde está armazenada?
Usar lsof
como está não funciona porque o processo desaparece muito rapidamente.
capabilities
setcap
Zulgrib
fonte
fonte
/usr/bin/sleep
e forneça os recursos para essa cópia.Respostas:
Permissões estendidas, como listas de controle de acesso definidas por
setfacl
e sinalizadores de capacidade definidas por,setcap
são armazenadas no mesmo local que as permissões tradicionais e definem [ug] id sinalizadores definidos porchmod
: no inode do arquivo.(Na verdade, eles podem ser armazenados em um bloco separado no disco, porque um inode tem um tamanho fixo que tem espaço para os bits de permissão tradicionais, mas não para as permissões estendidas potencialmente ilimitadas. Mas isso só importa em casos raros, como precisar cuidado que
setcap
pode ficar sem espaço em disco. Mas aindachmod
pode ficar sem espaço em disco em um sistema que usa desduplicação!)O GNU ls não exibe os atributos setcap de um arquivo. Você pode exibi-los com
getcap
. Você pode listar todos os atributos estendidos comgetfattr -d -m -
; o atributo setcap é chamadosecurity.capability
e é codificado em um formato binário quegetcap
decodifica para você.fonte
setcap define recursos de arquivo que são armazenados no atributo estendido do sistema de arquivos. Estes são explicados em
man 7 capabilities
:Você pode inspecionar os recursos de um processo em execução examinando os campos CapInh / CapPrm / CapEff em
/proc/PID/status
. Veja minha resposta em " Como definir recursos com o comando setcap? " Para obter uma explicação sobre como os recursos são aplicados ao processo no exec.fonte