Dar permisos de lectura al archivo del dispositivo del disco

Dar permisos de lectura al archivo del dispositivo del disco

Si para fines de evaluación comparativa uno tiene que usar hdparmo dddirectamente en el dispositivo, me pregunto cuál sería la forma correcta de hacerlo de manera segura.

Digamos que el disco en cuestión es /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

realmente no quieroescribirbajo sdaninguna circunstancia. Entonces, ¿sería recomendable hacerlo chmod o+r /dev/sda*y ejecutarlo ddcomo hdparmun usuario normal?

Respuesta1

chmod o+r /dev/sda*es bastante peligroso, ya que permite que cualquier programa lea todo el disco (incluidos, por ejemplo, los hashes de contraseña en /etc/shadow, si su partición raíz está activada sda).

Hay (al menos) dos formas de hacer esto de forma más segura:

  1. Agregue todos los usuarios que necesiten leer el disco al diskgrupo y ejecútelo chmod g-w /dev/sda*para evitar el acceso de escritura para ese grupo.
  2. Cambie el grupo de /dev/sda*a un grupo que solo contenga los usuarios que necesitan leer el disco, por ejemplo, chgrp my-benchmarkers /dev/sda*y evite el acceso de escritura para este grupo con chmod.

Tenga en cuenta que los cambios de grupo y permiso en los nodos del dispositivo /devson solo temporales hasta que se desconecte el dispositivo en cuestión o se reinicie la computadora.

Un problema podría ser que hdparmnecesite acceso de escritura para la mayor parte de su funcionalidad. Debes verificar si todo lo que deseas funciona con acceso de solo lectura.

EDITAR:Parece que hdparmno necesita acceso de escritura. Más bien necesita elCAP_SYS_RAWIO capacidadpara realizar la mayoría de ioctls. Puede utilizar setcap cap_sys_rawio+ep /sbin/hdparmpara otorgar esta capacidad a hdparm. Tenga en cuenta que esto permitealguienquién puede ejecutar hdparmy tiene al menos acceso de lectura a un archivo de dispositivo para hacer prácticamente cualquier cosa hdparmque pueda hacer en ese dispositivo, incluidos --write-sectortodos los demás comandos hdparm que la página de manual describe como "MUY PELIGROSO", "EXTREMADAMENTE PELIGROSO" o "EXCEPCIONALMENTE PELIGROSO". Los scripts contenedores podrían ser una mejor solución.

De lo contrario, debe otorgar acceso de escritura o escribir scripts contenedores que sus usuarios puedan ejecutar como root usando reglas sudo.

Respuesta2

Una posibilidad, aunque es posible que algunas implementaciones de /dev no lo admitan, sería utilizar una ACL. Ejemplo:

$ 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

Sin embargo, AFAIK hdparm -tdebe ejecutarse como root.

información relacionada