mknodにroot権限が必要なのはなぜですか?

mknodにroot権限が必要なのはなぜですか?

mknod通常のファイル、FIFO、またはUnixソケット以外のノードを作成するときに、コマンドにroot権限が必要であることがわかりました。

なぜそんなことですか?一般ユーザーがmknod一般ファイルを生成するときに使用できないコマンドを使用して、システムに害を与えたり、他のユーザーの個人情報を侵害したりできますか?

ベストアンサー1

mknodをランダムに呼び出すことができれば、所有してアクセスできるデバイスファイルを作成できます。あなたに走ったすべてのデバイスについて。デバイスファイルはそのデバイスへの無制限のアクセスを提供するため、すべてのユーザーはデバイスに無制限にアクセスできます。

たとえば、/dev/sda1アクセス権のないファイルシステムがあるとします。 (たとえば、にインストールされています/secret)。ここでブロック 8,1 は特別なので、たとえば mknod を呼び出せると、ファイルシステムの制限にかかわらず、/dev/sda1自分のデバイス file を介して何でもmknod ~/my_sda1 b 8 1アクセスできます。 (デバイスを何の構造もないフラットファイルとして受け取るので、どうすればよいかを知る必要がありますが、ブロックデバイスファイルにアクセスするためのライブラリがあります。)/dev/sda1/dev/sda1/dev/sda1

同様に、/dev/memまたはのコピーを作成できる/dev/kmem場合は、メインメモリ内のすべてのエントリを確認できます。/dev/tty*またはのコピーを作成できる場合は、/dev/pts/*キーボード入力などを記録できます。

したがって、mknodは通常のユーザーの手にハローなので、使用を制限する必要があります。

(注) これがnodevリムーバブルデバイスへのインストールオプションが重要な理由です。それ以外の場合は、準備されたリムーバブルメディアに独自のデバイスファイルをインポートできます。

おすすめ記事