Uprawnienia Plików i Katalogów

LINUX
Priorytet: Normalny Szkic

Zadanie 11: Uprawnienia Plików i Katalogów

Wstęp

W systemie Linux wszystko jest plikiem (prawie), a każdy plik ma właściciela i przypisane uprawnienia. Zrozumienie, jak czytać i zmieniać te uprawnienia, to absolutna podstawa bezpieczeństwa i pracy zespołowej w systemie. System uprawnień opiera się na triadzie: Read (Czytanie), Write (Zapis), eXecute (Wykonywanie) dla trzech grup: User (Właściciel), Group (Grupa), Other (Reszta świata).

Cel zadania

Nauczenie się zarządzania uprawnieniami tradycyjnymi (chmod, chown) oraz poznanie bitów specjalnych, które są kluczowe przy współdzieleniu plików.

Wymagania techniczne

  1. Dostęp do terminala Linux (może być WSL/Ubuntu).
  2. Uprawnienia sudo do niektórych operacji (tworzenie użytkowników/grup).

Kroki do wykonania

1. Rozgrzewka: Analiza ls -l

Spójrz na wynik polecenia ls -l w swoim katalogu domowym. Pierwsza kolumna (np. -rw-r--r--) to właśnie uprawnienia.

  • Znak 1: - (plik) lub d (katalog).
  • Znaki 2-4 (Właściciel): rw- (Może czytać i pisać, nie może uruchamiać).
  • Znaki 5-7 (Grupa): r-- (Może tylko czytać).
  • Znaki 8-10 (Inni): r-- (Mogą tylko czytać).

2. chmod: Zmiana uprawnień (Metoda Symboliczna)

Stwórz plik testowy tajny_dokument.txt i odbierz wszystkim (poza sobą) prawo czytania.

  1. Utwórz plik: touch tajny_dokument.txt
  2. Zabierz grupie i innym prawo czytania (go-r -> group, others minus read):
    chmod go-r tajny_dokument.txt
    
  3. Sprawdź wynik: ls -l tajny_dokument.txt (Powinno być -rw-------)

3. chmod: Metoda Numeryczna (Ósemkowa)

Każde uprawnienie ma wartość: R=4, W=2, X=1. Sumujemy je.

  • 7 (4+2+1) = Pełne prawa (rwx)
  • 6 (4+2) = Czytanie i zapis (rw-)
  • 5 (4+1) = Czytanie i wykonanie (r-x)
  • 4 = Tylko czytanie (r--)

Zadanie: Ustaw uprawnienia pliku skrypt.sh tak, abyś Ty mógł go edytować i uruchamiać (7), grupa tylko uruchamiać (5), a inni nic (0).

  1. touch skrypt.sh
  2. Ustaw:
    chmod 750 skrypt.sh
    

4. Zmiana Właściciela (chown i chgrp)

Często musisz przekazać plik innemu użytkownikowi (np. www-data dla serwera WWW). Załóżmy, że masz użytkownika nowicjusz (z poprzednich zadań) i grupę it_support.

  1. Zmień właściciela pliku na root (wymaga sudo):
    sudo chown root tajny_dokument.txt
    
  2. Zmień grupę pliku na users:
    sudo chgrp users tajny_dokument.txt
    # LUB jednocześnie owner:group
    sudo chown nowicjusz:users skrypt.sh
    

5. Bity Specjalne: Sticky Bit (+t)

Katalog /tmp jest dostępny dla każdego. Dlaczego więc użytkownik A nie może usunąć pliku użytkownika B? Dzięki Sticky Bit. Symulacja:

  1. Stwórz katalog wspolny: mkdir wspolny
  2. Daj wszystkim pełne prawa (niebezpieczne!): chmod 777 wspolny
  3. Nadaj Sticky Bit:
    chmod +t wspolny
    # lub chmod 1777 wspolny
    
    Teraz tylko właściciel pliku może go usunąć, mimo że katalog jest "otwarty".

6. Bity Specjalne: SGID (+s) na katalogu

Bardzo przydatne przy pracy grupowej. Jeśli nadasz SGID katalogowi, każdy NOWY plik w nim utworzony odziedziczy grupę katalogu (a nie grupę główną twórcy).

  1. Stwórz katalog projekt_zespolowy.
  2. Zmień grupę na sudo (lub inną wspólną): sudo chgrp sudo projekt_zespolowy
  3. Nadaj SGID:
    sudo chmod g+s projekt_zespolowy
    # lub chmod 2775 projekt_zespolowy
    
  4. Wejdź i stwórz plik. Sprawdź ls -l. Plik powinien należeć do grupy sudo automatycznie.

[!IMPORTANT] Zadanie do oddania: Prześlij zrzut ekranu terminala pokazujący wyniki polecenia ls -l dla:

  1. Pliku z uprawnieniami 750.
  2. Katalogu z ustawionym Sticky Bit (literka t na końcu uprawnień).
  3. Katalogu z ustawionym SGID (literka s w sekcji grupy).