Przejdź do głównej treści

Kwalifikacja: EE8 - Kwalifikacja EE8

Zawód: Technik informatyk

Kategorie: Systemy operacyjne Bezpieczeństwo i BHP

Administrator systemu Linux wylistował zawartość katalogu /home/szkoła w terminalu i uzyskał następujący wynik:

-rwx --x r-x 1 admin admin 25 04-09 15:17 szkola.txt

Następnie wydał polecenie:

chmod ug=rw szkola.txt | ls -l

Jaki będzie efekt jego działania, wyświetlony w oknie terminala?

A. -rwx r-x r-x 1 admin admin 25 04-09 15:17 szkola.txt
B. -rwx --x rw- 1 admin admin 25 04-09 15:17 szkola.txt
C. -rw- rw- rw- 1 admin admin 25 04-09 15:17 szkola.txt
D. -rw- rw- r-x 1 admin admin 25 04-09 15:17 szkola.txt

Pytanie z egzaminu CKE, styczeń 2018 (arkusz E.12-X-18.01).

Wynik -rw- rw- r-x 1 admin admin 25 04-09 15:17 szkola.txt jest poprawny, bo polecenie chmod ug=rw ustawia dokładnie prawa dla użytkownika właściciela oraz grupy na odczyt i zapis. Ważne jest słowo dokładnie: operator = nie dodaje uprawnień, tylko zastępuje dotychczasowy zestaw praw dla wskazanych klas. Na początku plik miał prawa: właściciel rwx, grupa --x, inni r-x. Po wykonaniu chmod ug=rw właściciel traci prawo wykonywania x i dostaje rw-, grupa traci samo x i dostaje rw-, a prawa dla innych użytkowników nie są ruszane, więc zostają r-x. Dlatego końcowy zapis to -rw- rw- r-x. W praktyce przy administracji Linuksem to bardzo istotne, bo pomylenie = z + może zostawić niepotrzebne uprawnienia, np. wykonanie skryptu albo dostęp do danych. Z mojego doświadczenia lepiej po zmianie praw sprawdzać wynik poleceniem ls -l szkola.txt. Jeszcze drobna uwaga: użycie potoku | między chmod i ls -l nie jest dobrą praktyką, bo chmod nie przekazuje tu sensownych danych na standardowe wyjście. Bardziej administracyjnie poprawnie byłoby użyć chmod ug=rw szkola.txt && ls -l szkola.txt. W zadaniu chodzi jednak o sam efekt zmiany uprawnień pliku.
W tym zadaniu najłatwiej pomylić działanie operatora = w chmod z operatorami + oraz -. Polecenie chmod ug=rw nie oznacza: dodaj odczyt i zapis, zostawiając resztę bez zmian. Ono ustawia dla właściciela u i grupy g dokładnie zestaw rw. To powoduje, że wszystkie inne prawa w tych dwóch klasach są usuwane, w tym prawo wykonywania x. Dlatego wynik, w którym właściciel nadal ma rwx, nie pasuje do tego polecenia. Taki efekt byłby bardziej kojarzony z czymś w stylu chmod ug+rw, gdzie dodajemy prawa, ale nie kasujemy istniejących. Równie częsty błąd to założenie, że zmieni się także grupa others, czyli pozostali użytkownicy. W poleceniu występuje tylko ug, więc prawa dla o nie są modyfikowane. Jeśli wcześniej inni mieli r-x, to po komendzie nadal mają r-x, a nie rw-. Odpowiedź z trzema zestawami rw- sugeruje, że ktoś potraktował chmod jak zmianę wszystkich klas naraz, czyli jakby użyto a=rw albo ugo=rw. To nie jest ten przypadek. Trzeba też uważać na potok |. On nie służy do sekwencyjnego uruchamiania komend administracyjnych, tylko do przekazywania wyjścia jednej komendy na wejście drugiej. Tutaj ls -l po prostu pokaże listing, ale fachowo lepiej użyć &&, jeśli chcemy najpierw zmienić prawa, a potem dopiero sprawdzić wynik. Sedno pozostaje takie: u i g zostają ustawione na rw-, a o pozostaje bez zmian jako r-x.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.