CodeGym /Kursy /Docker SELF /Podstawy uprawnień dostępu: chmod, chown, umask

Podstawy uprawnień dostępu: chmod, chown, umask

Docker SELF
Poziom 2 , Lekcja 0
Dostępny

Podstawy uprawnień dostępu: chmod, chown, umask

1. Pojęcie praw dostępu

Kiedy pracujesz z plikami lub katalogami w Linuxie, pojawia się potrzeba zarządzania dostępem do nich. Wyobraź sobie, że zostawiłeś swoje skarpetki na widoku i teraz każdy w domu może ich używać! Prawa dostępu w Linuxie pozwalają zapobiegać "nieautoryzowanemu używaniu skarpetek" (albo czegoś ważniejszego, jak np. Twoich skryptów). Zacznijmy to rozkminiać.

Każdy plik (i katalog) w Linuxie ma trzy zestawy praw dostępu, które określają, kto może je czytać, zapisywać lub uruchamiać:

  1. Odczyt (r): Pozwala przeglądać zawartość pliku lub listę plików w katalogu.
  2. Zapisywanie (w): Pozwala zmieniać zawartość pliku lub dodawać/usuwać pliki z katalogu.
  3. Wykonywanie (x): Daje możliwość uruchamiania pliku jako programu (lub wchodzenia do katalogu).

Model trójpoziomowy

Każde prawo obowiązuje w trzech grupach użytkowników:

  • Właściciel (owner): Osoba, która stworzyła plik.
  • Grupa (group): Użytkownicy zgrupowani w grupie, której przypisano plik.
  • Pozostali (others): Wszyscy inni użytkownicy systemu.

Przykład praw dostępu dla pliku:

-rwxr-xr--

Rozszyfrujmy:

  • Pierwszy znak - oznacza, że to plik (dla katalogu będzie d).
  • Pierwsze trzy znaki rwx — prawa dla właściciela (odczyt, zapis, wykonywanie).
  • Kolejne trzy znaki r-x — prawa dla grupy (odczyt, wykonywanie).
  • Ostatnie trzy znaki r-- — prawa dla innych (tylko odczyt).

2. Komenda chmod: zarządzanie prawami dostępu

Symboliczny format zapisu

Komenda chmod zmienia prawa dostępu do plików i katalogów. Symboliczny format zapisu wygląda tak:

chmod [kto][akcja][prawa] nazwa_pliku
  • Kto: u (właściciel), g (grupa), o (pozostali), a (wszyscy).
  • Akcja: + (dodaj prawa), - (usuń prawa), = (ustaw dokładne prawa).
  • Prawa: r (czytanie), w (zapis), x (wykonywanie).

Przykłady:


# Ustaw prawa wykonania dla wszystkich
chmod a+x script.sh

# Dodaj możliwość zapisu tylko dla grupy
chmod g+w file.txt

# Zabierz prawo czytania dla pozostałych
chmod o-r document.txt

Ósemkowy format zapisu

Format ósemkowy (lub liczbowy) jest bardziej zwarty, ale wymaga zrozumienia "magii liczb". W tym formacie każda kombinacja praw jest reprezentowana liczbą:

  • r = 4
  • w = 2
  • x = 1

Prawa sumujemy:

  • rwx = 7 (4 + 2 + 1)
  • rw- = 6 (4 + 2)
  • r-- = 4

Format zapisu:

chmod [cyfra][cyfra][cyfra] nazwa_pliku

Przykład:


# Ustaw prawa rwx dla właściciela, r-x dla grupy, r-- dla pozostałych
chmod 754 file.sh

3. Zmiana właściciela pliku: polecenie chown

Jeśli musisz przekazać plik innemu użytkownikowi (lub grupie), pomoże polecenie chown.

Format:

chown [użytkownik]:[grupa] nazwa_pliku

Przykłady:


# Przekazanie własności użytkownikowi user1
chown user1 myfile.txt

# Przekazanie właściciela i grupy
chown user1:group1 myfile.txt

# Tylko zmiana grupy
chown :group2 myfile.txt

4. Maska domyślna: umask

Kiedy tworzysz plik, jego uprawnienia dostępu są określane przez system. Na przykład, uprawnienia mogą wyglądać jak rw-r--r--. Ale skąd one się biorą? Odpowiedź: z komendy umask.

Czym jest umask?

umask określa, które uprawnienia nie będą ustawione dla nowych plików.

Na przykład:

  • Podstawowy zestaw uprawnień dla pliku: 666 (brak wykonania).
  • Maska: 022.
  • Końcowe uprawnienia: 644 (666 - 022).

Komendy:

  • Zobacz aktualną maskę: umask
  • Ustaw nową maskę: umask 0022

