Uprawnienia DAC (Discretionary Access Control) w systemie Linux
Bezpieczeństwo danych w systemach operacyjnych opiera się na modelach kontroli dostępu, które definiują, kto i w jaki sposób może korzystać z zasobów systemu — takich jak pliki, katalogi czy urządzenia.
W systemach Linux podstawowym mechanizmem tego typu jest DAC (Discretionary Access Control) – dyskrecyjna kontrola dostępu. To jeden z najstarszych i najbardziej rozpowszechnionych modeli zabezpieczeń, który stanowi fundament bezpieczeństwa na poziomie użytkownika i plików.
Discretionary Access Control (DAC) oznacza, że właściciel zasobu (np. pliku lub katalogu) ma prawo decydować o tym, kto może z niego korzystać i w jakim zakresie.
Innymi słowy — kontrola dostępu jest uznaniowa, bo to właściciel ustala reguły, a nie administrator systemu czy polityka narzucona centralnie.
W systemach Linux DAC jest realizowany przez uprawnienia plików, które określają trzy typy dostępu dla trzech kategorii użytkowników:
-
owner (właściciel pliku),
-
group (grupa, do której należy plik),
-
others (wszyscy pozostali użytkownicy).
Każdy plik i katalog w systemie ma przypisany zestaw atrybutów uprawnień, które można zobaczyć poleceniem:
ls -l
Przykładowy wynik:
-rw-r--r-- 1 user users 2048 Oct 28 22:00 dokument.txt
Tę strukturę można odczytać następująco:
| Symbol | Znaczenie | Opis |
|---|---|---|
| – | typ pliku (– oznacza zwykły plik, d – katalog) |
|
| rw- | uprawnienia właściciela (read/write) | użytkownik user może odczytywać i zapisywać plik |
| r– | uprawnienia grupy | członkowie grupy users mogą tylko odczytywać |
| r– | uprawnienia dla innych użytkowników | wszyscy pozostali mogą tylko odczytywać |
| Symbol | Nazwa | Znaczenie |
|---|---|---|
| r | read | możliwość odczytu zawartości pliku |
| w | write | możliwość modyfikacji pliku |
| x | execute | możliwość uruchomienia pliku jako programu lub skryptu |
| Symbol | Nazwa | Znaczenie |
|---|---|---|
| r | read | możliwość listowania zawartości katalogu |
| w | write | możliwość tworzenia i usuwania plików w katalogu |
| x | execute | możliwość wejścia do katalogu i przeglądania jego podkatalogów |
System Linux oferuje kilka narzędzi do zarządzania uprawnieniami:
chmod 755 skrypt.sh
Interpretacja:
-
właściciel: rwx (7)
-
grupa: r-x (5)
-
inni: r-x (5)
Alternatywnie można użyć zapisu symbolicznego:
chmod u+x,g-w,o=r plik.txt
chown janek:programisci projekt.cpp
Ustawia użytkownika janek jako właściciela i grupę programisci.
chgrp finanse raport.xlsx
Poza standardowymi flagami r, w, x, Linux obsługuje również specjalne bity DAC, które rozszerzają możliwości kontroli dostępu:
| Bit | Nazwa | Zastosowanie | Przykład |
|---|---|---|---|
| s | setuid | proces uruchomiony z uprawnieniami właściciela pliku | /usr/bin/passwd |
| s | setgid | proces dziedziczy grupę pliku | katalogi projektowe |
| t | sticky bit | tylko właściciel pliku może go usunąć (nawet jeśli inni mają prawo w) |
/tmp |
Przykład:
chmod 1777 /tmp
Katalog /tmp jest zapisywalny przez wszystkich, ale tylko właściciel może usuwać swoje pliki.
Mimo że DAC jest prosty i efektywny, ma pewne ograniczenia:
-
Zaufanie do właścicieli plików – mogą oni nadawać zbyt szerokie uprawnienia (np.
777), co stanowi ryzyko. -
Brak centralnej polityki bezpieczeństwa – administrator nie może wymusić globalnych reguł.
-
Brak kontekstu bezpieczeństwa – DAC nie analizuje, kto wykonuje operację ani dlaczego.
Z tych powodów systemy Linux stosują dodatkowe mechanizmy, takie jak SELinux czy AppArmor, które wprowadzają kontrolę obowiązkową (MAC – Mandatory Access Control).
-
nie stosować 777 — zapewnia pełen dostęp każdemu użytkownikowi.
-
zasada najmniejszych uprawnień (PoLP) – tylko niezbędne prawa.
-
regularne sprawdzanie uprawnień:
find / -perm 777 -type f 2>/dev/null -
Tworzenie grup projektowych – zamiast nadawać dostęp pojedynczym użytkownikom.
-
stosować
umaskdo definiowania domyślnych uprawnień dla nowych plików.
Załóżmy, że w firmie istnieje zespół devops, który ma współdzielony katalog /data/devops.
-
Tworzymy grupę:
sudo groupadd devops -
Dodajemy użytkowników:
sudo usermod -aG devops janek sudo usermod -aG devops kasia -
Ustawiamy właściciela i grupę:
sudo chown root:devops /data/devops -
Ustawiamy uprawnienia i dziedziczenie grupy:
sudo chmod 2775 /data/devopsBit
2(setgid) sprawi, że wszystkie nowe pliki i katalogi odziedziczą grupędevops.
DAC (Discretionary Access Control) jest fundamentem bezpieczeństwa systemu Linux.
Umożliwia właścicielom plików pełną kontrolę nad tym, kto i w jaki sposób może korzystać z ich zasobów. Dzięki prostocie i elastyczności model DAC sprawdza się w większości zastosowań – od systemów desktopowych po serwery produkcyjne.
Jednocześnie warto pamiętać, że DAC sam w sobie nie wystarcza w środowiskach o wysokich wymaganiach bezpieczeństwa. W takich przypadkach stosuje się bardziej zaawansowane mechanizmy, takie jak SELinux czy AppArmor, które rozszerzają kontrolę o polityki MAC.