Je me demande s'il existe un moyen d'empêcher certains appareils de devenir le fichier de sortie de la dd
commande et la cible de la fdisk
commande. J'utilise actuellement les deux opérations pour configurer l'écriture d'un chargeur de démarrage, d'un noyau et d'un système de fichiers racine sur une carte SD, qui apparaît comme /dev/sdd
. Je suis toujours un peu impatient de me mélanger sdd
avec sdb
, ou sda
depuis les lettres Aet Dsont proches sur le clavier, et je voudrais trouver un moyen d'empêcher les commandes avec ce format:
dd if=/dev/sd[a-zA-Z0-9]* of=/dev/sd[ab]
ou
fdisk /dev/sd[ab]
Réponses:
Vous pouvez essayer d'écrire une règle udev pour donner aux disques durs supplémentaires des noms suffisamment uniques.
Une autre idée: chaque fois que vous pouvez formuler une exigence de sécurité comme "Ce n'est pas qui le fait, c'est la façon dont ils le font", vous parlez d'application de type, et dans la plupart des distributions Linux, TE se fait au niveau MAC. La plupart de mon expérience MAC est avec "SELinux"
Vous ne pouvez pas le verrouiller au niveau du DAC, sinon vous ne seriez pas en mesure d'effectuer des E / S sur le périphérique (pas nécessairement une défaillance du DAC en tant que modèle de sécurité, c'est juste que la stratégie DAC actuelle est uniquement basée sur l'identité, donc tous les programmes exécutés sous une identité particulière obtiennent des droits identiques sans expression administrative supplémentaire possible). Le verrouillage au niveau MAC peut être effectué de sorte que les composants de l'espace utilisateur normal ne puissent rien faire avec le fichier de blocage, contrairement à vos utilitaires racine et à certaines parties de la plate-forme. Sur Fedora, c'est déjà un peu le cas avec les périphériques de bloc qui apparaissent avec le type SELinux
fixed_disk_device_t
et grub ayantbootloader_exec_t
l'exemple suivant:Alors qu'il
dd
a une étiquette bin_t régulière:bin_t
(apparemment) peut toujours écrire sur des périphériques bloqués, mais la création d'un nouveau type de contexte de fichier pourfdisk
etdd
et l'écriture d'une règle selinux pour interdire l'accès au nouveau typefixed_disk_device_t
ne devrait pas être trop difficile. Vous auriez juste besoin de le faire pour que les rôles d'utilisateur normaux ne puissent pas le faire mais les utilisateurs avec lesysadm_t
peuvent le faire, puis n'oubliez pas de faire unnewrole -r root:sysadm_r
avant d'essayer de re-partitionner le disque ou de faire undd
sur le périphérique de bloc (ce qui ne devrait pas t être une affaire énorme car ce n'est pas comme si vous couriezfdisk
tous les jours toute la journée).Probablement plus de travail que ce que vous recherchiez, mais TE est le mécanisme qui résout le problème général que vous rencontrez. Personnellement, la
udev
règle est probablement que vous êtes le pari le plus sûr. Je ne mentionne que les trucs TE au cas où vous souhaiteriez résoudre un ensemble plus large de problèmes similaires à celui-ci.la source
En cas de doute
/dev/sdx
, utilisez les autres noms de périphériques que vous pouvez trouver dans/dev/disk/
.Par exemple, mon lecteur de carte SD est
/dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000011-0:0
. C'est un peu bavard, bien sûr, mais au moins il n'y a aucun moyen de le confondre avec un disque dur.Alternativement, un
hdparm -i /dev/sdx
peut afficher des informations utiles s'il s'agit d'un disque dur et aider à éviter les accidents malheureux ...la source
/dev/disk/*
est disponible sur n'importe quel système Linux.mysdcard=/dev/sdd
, et ensuite vous utilisez bien sûr$mysdcard
comme argument partout où vous en avez besoin.Il y a des noms plus longs et significatifs
/dev/disk/by-*
. Pour un disque entier,/dev/disk/by-id
contient un lien symbolique vers le périphérique de disque qui contient le modèle de disque et le numéro de série.Pour une protection supplémentaire, donnez-vous la permission d'accéder à l'appareil (par exemple
sudo chown sj755 /dev/disk/by-id/ata-Yoyodine-50RDF15H
), puis faites le reste sous votre propre utilisateur au lieu de root.Assurez - vous de double vérifier que le disque que vous allez agir sur le contenu a prévu, par exemple , vérifier
fdisk -l /dev/whatever
,file - </dev/sdz99
... Dans la coquille, Esc .de rappeler l'argument de la commande précédente, jamais retaper le nom du périphérique.la source
Je vois deux façons d'y parvenir:
la source