Na systému CentOS6 mám /dev/block/sr0
(pouze pro čtení) a /dev/block/sda
(číst psát). Jak mohu programově zjistit, která zařízení jsou pouze pro čtení? Existuje ro
soubor tam, ale pro obě zařízení je to „0“.
Existují nějaké hacky, které bych mohl použít (srovnej jména ^sr
vs ^sd
, vyhledejte cdrom
vlastnictví uzlu zařízení), ale rád bych měl obecné řešení.
Přijatá odpověď:
Pokud /sys/block/xxx/ro
je 1, pak jádro zaručuje, že je pouze pro čtení
$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1
Pokud tomu tak není, může vám jádro umožnit pokusit se na něj zapisovat, ale zápis může být blokován na nižší úrovni.
U CD/DVD můžete zjistit typ média (pouze pro čtení, zapisovatelné, přepisovatelné, otevřené relace…), pomocí cdrdao disk-info
.
Nyní může být zařízení zapisovatelné, ale možná nemáte oprávnění k zápisu do souboru zařízení, ale to je jiný příběh a lze to snadno zkontrolovat pomocí [ -w "$dev" ]