izin symlinks di dalam / tmp

8

Saya memiliki 2 pengguna di mesin saya: linuxlitedan otheruser.

otheruser memiliki file:

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

linuxlitemembuat file dan symlink di /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

Sekarang, meskipun otheruserbisa membaca /tmp/filedan /home/otheruser/a, dia tidak bisa membaca /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

Pertanyaan saya adalah, mengapa tidak dapat otherusermembaca symlink yang dimiliki linuxlitejika ia dapat membaca target dan juga file lain yang dimiliki olehnya dalam direktori yang sama dengan symlink?

Jika itu penting, maka izin pada /tmpadalah:

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

Distribusi adalah Linux Lite 3.0, kernel adalah: Linux 4.4.0-21.generic (i686)

pengguna49822
sumber

Jawaban:

9

Linux Lite didasarkan pada Ubuntu, yang membatasi symlink di direktori lengket yang dapat ditulis oleh dunia (termasuk /tmp): symlink di sana hanya dapat ditinjau ulang oleh pemiliknya.

Jika Anda membuat symlink di tempat lain ( /home/linuxlitemisalnya), Anda dapat melakukan dereferensi dengan cara yang Anda harapkan.

(Ubuntu bukan satu-satunya distribusi untuk berperilaku seperti ini; Saya menyebutkan koneksi antara Linux Lite dan Ubuntu karena dokumentasi untuk ini tampaknya khusus Ubuntu.)

Stephen Kitt
sumber