CentOS6システムでは、/dev/block/sr0
があります (読み取り専用)および/dev/block/sda
(読み書き)。どのデバイスが読み取り専用であるかをプログラムで確認するにはどうすればよいですか? ro
があります そこにファイルがありますが、両方のデバイスで「0」です。
私が使用できるいくつかのハックがあります(名前^sr
を比較してください vs ^sd
、cdrom
を探します デバイスノードの所有権)ですが、一般的なソリューションが必要です。
承認された回答:
/sys/block/xxx/ro
の場合 が1の場合、カーネルは読み取り専用であることを保証します
$ sudo losetup /dev/loop0 a
$ sudo losetup -r /dev/loop1 b
$ cat /sys/block/loop0/ro
0
$ cat /sys/block/loop1/ro
1
そうでない場合、カーネルは書き込みを試みることができますが、書き込みは下位レベルでブロックされる可能性があります。
CD / DVDの場合、cdrdao disk-info
を使用して、メディアのタイプ(読み取り専用、書き込み可能、再書き込み可能、オープンセッション…)を確認できます。 。
これで、デバイスは書き込み可能になる可能性がありますが、デバイスファイルへの書き込み権限がない可能性がありますが、これは別の話であり、[ -w "$dev" ]
で簡単に確認できます。