Skrypt powłoki i uprawnienia w Linuksie
Zadanie ze skryptem zakładającym konta i poleceniem chmod wraca w arkuszach INF.02 regularnie. Gotowy szablon, zapis uprawnień ósemkowo i pułapki, które zerują punkt.
Arkusze INF.02 lubią polecenie w stylu: napisz skrypt, który założy konta użytkownikom, utworzy katalog i nada mu określone uprawnienia. To zadanie wygląda groźniej, niż jest — cały schemat można zapamiętać jako szablon i podstawiać do niego dane z arkusza.
1. Szablon skryptu, który działa zawsze
#!/bin/bash # 1. grupa, jeśli zadanie jej wymaga groupadd pracownicy # 2. konta użytkowników useradd -m -g pracownicy -s /bin/bash kowalski useradd -m -g pracownicy -s /bin/bash nowak # 3. hasło początkowe echo "kowalski:Start123" | chpasswd # 4. katalog współdzielony i uprawnienia mkdir -p /dane/wspolne chown :pracownicy /dane/wspolne chmod 770 /dane/wspolne
Trzy przełączniki, które musisz znać
-m tworzy katalog domowy, -g przypisuje grupę główną, -s
ustawia powłokę. Brak -m to najczęstsza przyczyna utraty punktu: konto powstaje,
ale użytkownik nie ma katalogu domowego.
2. Uprawnienia ósemkowo
Zapis liczbowy to suma trzech wartości dla każdej z trzech grup: właściciela, grupy i pozostałych.
| Wartość | Uprawnienie | Znaczenie dla katalogu |
|---|---|---|
4 | odczyt (r) | można wylistować zawartość |
2 | zapis (w) | można tworzyć i usuwać pliki |
1 | wykonanie (x) | można wejść do katalogu |
chmod 770— właściciel i grupa mają wszystko, pozostali nic.chmod 755— właściciel wszystko, reszta może czytać i wchodzić.chmod 644— typowe dla plików: właściciel zapisuje, reszta tylko czyta.
3. Pułapki, które zerują punkt
- Brak
#!/bin/bashw pierwszej linii. Skrypt bywa wtedy uruchamiany inną powłoką i składnia przestaje działać. - Brak prawa wykonania dla samego skryptu. Po zapisaniu pliku wykonaj
chmod +x konta.sh, inaczej egzaminator zobaczy błąd zamiast efektu. - Uprawnienie
xpominięte przy katalogu. Bez niego nie da się do niego wejść, nawet mając prawo odczytu. - Katalog utworzony przed grupą.
chownna nieistniejącą grupę kończy się błędem, a reszta skryptu leci dalej, jakby nic się nie stało.
Pozostałe zagadnienia systemowe znajdziesz w teorii INF.02.