Su un sistema CentOS6 ho /dev/block/sr0
(sola lettura) e /dev/block/sda
(leggere scrivere). Come posso scoprire a livello di codice quali dispositivi sono di sola lettura? C'è un ro
file lì dentro, ma è "0" per entrambi i dispositivi.
Ci sono alcuni hack che potrei usare (confronta i nomi ^sr
rispetto a ^sd
, cerca cdrom
proprietà del nodo dispositivo), ma mi piacerebbe avere una soluzione generica.
Risposta accettata:
Se /sys/block/xxx/ro
è 1, quindi il kernel garantisce che sia di sola lettura
$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1
In caso contrario, il kernel potrebbe farti provare a scriverci sopra, ma la scrittura potrebbe essere bloccata a un livello inferiore.
Per i CD/DVD, puoi scoprire il tipo di supporto (sola lettura, scrivibile, riscrivibile, sessione aperta...), con cdrdao disk-info
.
Ora il dispositivo potrebbe essere scrivibile, ma potresti non avere il permesso di scrittura per il file del dispositivo, ma questa è un'altra storia e può essere facilmente verificata con [ -w "$dev" ]