Me pregunto si hay alguna manera de evitar que ciertos dispositivos se conviertan en el archivo de salida del ddcomando y el objetivo del fdiskcomando. Actualmente estoy usando las dos operaciones para configurar escribir un gestor de arranque, kernel y sistema de archivos raíz en una tarjeta SD, que aparece como /dev/sdd. Siempre estoy un poco ansioso de que me mezclo sddcon sdb, o sdaya que las letras Ay Destán cerca en el teclado, y me gustaría encontrar una manera de prevenir los comandos con este formato:
dd if=/dev/sd[a-zA-Z0-9]* of=/dev/sd[ab]
o
fdisk /dev/sd[ab]

Respuestas:
Puede intentar escribir una regla udev para dar a los HDD suplementarios nombres suficientemente únicos.
Otra idea: cada vez que puede expresar un requisito de seguridad como "No es quién lo está haciendo, sino cómo lo están haciendo", está hablando de la aplicación de tipo, y en la mayoría de las distribuciones de Linux, TE se realiza a nivel MAC. La mayor parte de mi experiencia MAC es con "SELinux"
No puede bloquearlo en el nivel DAC; de lo contrario, no podría realizar E / S en el dispositivo (no necesariamente una falla de DAC como modelo de seguridad, es solo que la política actual de DAC se basa únicamente en la identidad, por lo que todos los programas ejecutar bajo una identidad particular obtener derechos idénticos sin posible expresión administrativa adicional). Se puede bloquearlo en el nivel MAC para que los componentes del espacio de usuario normal no puedan hacer nada con el archivo de bloqueo, pero sus utilidades raíz y ciertas partes de la plataforma sí. En Fedora, este ya es el caso de los dispositivos de bloque que se muestran con el tipo SELinux de
fixed_disk_device_ty grub quebootloader_exec_tven el siguiente ejemplo:Mientras que
ddtiene una etiqueta bin_t normal:bin_t(aparentemente) todavía se puede escribir en dispositivos de bloque pero la creación de un nuevo tipo de contexto de archivos parafdiskyddy escribir una regla de SELinux para no permitir el nuevo tipo accedanfixed_disk_device_tno debe ser demasiado difícil. Solo necesitaría hacerlo de modo que los roles de usuario normales no puedan hacerlo, pero los usuarios con elsysadm_tsí pueden hacerlo, luego recuerde hacer solo unanewrole -r root:sysadm_rantes de intentar volver a particionar el disco o hacer undddispositivo sobre el bloque (que no debería ' No será un gran problema ya que no es como si corrierasfdisktodos los días durante todo el día).Probablemente más trabajo del que estaba buscando, pero TE es el mecanismo que resuelve el problema general con el que se encuentra. Personalmente, la
udevregla es probablemente tu apuesta más segura. Solo menciono las cosas de TE en caso de que esté interesado en resolver un conjunto más amplio de problemas similares a este.fuente
Si no está seguro
/dev/sdx, use los nombres de dispositivos alternativos que puede encontrar/dev/disk/.Por ejemplo, mi lector de tarjetas SD es
/dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000011-0:0. Eso es un poco detallado, seguro, pero al menos no hay forma de confundirlo con un HDD.Alternativamente,
hdparm -i /dev/sdxpuede mostrar información útil si es un disco duro y ayudar a evitar accidentes desafortunados ...fuente
/dev/disk/*está disponible en cualquier sistema Linux.mysdcard=/dev/sdd, y luego, por supuesto, solo lo usa$mysdcardcomo argumento donde lo necesite.Hay nombres más largos y significativos en
/dev/disk/by-*. Para un disco completo,/dev/disk/by-idcontiene un enlace simbólico al dispositivo de disco que contiene el modelo de disco y el número de serie.Para obtener protección adicional, concédase el permiso para acceder al dispositivo (por ejemplo
sudo chown sj755 /dev/disk/by-id/ata-Yoyodine-50RDF15H), luego haga el resto bajo su propio usuario en lugar de root.Asegúrese de verificar que el disco en el que va a actuar tenga el contenido esperado, por ejemplo
fdisk -l /dev/whatever, verificarfile - </dev/sdz99, ... En el shell, Esc .para recuperar el argumento del comando anterior, nunca vuelva a escribir el nombre del dispositivo.fuente
Veo dos formas de lograr eso:
fuente