Dando permissões de leitura ao arquivo do dispositivo do disco

Dando permissões de leitura ao arquivo do dispositivo do disco

Se para fins de benchmarking for necessário usar hdparmou dddiretamente no dispositivo, pergunto-me qual seria a maneira correta de fazer isso com segurança.

Digamos que o disco em questão seja /dev/sda:

root@igloo:~# ls -l /dev/sd*
brw-rw---- 1 root disk 8, 0 May 29 08:23 /dev/sda
brw-rw---- 1 root disk 8, 1 May 29 08:23 /dev/sda1

Eu realmente não queroescreverem sdaqualquer circunstância. Então, seria aconselhável fazê-lo chmod o+r /dev/sda*e executá dd- hdparmlo como um usuário normal?

Responder1

chmod o+r /dev/sda*é bastante perigoso, pois permite que qualquer programa leia todo o seu disco (incluindo, por exemplo, hashes de senha em /etc/shadow, se sua partição raiz estiver ativada sda)!

Existem (pelo menos) duas maneiras de fazer isso com mais segurança:

  1. Adicione todos os usuários que precisam ler o disco ao diskgrupo e execute chmod g-w /dev/sda*para impedir o acesso de gravação para esse grupo.
  2. Mude o grupo /dev/sda*para um grupo que contenha apenas os usuários que precisam ler o disco, por exemplo, chgrp my-benchmarkers /dev/sda*e evite o acesso de gravação para este grupo com chmod.

Observe que as alterações de grupo e permissão nos nós do dispositivo /devsão apenas temporárias até que o dispositivo em questão seja desconectado ou o computador seja reinicializado.

Um problema pode ser a hdparmnecessidade de acesso de gravação para a maior parte de sua funcionalidade. Você deve verificar se tudo o que deseja funciona com acesso somente leitura.

EDITAR:Parece que hdparmnão precisa de acesso de gravação. Prefere antes oCAP_SYS_RAWIO capacidadepara executar a maioria dos ioctls. Você pode usar setcap cap_sys_rawio+ep /sbin/hdparmpara fornecer esse recurso ao hdparm. Observe que isso permitequalquer umquem pode executar hdparme tem pelo menos acesso de leitura a um arquivo de dispositivo para fazer praticamente qualquer coisa hdparmpode fazer nesse dispositivo, incluindo --write-sectortodos os outros comandos hdparm que a página man descreve como "MUITO PERIGOSO", "EXTREMAMENTE PERIGOSO" ou "EXCEPCIONALMENTE PERIGOSO". Os scripts wrapper podem ser uma solução melhor.

Caso contrário, você terá que conceder acesso de gravação ou escrever scripts wrapper que possam ser executados por seus usuários como root usando regras sudo.

Responder2

Uma possibilidade, embora algumas implantações de /dev possam não suportá-lo, seria usar uma ACL. Exemplo:

$ dd if=/dev/sda bs=1M count=200 of=/dev/null
dd: failed to open '/dev/sda': Permission denied
$ sudo setfacl -m u:youruser:r /dev/sd*
$ dd if=/dev/sda bs=1M count=200 of=/dev/null
200+0 records in
200+0 records out
209715200 bytes (210 MB, 200 MiB) copied, 0.0335544 s, 6.3 GB/s

AFAIK hdparm -tprecisa ser executado como root.

informação relacionada