chmodを使用してデバイスの権限を変更できますか?

chmodを使用してデバイスの権限を変更できますか?

ノート:udevルールを使用したくありません。

プログラムで一部のデバイスの権限を変更する必要があります。コードで何をすべきかを理解するには、chmodコマンドのみを使用して実行したいと思います。

これまで私は次のことを試しました。

root# ls -l /dev/sdb
brw-rw-rw- 1 root disk 8, 16 Apr 7 05:27 /dev/sdb

root# chmod 0600 /dev/sdb 

root# ls -l /dev/sdb
brw------- 1 root disk 8, 16 Apr 7 05:27 /dev/sdb

ご覧のとおり、所有/dev/sdb者(ルート)のみが読み取りおよび書き込み権限を持っています。ただし、新しいファイルを作成して接続されたフラッシュドライブからファイルを読み取ることはできます。

私は何を見逃していますか?chmodユーザーが特定のデバイスに書き込むのを防ぐ方法は何ですか?

答え1

私が正しく理解したなら、/ dev / sdbにいくつかのファイルシステムがマウントされています。ここで重要なのは権限です。ファイルシステムで/dev/sdb に常駐し、/dev/sdb に対する権限は問題とはまったく関係ありません。権限0666を除いて、誰でもファイルシステムのアクセス制御メカニズムをバイパスし、デバイスのコンテンツにランダムにアクセスできますが、これは他の問題です。

ファイルシステムのファイルへのアクセスを制限するには、ファイルに適切な所有権と権限を割り当てる必要があります(ファイルシステムのルートから始まります)。 FATなどのファイルシステムの場合、mount(8)を使用すると、ファイルシステム内のすべてのファイルの所有権とアクセス権を設定できます。ツリー全体を特定のユーザーにのみ公開し、他のすべてのユーザーには非表示にするには、そのユーザーだけがアクセスできる場所にツリーをインストールできます。ただし、すべてのユーザーは何かがマウントされていることがわかります(mount(8)またはdf(1)がそれを表示します)。

chroot(1) はまったく役に立ちません。

答え2

/dev/sdbブロックデバイス名。権限を変更しても/dev/sdbファイルシステムには影響しません/dev/sdb

mountマウントされたメディアとマウントポイントのリストを取得します。

chmodマウントポイントで権限を変更するために使用されます。

たとえば、 mount次のような行が表示されます。

/dev/sdb1 on /run/mount/pioneeraxon/disk1 type ext4 (...)

この場合は/run/mount/pioneeraxon/disk1取り付け点です/dev/sdb1。変更するには権限が必要です/run/mount/pioneeraxon/disk1

関連情報