Sur un système CentOS6, j'ai /dev/block/sr0
(lecture seule) et /dev/block/sda
(lire écrire). Comment puis-je savoir par programme quels appareils sont en lecture seule ? Il y a un ro
fichier là-dedans, mais c'est '0' pour les deux appareils.
Il y a quelques hacks que je pourrais utiliser (comparer les noms ^sr
contre ^sd
, cherchez cdrom
propriété du nœud de l'appareil), mais j'aimerais avoir une solution générique.
Réponse acceptée :
Si /sys/block/xxx/ro
est 1, alors le noyau garantit qu'il est en lecture seule
$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1
Si ce n'est pas le cas, le noyau peut vous laisser essayer d'écrire dessus, mais l'écriture peut être bloquée à un niveau inférieur.
Pour les CD/DVD, vous pouvez connaître le type de média (lecture seule, inscriptible, réinscriptible, session ouverte…), avec cdrdao disk-info
.
Maintenant, le périphérique peut être accessible en écriture, mais vous n'avez peut-être pas l'autorisation d'écrire sur le fichier de périphérique, mais c'est une autre histoire et peut être facilement vérifié avec [ -w "$dev" ]