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ć:
- 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 = 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.
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.txt
Przyznaj właścicielowi prawa do odczytu, zapisu i wykonywania:
chmod u+rwx myfile.txt
Dodaj prawa tylko do odczytu dla pozostałych:
chmod o+r myfile.txt
Sprawdź prawa dostępu:
ls -l myfile.txt
Zadanie 2: Zmiana właściciela za pomocą chown
Utwórz plik:
touch ownedfile.txt
Zmień właściciela na użytkownika
user1
(wymagane uprawnienia administratora):sudo chown user1 ownedfile.txt
Sprawdź zmiany:
ls -l ownedfile.txt
Zadanie 3: Eksperymenty z umask
Sprawdź bieżącą maskę:
umask
Ustaw maskę na
027
:umask 027
Utwórz nowy plik:
touch newfile.txt
Sprawdź prawa utworzonego pliku:
ls -l newfile.txt
7. Typowe błędy i cechy szczególne
- 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
. - 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. 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ż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