Acesso de leitura não-root a / dev / mem por membros do grupo kmem

0

Estou tentando ler a memória física como um usuário não raiz usando /dev/mem . Verificando as permissões de /dev/mem :

~/w/e/setup ❯❯❯ ls -lha /dev/ | grep mem
crw-r-----   1 root kmem        1,     1 Oct 15 09:29 mem

Pelo que entendi, um membro do grupo kmem deve poder ler a partir de /dev/mem . Eu verifico minhas associações ao grupo:

~/w/e/setup ❯❯❯ groups
docker users video uucp kmem wheel autologin

O usuário atual é membro do grupo kmem , portanto, tento ler um pouco de /dev/mem :

~/w/e/setup ❯❯❯ head /dev/mem | hexdump -C
head: cannot open '/dev/mem' for reading: Operation not permitted

Para minha surpresa, a operação não é permitida. A mesma operação funciona quando eu faço login como root.

Alguém pode explicar por que não consigo ler /dev/mem como membro do grupo kmem ? Como posso ativar o acesso somente leitura não-raiz a /dev/mem para um usuário específico?

    
por Peter Power 16.10.2018 / 15:04

1 resposta

1

/dev/mem só pode ser aberto por processos com CAP_SYS_RAWIO ; head , não sendo executado como root, não tem esse recurso. Você pode "consertar" isso usando setcap (mas só faça isso em uma cópia do binário ...):

cp /usr/bin/head .
sudo setcap cap_sys_rawio+ep head
./head /dev/mem | hexdump -C

Ativar o acesso a /dev/mem para um usuário específico envolve, portanto, a participação em grupos (para que o dispositivo possa ser aberto) e os recursos binários.

    
por 16.10.2018 / 15:17