Saya bertanya-tanya apakah ada beberapa cara untuk mencegah perangkat tertentu menjadi file output dari dd
perintah dan target dari fdisk
perintah. Saat ini saya menggunakan dua operasi untuk mengatur penulisan sistem bootloader, kernel, dan root pada kartu SD, yang muncul sebagai /dev/sdd
. Aku selalu sedikit cemas bahwa saya akan mencampur sdd
dengan sdb
, atau sda
karena surat-surat Adan Ddekat pada keyboard, dan saya ingin menemukan cara untuk mencegah perintah dengan format ini:
dd if=/dev/sd[a-zA-Z0-9]* of=/dev/sd[ab]
atau
fdisk /dev/sd[ab]
Jawaban:
Anda dapat mencoba menulis aturan udev untuk memberikan HDD tambahan nama yang cukup unik.
Gagasan lain: Setiap kali Anda dapat menyebut persyaratan keamanan sebagai "Bukan siapa yang melakukannya, itu bagaimana mereka melakukannya" Anda sedang berbicara tentang penegakan jenis, dan di sebagian besar distro Linux, TE dilakukan pada tingkat MAC. Sebagian besar pengalaman MAC saya dengan "SELinux"
Anda tidak dapat menguncinya di tingkat DAC jika tidak, Anda tidak akan dapat melakukan I / O pada perangkat (belum tentu kegagalan DAC sebagai model keamanan, hanya saja kebijakan DAC saat ini semata-mata berbasis identitas sehingga semua program berjalan di bawah identitas tertentu mendapatkan hak yang identik tanpa ekspresi administratif tambahan mungkin). Mengunci itu di tingkat MAC dapat dibuat sehingga komponen ruang pengguna biasa tidak dapat melakukan apa pun dengan file blok tetapi utilitas root Anda dan bagian tertentu dari platform dapat. Pada Fedora, ini sudah merupakan kasus dengan perangkat blok yang muncul dengan tipe SELinux
fixed_disk_device_t
dan grub setelahbootloader_exec_t
melihat contoh berikut:Sedangkan
dd
memiliki label bin_t reguler:bin_t
(tampaknya) masih dapat menulis untuk memblokir perangkat tetapi membuat jenis konteks file baru untukfdisk
dandd
dan menulis aturan selinux untuk melarang tipe baru mengaksesfixed_disk_device_t
tidak boleh terlalu sulit. Anda hanya perlu membuatnya sehingga peran pengguna biasa tidak dapat melakukannya tetapi pengguna dengansysadm_t
dapat melakukannya, maka ingatlah untuk hanya melakukannewrole -r root:sysadm_r
sebelum Anda mencoba mempartisi ulang disk atau melakukandd
over the block device (yang seharusnya tidak t menjadi masalah besar karena tidak seperti Anda berlarifdisk
setiap hari sepanjang hari).Mungkin lebih banyak pekerjaan daripada yang Anda cari, tetapi TE adalah mekanisme yang memecahkan masalah umum yang Anda hadapi. Secara pribadi,
udev
aturannya mungkin taruhan Anda paling aman. Saya hanya menyebutkan hal-hal TE jika Anda tertarik untuk memecahkan masalah yang lebih besar mirip dengan yang satu ini.sumber
Jika Anda tidak yakin tentang
/dev/sdx
, gunakan nama perangkat alternatif yang dapat Anda temukan/dev/disk/
.Misalnya, pembaca kartu SD saya
/dev/disk/by-id/usb-TS-RDF5_SD_Transcend_000000000011-0:0
. Itu agak bertele-tele, pasti, tetapi setidaknya tidak ada cara untuk membingungkannya dengan HDD.Atau a
hdparm -i /dev/sdx
dapat menampilkan info bermanfaat jika berupa hard disk dan membantu menghindari kecelakaan yang tidak menguntungkan ...sumber
/dev/disk/*
tersedia di sistem Linux apa pun.mysdcard=/dev/sdd
, dan kemudian Anda tentu saja menggunakan$mysdcard
argumen di mana pun Anda membutuhkannya.Ada nama yang lebih panjang dan bermakna dalam
/dev/disk/by-*
. Untuk seluruh disk,/dev/disk/by-id
berisi symlink ke perangkat disk yang berisi model disk dan nomor seri.Untuk perlindungan tambahan, beri diri Anda izin untuk mengakses perangkat (mis.
sudo chown sj755 /dev/disk/by-id/ata-Yoyodine-50RDF15H
), Lalu lakukan sisanya di bawah pengguna Anda sendiri alih-alih root.Pastikan untuk memeriksa ulang bahwa disk Anda akan bertindak atas memiliki kandungan diharapkan, misalnya cek
fdisk -l /dev/whatever
,file - </dev/sdz99
... Dalam shell, Esc .mengingat argumen dari perintah sebelumnya, tidak pernah mengetik ulang nama perangkat.sumber
Saya melihat dua cara untuk mencapai itu:
sumber