Przejdź do głównej treści

Kwalifikacja: INF.02 - Administracja i eksploatacja systemów komputerowych, urządzeń peryferyjnych i lokalnych sieci komputerowych

Zawód: Technik informatyk

Kategorie: Systemy operacyjne Bezpieczeństwo i kopie zapasowe Linux/Unix

Które polecenie w systemie Linux nada uprawnienia do pisania dla wszystkich obiektów w /usr/share dla wszystkich użytkowników, nie zmieniając pozostałych uprawnień?

A. chmod ugo+rw /usr/share
B. chmod a-w /usr/share
C. chmod -R a+w /usr/share
D. chmod -R o+r /usr/share

Pytanie z egzaminu CKE, styczeń 2019 (arkusz EE.08-X-19.01).

Polecenie chmod -R a+w /usr/share jest poprawne, bo dokładnie spełnia warunki z pytania. Opcja -R oznacza działanie rekurencyjne, czyli chmod przejdzie przez katalog /usr/share oraz jego podkatalogi i pliki. Symbol a oznacza wszystkich użytkowników: właściciela pliku, grupę oraz pozostałych użytkowników, czyli w praktyce to samo co ugo. Operator + dodaje wskazane uprawnienie, a w oznacza prawo zapisu. Ważne jest to, że zapis a+w tylko dodaje możliwość pisania i nie kasuje istniejących praw odczytu, wykonania ani innych ustawień, więc pozostałe uprawnienia zostają bez zmian. Z mojego doświadczenia warto jednak mocno uważać z takim poleceniem, bo /usr/share to katalog systemowy, zwykle przeznaczony na współdzielone dane aplikacji zgodnie z FHS, czyli Filesystem Hierarchy Standard. Nadanie zapisu wszystkim użytkownikom w takim miejscu jest raczej złą praktyką bezpieczeństwa. W realnej administracji częściej używa się grup, ACL przez setfacl albo konkretnych katalogów roboczych, zamiast robić cały katalog systemowy zapisywalny dla każdego. Składniowo jednak odpowiedź jest właściwa: rekurencyjnie, dla wszystkich użytkowników, dodaje tylko uprawnienie zapisu.
W tym pytaniu kluczowe są trzy elementy: działanie rekurencyjne, nadanie prawa zapisu oraz zachowanie istniejących uprawnień. Samo chmod bez opcji -R działa tylko na wskazany katalog, a nie na wszystkie pliki i podkatalogi znajdujące się wewnątrz. To częsty błąd, bo ktoś widzi ścieżkę /usr/share i zakłada, że polecenie automatycznie obejmie całą zawartość. W Linuksie tak to nie działa, trzeba jawnie użyć -R, jeśli mówimy o wszystkich obiektach w drzewie katalogów.

Polecenie z a-w robi dokładnie odwrotnie niż potrzeba, ponieważ operator - odbiera uprawnienie, a nie je nadaje. W praktyce usunęłoby możliwość zapisu dla wszystkich klas użytkowników na samym katalogu /usr/share, więc sens polecenia jest przeciwny do wymagań. Z kolei zapis ugo+rw dodaje i odczyt, i zapis dla właściciela, grupy oraz innych, ale bez -R dotyczy tylko samego katalogu. Dodatkowo zmienia więcej, niż trzeba, bo pytanie mówi konkretnie o uprawnieniu do pisania, a nie o dokładaniu odczytu. Moim zdaniem to typowa pułapka: ugo wygląda podobnie do a, ale brak rekurencji i dodanie r robią różnicę.

Polecenie o+r również nie pasuje, bo odnosi się tylko do innych użytkowników, czyli others, a nie do wszystkich klas uprawnień. Poza tym dodaje odczyt, a nie zapis. W administracji systemem trzeba bardzo precyzyjnie rozumieć symbole chmod: u to właściciel, g to grupa, o to pozostali, a to wszyscy, + dodaje, - odbiera, a -R schodzi w głąb katalogów. Dobre praktyki bezpieczeństwa, szczególnie zasada najmniejszych uprawnień, mówią też, żeby nie rozszerzać praw szerzej niż potrzeba, zwłaszcza w katalogach systemowych takich jak /usr/share.

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.