% ls -l /usr/bin/edit
lrwxrwxrwx 1 root root 3 Jan 10 05:54 /usr/bin/edit -> vim*
これは、少なくともSuseやおそらく他のLinuxディストリビューションでは、update-alternatives
の多くのバイナリに当てはまるようです。これは、Suseの侵害されたアカウントがシンボリックリンクを変更し、ユーザーをだまして何かを実行させる可能性があることを意味しませんか?もしそうなら、なぜこれらがデフォルトの権限なのですか?
から Symbolic link
のウィキペディアエントリ :
シンボリックリンクのファイルシステムのアクセス許可は、通常、リンク自体の名前変更または削除操作にのみ関連し、ターゲットファイル自体のアクセス許可によって制御されるターゲットファイルのアクセスモードには関連しません。
そのシンボリックリンクはrootが所有しているため、変更できるのは彼だけです。例えば。
# ln -s /bin/ls blah
# ls -la blah
lrwxrwxrwx 1 root root 7 Fev 28 15:07 blah -> /bin/ls
$ rm blah
rm: cannot remove `blah': Operation not permitted
$ ln -s blah /bin/true
ln: failed to create symbolic link `/bin/true': File exists
それを理解した後に自分の質問に答える:
私はこれを理解しました。これは、/usr/bin
がrootによって所有されており、誰でも書き込み可能ではないという事実を除いて、セキュリティホールになります。したがって、リンクを変更することはできません。 /usr/bin
が誰でも書き込み可能である場合、リンクを独自のリンクに置き換えることができますが、そうではありません。
概念実証として:
% cd
% Sudo touch rootfile
% Sudo ln -s rootfile rootfile_link
% touch evilfile
% ln -s evilfile evilfile_link
# works, but only if directory permissions are correct:
% cp evilfile_link rootfile_link
ただし、実際のシンボリックリンクファイルを編集する方法があれば(私が思うに、それは単なるテキストの短い断片です)、悪である可能性があります。
したがって、シンボリックリンクを変更できない、または変更できない、または完全なパーミッションに置き換えることができないという強力な証拠を誰かが思い付くまで、実際には回答の受け入れを延期し、その回答を受け入れます。
一言で言えば、違います。
カーネルは、シンボリックリンクを使用して、リンクが指すファイル/ディレクトリを検索します。
例を見てみましょうview
=> vim
(/ usr/binの一般的なシンボリックリンク、vim
をview
という名前で呼び出すと、テキストファイルが開きます読み取り専用)。
カーネルは 'view
を開きます。これがvimへのポインタであることを確認し、view
を閉じてから、vim
を開きます。 vimを開く/実行すると、vim
のすべてのセキュリティチェックが使用されます。そのため、vimはまだvimの権限で開かれていますが、これは期待どおりです。
あはは!しかし、シンボリックリンクはファイルであり、書き込み可能であれば、開いて編集し、ターゲットを変更することができます。/usr/bin/viewは、/ tmp/myevilexecへのポインターになります。一言で言えば、違います。これは特別なファイルであり、シンボリックリンク「ファイル」を開いてこの方法で編集することはできません。シンボリックリンクを置き換えることしかできず、シンボリックリンクのパーマは関係ありません。ディレクトリパーマは、ファイルを削除したり、新しいファイルを作成したりできるかどうかを決定します。
要するに、シンボリックリンクの777はセキュリティホールではなく、シンボリックリンクのパーマを「非表示」にし、実際のパーマはターゲットファイルであり、これは期待どおりです。