Uprawnienia DAC w systemie Linux

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:

  1. Zaufanie do właścicieli plików – mogą oni nadawać zbyt szerokie uprawnienia (np. 777), co stanowi ryzyko.

  2. Brak centralnej polityki bezpieczeństwa – administrator nie może wymusić globalnych reguł.

  3. 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ć umask do definiowania domyślnych uprawnień dla nowych plików.


Załóżmy, że w firmie istnieje zespół devops, który ma współdzielony katalog /data/devops.

  1. Tworzymy grupę:

    sudo groupadd devops
    
  2. Dodajemy użytkowników:

    sudo usermod -aG devops janek
    sudo usermod -aG devops kasia
    
  3. Ustawiamy właściciela i grupę:

    sudo chown root:devops /data/devops
    
  4. Ustawiamy uprawnienia i dziedziczenie grupy:

    sudo chmod 2775 /data/devops
    

    Bit 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.

Przewijanie do góry