/tmp 内符号链接的权限

/tmp 内符号链接的权限

我的机器中有 2 个用户:linuxliteotheruser

otheruser有一个文件:

otheruser@linuxlite:~$ ls -l a
-rw-rw-r-- 1 otheruser otheruser 6 Mar 31 12:47 a
otheruser@linuxlite:~$ cat a
hello

linuxlite在以下位置创建了一个文件和一个符号链接/tmp

otheruser@linuxlite:~$ ls -l /tmp/file /tmp/link
-rw-rw-r-- 1 linuxlite linuxlite  3 Mar 31 12:49 /tmp/file
lrwxrwxrwx 1 linuxlite linuxlite 17 Mar 31 12:49 /tmp/link -> /home/otheruser/a

现在,虽然otheruser可以读/tmp/file/home/otheruser/a,但他不能读/tmp/link

otheruser@linuxlite:~$ cat /tmp/file
hi
otheruser@linuxlite:~$ cat /home/otheruser/a
hello
otheruser@linuxlite:~$ cat /tmp/link
cat: /tmp/link: Permission denied

我的问题是,如果他可以读取目标以及他在与符号链接相同的目录中拥有的另一个文件,为什么不能otheruser读取他拥有的符号链接?linuxlite

如果重要的话,那么权限/tmp是:

otheruser@linuxlite:~$ ls -l -d /tmp
drwxrwxrwt 9 root root 4096 Mar 31 13:17 /tmp

发行版是Linux Lite 3.0,内核是:Linux 4.4.0-21.generic (i686)

答案1

Linux Lite 基于 Ubuntu,限制世界可写粘性目录中的符号链接(包括/tmp):那里的符号链接只能由其所有者取消引用。

如果您在其他地方(例如)创建符号链接/home/linuxlite,您将能够以您期望的方式取消引用它。

(Ubuntu 并不是唯一一个以这种方式运行的发行版;我提到了 Linux Lite 和 Ubuntu 之间的联系,因为这方面的文档似乎是特定于 Ubuntu 的。)

相关内容