Me pregunto si hay alguna manera de evitar que ciertos dispositivos se conviertan en el archivo de salida del dd
comando y el objetivo del fdisk
comando. 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 sdd
con sdb
, o sda
ya 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_t
y grub quebootloader_exec_t
ven el siguiente ejemplo:Mientras que
dd
tiene 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 parafdisk
ydd
y escribir una regla de SELinux para no permitir el nuevo tipo accedanfixed_disk_device_t
no 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_t
sí pueden hacerlo, luego recuerde hacer solo unanewrole -r root:sysadm_r
antes de intentar volver a particionar el disco o hacer undd
dispositivo sobre el bloque (que no debería ' No será un gran problema ya que no es como si corrierasfdisk
todos 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
udev
regla 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/sdx
puede 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$mysdcard
como argumento donde lo necesite.Hay nombres más largos y significativos en
/dev/disk/by-*
. Para un disco completo,/dev/disk/by-id
contiene 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