W systemie Linux polecenie chmod 321 start spowoduje nadanie następujących uprawnień plikowi start:
A. zapis, odczyt i wykonanie dla użytkownika root, odczyt i wykonanie dla użytkownika standardowego, odczyt dla pozostałych
B. czytanie, zapis i wykonanie dla właściciela pliku, zapis i wykonanie dla grupy i czytanie dla pozostałych
C. pełna kontrola dla użytkownika root, zapis i odczyt dla użytkownika standardowego, odczyt dla pozostałych
D. wykonanie i zapis dla właściciela pliku, zapis dla grupy, wykonanie dla pozostałych
Pytanie z egzaminu CKE, styczeń 2020 (arkusz E.12-SG-20.01).
Polecenie chmod 321 start ustawia uprawnienia pliku start w zapisie ósemkowym, czyli takim, który w Linuksie jest standardowo używany do szybkiego nadawania praw dostępu. Trzy cyfry oznaczają kolejno: właściciela pliku, grupę oraz pozostałych użytkowników. Każda cyfra jest sumą wartości: odczyt r = 4, zapis w = 2, wykonanie x = 1. Dlatego 3 oznacza 2 + 1, czyli zapis i wykonanie, bez odczytu. Cyfra 2 daje tylko zapis dla grupy, a 1 daje tylko wykonanie dla pozostałych. W efekcie chmod 321 start ustawi prawa: właściciel ma wx, grupa ma w, inni mają x. W praktyce takie uprawnienia są dość nietypowe, bo np. wykonanie pliku bez prawa odczytu może mieć sens przy skryptach lub programach, ale grupa z samym zapisem to już ustawienie, które trzeba stosować bardzo świadomie. Z mojego doświadczenia najważniejsze jest zapamiętać kolejność: user, group, others, a nie root, zwykły użytkownik i reszta. To jest bardzo częsta pułapka na sprawdzianach i w terminalu też można się przez to nieźle pomylić.
W tym pytaniu łatwo pomylić dwa pojęcia: właściciela pliku z użytkownikiem root oraz grupę z jakimś użytkownikiem standardowym. Polecenie chmod nie nadaje uprawnień według schematu root, zwykły użytkownik, pozostali. W klasycznym modelu praw dostępu systemów Unix/Linux zawsze chodzi o trzy klasy: właściciel pliku, grupa przypisana do pliku oraz inni użytkownicy. Root jako administrator i tak ma specjalne możliwości omijania typowych ograniczeń, ale nie jest osobną pozycją w zapisie 321. To ważna rzecz administracyjna, bo przy zarządzaniu plikami patrzymy też na właściciela przez ls -l oraz zmieniamy go np. poleceniem chown. Błędne odpowiedzi wynikają też z niepoprawnego odczytania wartości cyfr. W chmod liczby nie są losowymi poziomami dostępu typu mało, średnio, dużo, tylko sumą bitów: 4 to odczyt, 2 to zapis, 1 to wykonanie. Pełny zestaw rwx to 7, bo 4 + 2 + 1 = 7. Zapis 321 nie może więc oznaczać pełnej kontroli dla kogokolwiek, bo pierwsza cyfra to tylko 3, czyli brakuje odczytu. Podobnie zapis i wykonanie dla grupy miałby wartość 3, a nie 2. Gdy ktoś widzi odpowiedź z prawami rwx dla właściciela, wx dla grupy i r dla pozostałych, to tak naprawdę opisuje chmod 734, a nie chmod 321. Moim zdaniem najlepsza metoda na uniknięcie pomyłki to rozpisać sobie cyfry na bity: 3 = wx, 2 = w, 1 = x. Krótko, ale działa prawie zawsze.