Ao usar o setcap, onde a permissão é armazenada?

11

Usar setcappara 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 lsofcomo está não funciona porque o processo desaparece muito rapidamente.

Zulgrib
fonte
Use outro processo. Faça uma cópia /usr/bin/sleepe forneça os recursos para essa cópia.
Hauke ​​Laging 26/08/17

Respostas:

9

Permissões estendidas, como listas de controle de acesso definidas por setfacle sinalizadores de capacidade definidas por, setcapsão armazenadas no mesmo local que as permissões tradicionais e definem [ug] id sinalizadores definidos por chmod: 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 setcappode ficar sem espaço em disco. Mas ainda chmodpode 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 com getfattr -d -m -; o atributo setcap é chamado security.capabilitye é codificado em um formato binário que getcapdecodifica para você.

Gilles 'SO- parar de ser mau'
fonte
4

setcap define recursos de arquivo que são armazenados no atributo estendido do sistema de arquivos. Estes são explicados em man 7 capabilities:

Os conjuntos de recursos de arquivo são armazenados em um atributo estendido (consulte setxattr (2)) denominado security.capability.

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.

sebasth
fonte
capsh --decode = pode ser útil para obter dados legíveis por humanos.
Zulgrib