Przykład:


# Ustawienie maski, aby nowe pliki miały rw-rw-r--
umask 0002

5. Uprawnienia administratora i sudo

Co to jest sudo?

sudo (skrót od "superuser do") to komenda w systemach Linux i Unix, która pozwala użytkownikowi wykonywać polecenia jako superużytkownik (root) lub inny użytkownik z podwyższonymi uprawnieniami.

System sudo zapewnia tymczasowy dostęp do możliwości administracyjnych bez potrzeby ciągłego działania na koncie root, co zmniejsza ryzyko przypadkowych lub złośliwych zmian w systemie.

Ważne!

Jeśli bardzo uprościć, to sudo wpisuje się przed komendą, którą trzeba wykonać z uprawnieniami administratora.

Jak działa sudo?

Uruchamianie polecenia:

Kiedy wpisujesz polecenie z sudo, system sprawdza, czy twój użytkownik ma prawo wykonywać polecenia z podwyższonymi uprawnieniami.

Na przykład:

sudo apt update

Uwierzytelnienie:

Przy pierwszym użyciu sudo w bieżącej sesji system poprosi o wprowadzenie hasła bieżącego użytkownika (nie root).

Po pomyślnym wprowadzeniu hasła system zachowuje uwierzytelnienie na krótki czas (zwykle 5-15 minut), aby nie pytać o hasło przy każdym poleceniu.

Wykonanie polecenia:

Jeśli użytkownik ma prawa, określone w konfiguracji sudo, polecenie zostanie wykonane z uprawnieniami superużytkownika.

Podstawowe funkcje i polecenia sudo

Uruchamianie polecenia z uprawnieniami:

sudo <komenda>

Na przykład:

sudo apt install nginx

Wykonywanie polecenia jako inny użytkownik: Użyj flagi -u:

sudo -u <nazwa_użytkownika> <komenda>

Na przykład:

sudo -u user1 ls /home/user1

Uzyskanie terminala administracyjnego: Uruchom powłokę z uprawnieniami root:

sudo -i

lub:

sudo su

Wyświetlanie konfiguracji sudo:

sudo -l

Pokazuje polecenia, które bieżący użytkownik ma prawo wykonać.

Edycja konfiguracji sudo:

sudo visudo

Ta komenda otwiera plik konfiguracyjny /etc/sudoers do bezpiecznej edycji.

6. Przykłady

Spróbujmy zastosować naszą wiedzę w praktyce.

Zadanie 1: Zarządzanie prawami za pomocą chmod

  1. Utwórz plik:

    touch myfile.txt
    
  2. Przyznaj właścicielowi prawa do odczytu, zapisu i wykonywania:

    chmod u+rwx myfile.txt
    
  3. Dodaj prawa tylko do odczytu dla pozostałych:

    chmod o+r myfile.txt
    
  4. Sprawdź prawa dostępu:

    ls -l myfile.txt
    

Zadanie 2: Zmiana właściciela za pomocą chown

  1. Utwórz plik:

    touch ownedfile.txt
    
  2. Zmień właściciela na użytkownika user1 (wymagane uprawnienia administratora):

    sudo chown user1 ownedfile.txt
    
  3. Sprawdź zmiany:

    ls -l ownedfile.txt
    

Zadanie 3: Eksperymenty z umask

  1. Sprawdź bieżącą maskę:

    umask
    
  2. Ustaw maskę na 027:

    umask 027
    
  3. Utwórz nowy plik:

    touch newfile.txt
    
  4. Sprawdź prawa utworzonego pliku:

    ls -l newfile.txt
    

7. Typowe błędy i cechy szczególne

  1. Zapomniano o sudo przy zmianie właściciela: Tylko administrator może zmieniać właściciela pliku. Jeśli zobaczysz błąd "Operation not permitted", spróbuj dodać sudo.
  2. Niepoprawna kolejność w komendzie chmod: Zmieniono prawa dostępu do niewłaściwego obiektu. Upewnij się, że wybrałeś właściwy plik lub katalog.
  3. umask wpływa tylko na nowe pliki: Jeśli próbujesz zmienić prawa dostępu już istniejących plików za pomocą umask, to nie zadziała. Użyj chmod.

Wiesz, że prawa dostępu w Linuxie są tak elastyczne, że można stworzyć plik, który "widzi" tylko jedna osoba na całym świecie? Jak to mówią, z wielkimi prawami przychodzi wielka odpowiedzialność! Teraz, uzbrojeni w chmod, chown i umask, jesteście gotowi, aby sprawić, że wasze systemy Linux będą nie tylko wygodne, ale i bezpieczne.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION