/sysまたは/procのブロックデバイスが読み取り専用であるかどうかをテストするにはどうすればよいですか?

/sysまたは/procのブロックデバイスが読み取り専用であるかどうかをテストするにはどうすればよいですか?

/dev/block/sr0CentOS6システムには(読み取り専用)と/dev/block/sda(読み取り/書き込み)があります。どのデバイスが読み取り専用であるかをプログラムで確認する方法は?そこにファイルがありますが、ro両方のデバイスは「0」です。

利用可能ないくつかのトリック(nameを^srnameと比較^sd、デバイスノードの所有権を見つけるcdrom)がありますが、一般的な解決策を期待しています。

ベストアンサー1

1の場合、/sys/block/xxx/roカーネルは読み取り専用であることを保証します。

$ 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" ]

おすすめ記事