Przejdź do treści
Pewniak INF.02Średni

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śćUprawnienieZnaczenie dla katalogu
4odczyt (r)można wylistować zawartość
2zapis (w)można tworzyć i usuwać pliki
1wykonanie (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/bash w 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 x pominięte przy katalogu. Bez niego nie da się do niego wejść, nawet mając prawo odczytu.
  • Katalog utworzony przed grupą. chown na 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.