Auf einem CentOS6-System habe ich /dev/block/sr0
(schreibgeschützt) und /dev/block/sda
(lesen Schreiben). Wie kann ich programmgesteuert herausfinden, welche Geräte schreibgeschützt sind? Es gibt ein ro
Datei darin, aber es ist ‚0‘ für beide Geräte.
Es gibt einige Hacks, die ich verwenden könnte (vergleiche die Namen ^sr
vs ^sd
, suchen Sie nach cdrom
Eigentümer des Geräteknotens), aber ich hätte gerne eine generische Lösung.
Akzeptierte Antwort:
Wenn /sys/block/xxx/ro
1 ist, dann garantiert der Kernel, dass es schreibgeschützt ist
$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1
Wenn dies nicht der Fall ist, lässt der Kernel möglicherweise zu, dass Sie versuchen, darauf zu schreiben, aber das Schreiben wird möglicherweise auf einer niedrigeren Ebene blockiert.
Bei CDs/DVDs können Sie mit cdrdao disk-info
den Medientyp (schreibgeschützt, beschreibbar, wiederbeschreibbar, offene Sitzung…) ermitteln .
Jetzt ist das Gerät möglicherweise beschreibbar, aber Sie haben möglicherweise keine Schreibberechtigung für die Gerätedatei, aber das ist eine andere Geschichte und kann leicht mit [ -w "$dev" ]
überprüft werden