ノート: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
。