Wynik ls -l zaczyna się od 10 znaków: 1 znak typu (np. "-" dla pliku zwykłego) oraz 9 znaków uprawnień w trzech trójkach: u (właściciel), g (grupa), o (inni). Każda trójka to kolejno r (odczyt), w (zapis), x (wykonywanie) albo "-" (brak).
Stan początkowy to -rwx --x r-x, czyli:
- właściciel ma rwx (czyta, zapisuje i uruchamia),
- grupa ma --x (może tylko uruchamiać),
- inni mają r-x (mogą czytać i uruchamiać, bez zapisu).
Polecenie chmod ug=rw szkola.txt używa zapisu symbolicznego z operatorem =. Ten operator ustawia dokładnie wskazany zestaw uprawnień dla podanych klas. Zapis ug=rw oznacza: dla u oraz g ustaw rw- (czytanie i zapis, bez wykonywania). To zastępuje wcześniejsze wartości dla tych klas, więc:
- u: z rwx robi się rw- (znika x),
- g: z --x robi się rw- (pojawia się r i w, znika x).
Kluczowe jest, że w poleceniu nie ma klasy o. Skoro nie została wymieniona, to jej uprawnienia pozostają bez zmian. Nadal jest więc r-x. Końcowy zapis uprawnień to -rw- rw- r-x, a pozostałe kolumny (właściciel, grupa, rozmiar, data, nazwa) pozostają zgodne z listingiem.
Dlaczego pozostałe odpowiedzi są błędne?
- -rwx --x rw- pozostawia prawa właściciela i grupy jak przed zmianą i zmienia "inni", choć polecenie modyfikuje u i g.
- -rwx r-x r-x sugeruje, że dodano/pozostawiono x dla u i g, a operator = z rw ustawia brak wykonywania.
- -rw- rw- rw- błędnie zakłada, że klasa o też zostanie ustawiona na rw- albo że brak jej wskazania "resetuje" ją do innej wartości; w tym poleceniu o nie jest modyfikowane.
Wskazówka egzaminacyjna: zawsze rozdziel analizę na trzy kroki: (1) odczytaj u/g/o ze stanu początkowego, (2) zastosuj regułę operatora (= to "ustaw dokładnie"), (3) zostaw bez zmian klasy niewymienione w chmod.