% ls -l /usr/bin/edit
lrwxrwxrwx 1 root root 3 Jan 10 05:54 /usr/bin/edit -> vim*
这似乎适用于 中的许多二进制文件update-alternatives
,至少在 Suse 和其他 Linux 发行版中如此。这是否意味着 Suse 上任何被盗用的帐户都可以修改符号链接,诱骗用户执行任何操作?如果是这样,为什么这些是默认权限?
答案1
符号链接的文件系统权限通常仅与链接本身的重命名或删除操作有关,而与由目标文件自己的权限控制的目标文件的访问模式无关。
因为该符号链接归 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
答案2
简而言之,没有。
内核只是使用符号链接来查找链接指向的文件/目录。
view
以示例=>为例vim
(/usr/bin 中的一个常见符号链接,vim
通过名称调用view
它将以只读方式打开文本文件)。
内核将“打开” view
,发现它是指向 vim 的指针,view
然后关闭并打开vim
。当它打开/执行 vim 时,它会使用 上的所有安全检查vim
。因此 vim 仍以 vim 上的权限打开,这正是您所期望的。
啊哈!但是符号链接是一个文件,如果它是可写的,我就可以打开它、编辑它并更改目标!/usr/bin/view 成为指向 /tmp/myevilexec 的指针。总之,不行。这是一个特殊文件,您无法打开符号链接“文件”并以这种方式编辑它。您只能替换符号链接,然后符号链接上的权限就无关紧要了 - 目录权限决定您是否可以删除文件/创建新文件。
简而言之,符号链接的 777 不是一个安全漏洞,它使符号链接的权限“不可见”,并且有效的权限是目标文件,这正是您所期望的。
答案3
弄清楚后回答自己的问题:
我已经弄清楚了。这将是一个安全漏洞,除非它/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
然而,如果有办法编辑实际的符号链接文件(我认为它只是一小段文本),那么就有可能造成邪恶。
因此,我实际上会推迟接受任何答案,直到有人能够提出强有力的证据证明符号链接可以/不能被修改或被完整替换,并接受该答案。