O dd requer CAP_SYS_RAWIO?

1

Há pouco tempo, descobri de isso que há costumava ser uma maneira de desativar semi-permanentemente a capacidade do root de modificar imutáveis & sinalizadores somente de anexação ( lcap CAP_LINUX_IMMUTABLE ) ou executar operações de leitura / gravação brutas ( lcap CAP_SYS_RAWIO ). Eu queria tentar isso, mas desde que o conjunto delimitador de recursos de todo o sistema foi removido, eu atualizei o kernel do Linux de tal maneira que os comandos que requerem qualquer recurso são sempre negados. Como tal, eu assumi que isso tornaria dd inútil como uma maneira de contornar e desabilitar essas restrições, pois lcap CAP_SYS_RAWIO "não permite que o root grave no disco bruto ou na memória bruta".

Para ver se minhas modificações foram bem-sucedidas, corri sudo dd if=/dev/sda of=mbr.img bs=512 count=1 . A operação foi bem-sucedida, então presumi que isso fosse permitido porque era apenas uma operação de leitura. Então, eu corri sudo dd if=/dev/null of=/dev/sda bs=512 count=1 , mas, para meu espanto, isso foi bem sucedido também. Eu verifiquei se eu tinha perdido algum teste de código para CAP_SYS_RAWIO no kernel do Linux, descobri que eu tinha, modifiquei conforme necessário, reconstruí-lo, reinstalá-lo e tentei novamente. Mais uma vez, sudo dd if=/dev/null of=/dev/sda bs=512 count=1 foi bem sucedido.

Estou curioso em saber agora se dd não exige CAP_SYS_RAWIO ou se não é "I / O bruto", para o caso de não ter perdido mais nada.

    
por Melab 20.11.2014 / 04:21

1 resposta

1

man 7 capabilities lista as coisas que CAP_SYS_RAWIO controla, e ler e gravar arquivos de dispositivo de bloco não é um deles. dd faz seu trabalho usando as chamadas normais do sistema read e write ; Ele possui recursos sofisticados para escolher o tamanho dos buffers de entrada e saída e transformar os dados durante a cópia, mas não faz nada de especial para a própria E / S.

    
por 20.11.2014 / 04:52