Linux: uprawnienia w katalogu /tmp

20-maj-2023

Czy wiesz o tym, że katalog /tmp w Linuxie ma w specjalny sposób zdefiniowane uprawnienia? Owszem każdy może w tym katalogu pisać, ale wzajemna modyfikacja plików przez użytkowników z tej samej grupy nie działa. W sumie ma to sens, bo gdyby w takim /tmp każdy mógł robić wszystko, to zrobiłby się niezły bałagan.

Najpierw przyjrzyjmy się jak to działa w „normalnych katalogach”:

rafal@fermat:~$ sudo mkdir /home/shared
rafal@fermat:~$ sudo chmod 777 /home/shared

Teraz „stajemy się użytkownikiem user2, który ma swoją własną grupę user2:

rafal@fermat:~$ sudo su - user2
$ id
uid=1002(user2) gid=1002(user2) groups=1002(user2)
$ cat >> /home/shared/test.txt
my test user2
$ ls -l /home/shared/test.txt
-rw-rw-r-- 1 user2 user2 14 maj 20 11:26 /home/shared/test.txt

Teraz spróbujemy ten plik zmodyfikować. Modyfikację wykona użytkownik user1, który jest też członkiem grupy user2:

rafal@fermat:~$ sudo su - user1
$ id
uid=1001(user1) gid=1001(user1) groups=1001(user1),1002(user2)
$ cat >> /home/shared/test.txt
my test user 1
$ ls -l /home/shared/test.txt    
-rw-rw-r-- 1 user2 user2 29 maj 20 11:27 /home/shared/test.txt

Jak widać zmiana się udała. To teraz zobaczmy jak to zadziała w katalogu tmp z ustawionym sticky bit. Do akcji wracza znowu user2:

rafal@fermat:~$ sudo su - user2
$ cat >> /tmp/test.txt
my test user2 
$ ls -l /tmp/test.txt
-rw-rw-r-- 1 user2 user2 14 maj 20 11:29 /tmp/test.txt
$ ls -ld /tmp
drwxrwxrwt 24 root root 12288 maj 20 11:29 /tmp

Teraz modyfikacje próbuje wykonać user 1 – bez sukcesu:

rafal@fermat:~$ sudo su - user1
$ cat >> /tmp/test.txt
-sh: 1: cannot create /tmp/test.txt: Permission denied

Komentarze są wyłączone

Autor: Rafał Kraik