W systemie Linux polecenie chmod umożliwia
A. wyświetlenie informacji o ostatniej aktualizacji pliku
B. naprawę systemu plików
C. zmianę właściciela pliku
D. ustawienie praw dostępu do pliku
Pytanie z egzaminu CKE, czerwiec 2019 (arkusz EE.08-X-19.06).
Polecenie chmod w Linuksie służy do ustawiania praw dostępu do pliku lub katalogu, czyli do zmiany tzw. trybu pliku. W praktyce chodzi o uprawnienia odczytu r, zapisu w oraz wykonania x dla trzech grup: właściciela pliku, grupy oraz pozostałych użytkowników. To jedna z podstawowych rzeczy w administracji Linuksem, bo od poprawnych uprawnień zależy i wygoda pracy, i bezpieczeństwo systemu. Przykładowo chmod u+x skrypt.sh nada właścicielowi prawo uruchamiania skryptu, a chmod 640 dane.txt ustawi odczyt i zapis dla właściciela, odczyt dla grupy i brak dostępu dla innych. Moim zdaniem warto od razu kojarzyć chmod z wynikiem polecenia ls -l, gdzie widać coś w stylu -rw-r--r--. Dobre praktyki mówią, żeby nadawać tylko takie uprawnienia, jakie są naprawdę potrzebne, zgodnie z zasadą najmniejszych uprawnień. Trzeba też uważać na chmod 777, bo daje pełny dostęp wszystkim użytkownikom i w normalnej administracji serwera jest to raczej proszenie się o kłopoty. Przy katalogach bit x oznacza możliwość wejścia do katalogu, a nie uruchomienie go, co często na początku trochę myli.
W tym pytaniu łatwo pomylić kilka poleceń systemu Linux, bo wszystkie dotyczą plików albo administracji systemem, ale robią zupełnie inne rzeczy. chmod nie służy do sprawdzania czasu ostatniej aktualizacji pliku. Takie informacje można zobaczyć na przykład przez ls -l, stat albo w pewnym zakresie przez menedżer plików. Czas modyfikacji, dostępu czy zmiany metadanych to osobny temat i nie należy go mieszać z uprawnieniami dostępu. Samo chmod nie pokazuje historii aktualizacji, tylko zmienia tryb dostępu zapisany w metadanych pliku. Zmiana właściciela pliku też nie jest zadaniem chmod. Do tego używa się chown, ewentualnie chgrp do zmiany grupy. To typowy błąd myślowy: skoro właściciel i uprawnienia są widoczne obok siebie w wyniku ls -l, to wydaje się, że jedno polecenie obsługuje wszystko. W praktyce administracyjnej są to rozdzielone operacje, bo własność pliku i prawa dostępu to różne mechanizmy kontroli. Naprawa systemu plików również nie ma z chmod nic wspólnego. Do diagnostyki i naprawy struktur systemu plików używa się narzędzi takich jak fsck, zależnie od typu partycji i sytuacji awaryjnej. chmod działa na poziomie uprawnień konkretnego pliku lub katalogu, nie naprawia uszkodzonych bloków, tablic alokacji ani dziennika systemu plików. Z mojego doświadczenia najlepiej zapamiętać to prosto: chmod odpowiada za prawa r, w, x; chown za właściciela; ls lub stat za informacje o pliku; fsck za kontrolę i naprawę systemu plików. Taki podział bardzo pomaga podczas pracy w terminalu, szczególnie na serwerach, gdzie pomylenie poleceń może narobić trochę bałaganu.