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
リムーバブルデバイスへのインストールオプションが重要な理由です。それ以外の場合は、準備されたリムーバブルメディアに独自のデバイスファイルをインポートできます。