Pliki: Prawa dostępu do plików, SUID, GUID, sticky bit oraz rozszerzone atrybuty

Linux jest środowiskiem wieloużytkowym, co widać także w filozofii dostępu do plików i katalogów.

Podstawowe atrybuty plików


Dostęp do plików można modyfikować również za pomocą okna właściwości pliku lub katalogu w KDE.

Linux jest środowiskiem wieloużytkowym, co widać także w filozofii dostępu do plików i katalogów. Podstawowy model dostępu do plików określa odpowiednio prawa dostępu dla właściciela pliku, grupy oraz wszystkich innych. Każda z tych grup może mieć prawo do zapisu (w) wykonywania (x) oraz czytania (r). Dodatkowo często przy wyświetlaniu informacji o prawach dostępu dodawana jest informacja o rodzaju pliku. Może on być zwykłym plikiem (-), katalogiem (d), linkiem symbolicznym (l),urządzeniem blokowym (b) lub znakowym (c). Czasem zamiast typowego x w pracach oznaczających możliwość wykonania przez użytkownika czy grupę możemy zobaczyć s. Oznacza to iż plik jest wykonywany nie z prawami użytkownika ale właściciela lub odpowiednio grupy np.: uruchamiamy jako użytkownik program do partycjonowania dysku z uprawnieniami administratora systemu.

Przykładowy zapis tych uprawnień to:

-rw-rw-r--    1 ziutus   ziutus        164 lut 18 10:15 flash.html

 

Co oznacza iż jest to zwykły plik (-) użytkownik ma prawo do odczytu i zapisu (rw-), grupa ma prawo do odczytu i zapisu (rw-) a wszyscy inni jedynie do odczytu (r–).

W przypadku pracy w środowisku konsoli prawa dostępu możemy zobaczyć po wydaniu polecenia ls -l

ziutus@ziutus:~/public_html$ ls -l razem 372 
drwxrwxr-x    8 ziutus   ziutus       4096 paź 24  2001 abrax 
-rw-rw-r--    1 ziutus   ziutus        164 lut 18 10:15 flash.html 
drwxrwxr-x    2 ziutus   ziutus       4096 lut 18 10:14 fun 
ziutus@ziutus:~/public_html$

Sticky bit

Po co to jest?

Sticky bit jest używany, gdy zachodzi potrzeba aby w danym współdzielonym katalogu wszyscy użytkownicy mogli tworzyć katalogi i pliki ale aby nie mogli sobie wzajemnie usuwać ich. Przykładem jest tutaj katalog /tmp.

Jak sprawdzić czy jest ustawiony?

Przy listowaniu prawd dostępu do katalogu, na końcu pojawi się charakterystyczne t (zamiast x):

[root@ziutusLinux1 ~]# ls -ld /tmp
drwxrwxrwt. 5 root root 4096 Jun 29 09:16 /tmp

Jak go ustawić?

Ustawienie sticky bit jest proste, jeżeli używamy oznaczeń symbolicznych, używamy „t”:

chmod +t /tmp2

Lub:

chmod o+t /tmp2

Natomiast w przypadku używania kodów numerycznych, korzystamy z wiodącej jedynki:

chmod 1777 /tmp2

Standardowe katalogi i pliki z sticky bit

/var/tmp
/tmp
/dev/shm

Bity SUID i GUID

Po co to?

W niektórych przypadkach, chcemy aby użytkownik mógł wykonywać dane polecenie jako inny użytkownik, szczególnie jak należy mu przekazać cześć uprawnień, do których normalnie nie powinien mieć praw. Przykładem jest tutaj zmiana swojego hasła w systemie. Program passwd korzystając z uprawnień root-a pozwala edytować w ściśle określony sposób plik /etc/shadow, czyli zmienić wpis o swoim haśle ale nic ponadto.

Jak sprawdzić czy jest ustawiony?

[root@ziutusLinux1 ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

Jak ustawić?

W wprzypadku bitu SUID:

chmod u+s moj_plik

Albo numerycznie (4 na początku):

chmod +4750 moj_plik

W przypatku SGID:

chmod g+s moj_plik

Albo numerycznie (4 na początku):

chmod +2750 moj_plik

Jak znaleźć pliki z ustawionymi bitami SUID i GUID

W przypadku plików z SUID należy wykonać polecenie

 #find / -perm -4000

Natomiast w przypadku plików z GUID:

#find / -perm -2000

Przykłady standardowych plików z SUID i SGID

Standardowe programy używające SUID:

/bin/mount
/bin/su
/bin/ping6
/bin/umount
/bin/ping
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/chage
/usr/bin/passwd
/usr/bin/chfn
/usr/bin/gpasswd
/usr/bin/sudo
/usr/bin/crontab
/usr/sbin/suexec
/usr/sbin/usernetctl
/usr/sbin/userhelper

Standardowe programy używające GUID:

/sbin/netreport
/usr/libexec/utempter/utempter
/usr/bin/screen
/usr/bin/write
/usr/bin/locate
/usr/bin/wall
/usr/bin/lockfile
/usr/bin/ssh-agent
/usr/sbin/postdrop
/usr/sbin/postqueue

Kiedy ustawiać?

Istnieją 3 główne powody ustawiania bitów SUID i GUID:

  1. Kiedy uprawnienia root-a są potrzebne do wykonania niektórych czynności (edycja systemowych plików albo dostęp do portów z numerem poniżej 1024),
  2. Kiedy nie chcemy podawać hasła pewnego użytkownika ale chcemy móc wykonać polecenia z jego uprawnieniami,
  3. Niechęć do krzystania z SUDO,

Atrybuty rozszerzone ext2 ,ext3 i ext4

W przypadku systemu plików ext2, ext3, ext4 (podstawowego dla Linuksa) istnieje możliwość zastosowania rozszerzonych atrybutów. Pozwalają one na ustalić takie reguły jak: niezmodyfikowanie czasu dostępu do pliku (oszczędność dla laptopów), tylko dopisywanie do pliku (przydatne np.: przy dziennikach systemowych), automatyczną kompresję pliku przez jądro (oszczędność miejsca kosztem czasu dostępu), wykluczenie z kopii sporządzanych programem dump, zakaz modyfikacji pliku (praktycznie obowiązkowe dla plików konfiguracyjnych), sterowanie procesem księgowania pliku, bezpieczne usuwanie pliku (blok po skasowanym pliku jest zerowany i ponownie nadpisywany), czy zabezpieczenie przed przypadkowym usunięciem.

Inne modele dostępu do plików i katalogów: ACLe

Modele te nie zawsze spełniają swoje zadania. Można wtedy zastosować ACLe czyli listy dostępu do plików. Ze względu na fakt iż Linux pracuje z wieloma systemami plików, a nie każdy z nich obsługuje ACLe, nie zostały one włączone do jądra systemu. W przypadku ext2 i ext3 można go zainstalować jako łata na jądro w przypadku innych systemów bywa różnie. Więcej o tym w dziale poświęconym linuksowym systemom plików.

Dodaj komentarz