Linux w kwalifikacji INF.02: najważniejsze zasady, przykłady i 213 powiązanych pytań w banku.
W Linuksie o dostępie do pliku decydują trzy bity rwx nadane osobno właścicielowi, grupie i pozostałym użytkownikom, a większość ustawień systemu to zwykłe pliki tekstowe w /etc. Zadania z INF.02 rzadko pytają o definicje: częściej trzeba odczytać wynik polecenia, przeliczyć uprawnienia na zapis ósemkowy albo wskazać plik z konkretną konfiguracją. Ucz się więc na wpisach i wynikach poleceń, bo dokładnie one pojawiają się w arkuszu.
Katalogi systemu według FHS
/etc
konfiguracja systemu i usług
/var, /var/log
dane zmienne, logi systemowe
/home/nazwa
katalogi domowe użytkowników
/root
katalog domowy roota, poza /home
/usr/bin, /usr/sbin
programy dla wszystkich, narzędzia administracyjne
/dev
pliki urządzeń: /dev/sda1, /dev/nvme0n1p1
/proc, /sys
tworzone w pamięci przez jądro: stan procesów i sprzętu
/boot
obraz jądra i pliki rozruchowe
/dev/sda1 to pierwsza partycja pierwszego dysku SATA lub SCSI, a /proc/cpuinfo pokazuje dane procesora, choć nie leży na dysku.
Uprawnienia rwx i zapis ósemkowy
Każdy plik ma trzy zestawy uprawnień: właściciela, grupy i pozostałych. W zapisie ósemkowym r to 4, w to 2, x to 1, a każdą trójkę sumujesz osobno:
-rwxr-xr-- wynik polecenia ls -l
--- pierwszy znak to TYP pliku: "-" zwykly, "d" katalog
rwx wlasciciel: 4+2+1 = 7
r-x grupa: 4+0+1 = 5
r-- pozostali: 4+0+0 = 4
-> 754
W drugą stronę 640 to rw-r-----: właściciel czyta i zapisuje, grupa tylko czyta, pozostali nic. Przy katalogu x pozwala wejść i sięgnąć po plik o znanej nazwie, r wypisać nazwy plików, a w tworzyć i usuwać wpisy. Usunięcie pliku zależy więc od prawa zapisu do katalogu, nie do samego pliku. Kombinacje przećwiczysz w kalkulatorze uprawnień chmod. Polecenia chmod, chown i umask
chmod 755 skrypt.sh # ustawia wszystkie dziewiec bitow naraz
chmod u+x skrypt.sh # dodaje tylko x wlascicielowi, reszty nie rusza
chown anna:uczniowie raport.txt # wlasciciel i grupa naraz (wymaga roota)
chgrp uczniowie raport.txt # sama grupa; moze wlasciciel pliku,
# o ile nalezy do grupy docelowej
umask nie nadaje uprawnień, tylko wycina bity z wartości bazowych: 666 dla plików i 777 dla katalogów.
umask
Nowy plik
Nowy katalog
Bity są kasowane, a nie odejmowane: umask 023 daje plik 644, nie 643, bo w wartości bazowej pliku i tak nie było bitu x.
Konta w /etc/passwd i hasła w /etc/shadow
Wiersz /etc/passwd ma siedem pól rozdzielonych dwukropkiem:
anna:x:1001:1001:Anna Kowalska:/home/anna:/bin/bash
| | | | | | |
| | | | | | powloka
| | | | | katalog domowy
| | | | opis konta
| | | GID
| | UID
| "x" = skrot hasla siedzi w /etc/shadow
nazwa konta
UID 0 ma root, konta systemowe mieszczą się poniżej 1000, a zwykli użytkownicy w Debianie i Ubuntu dostają numery od 1000 w górę.
/etc/passwd czyta każdy użytkownik, dlatego skróty haseł leżą osobno: /etc/shadow należy do root:shadow i ma prawa 640. Powłoka /usr/sbin/nologin blokuje logowanie kont usług. Grupy dodatkowe opisuje /etc/group, a konto dopisuje się do grupy tak:
usermod -aG grupa uzytkownik # -a znaczy "dopisz"
usermod -G grupa uzytkownik # BEZ -a: odbiera wszystkie pozostale grupy dodatkowe
Procesy, przekierowania i potoki
wszystkie procesy z PID i właścicielem
ps aux
grzeczne zakończenie procesu (SIGTERM, 15)
kill PID
twarde zabicie (SIGKILL)
kill -9 PID
policz procesy o nazwie
pgrep -c sshd
Przekierowania decydują, dokąd trafia wynik polecenia:
polecenie > plik.txt # standardowe wyjscie do pliku, NADPISUJE
polecenie >> plik.txt # dopisuje na koniec
polecenie 2> bledy.txt # osobny strumien bledow
Potok podaje wyjście jednego polecenia na wejście następnego. Klasyczne zadanie „policz działające procesy" ma tu pułapkę:
ps aux | grep sshd | wc -l # doliczy WLASNY proces grep, czyli o jeden za duzo
pgrep -c sshd # pewny wynik
ps aux | grep [s]shd | wc -l # sztuczka z nawiasem: grep nie znajdzie sam siebie
Plik fstab, systemctl i menedżery pakietów
mount /dev/sdb1 /mnt/dane # podlacz partycje
umount /mnt/dane # odlacz
blkid # pokaz UUID partycji
mount -a # sprawdz wpisy z /etc/fstab
Wiersz /etc/fstab ma sześć pól: urządzenie, punkt montowania, system plików, opcje, dump i kolejność sprawdzania; w szóstym polu partycja główna ma 1, pozostałe 2, a 0 wyłącza kontrolę. Po edycji uruchom mount -a, bo błąd w tym pliku potrafi zatrzymać start systemu.
Usługami zarządza systemctl i dwie jego komendy znaczą co innego:
systemctl start nazwa # uruchom TERAZ, bez autostartu
systemctl enable nazwa # tylko autostart, teraz nie uruchamia
systemctl enable --now nazwa # obie rzeczy naraz
systemctl status nazwa # stan i ostatnie wiersze logu
Pakiety instaluje menedżer właściwy dla dystrybucji:
apt update && apt install nazwa # Debian, Ubuntu (.deb)
dnf install nazwa # Fedora, RHEL (.rpm)