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ć:
- Odczyt (r): Pozwala przeglądać zawartość pliku lub listę plików w katalogu.
- Zapisywanie (w): Pozwala zmieniać zawartość pliku lub dodawać/usuwać pliki z katalogu.
- 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ędzied). - 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 = 4w = 2x = 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.
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
Utwórz plik:
touch myfile.txtPrzyznaj właścicielowi prawa do odczytu, zapisu i wykonywania:
chmod u+rwx myfile.txtDodaj prawa tylko do odczytu dla pozostałych:
chmod o+r myfile.txtSprawdź prawa dostępu:
ls -l myfile.txt
Zadanie 2: Zmiana właściciela za pomocą chown
Utwórz plik:
touch ownedfile.txtZmień właściciela na użytkownika
user1(wymagane uprawnienia administratora):sudo chown user1 ownedfile.txtSprawdź zmiany:
ls -l ownedfile.txt
Zadanie 3: Eksperymenty z umask
Sprawdź bieżącą maskę:
umaskUstaw maskę na
027:umask 027Utwórz nowy plik:
touch newfile.txtSprawdź prawa utworzonego pliku:
ls -l newfile.txt
7. Typowe błędy i cechy szczególne
- Zapomniano o
sudoprzy 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. - 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. umaskwpł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żyjchmod.
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.
GO TO FULL VERSION