Permissions

/tmp 中符號連結的權限

  • March 31, 2017

我的機器上有 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)

Linux Lite 基於 Ubuntu,它限制了世界可寫粘性目錄(包括/tmp)中的符號連結:那裡的符號連結只能由其所有者取消引用。

如果您在其他地方(/home/linuxlite例如)創建符號連結,您將能夠以您期望的方式取消引用它。

(Ubuntu 並不是唯一以這種方式執行的發行版;我提到了 Linux Lite 和 Ubuntu 之間的聯繫,因為這方面的文件似乎是特定於 Ubuntu 的。)

引用自:https://unix.stackexchange.com/questions/355033