chmod ( – zmiana atrybutu) – polecenie zmiany zezwoleń dostępu do plików w systemach uniksowych.
Użycie chmod [opcje] uprawnienia plik
argumentznaczenie -c, --changesjak -v, ale podanie tylko kiedy zaszła zmiana --no-preserve-rootbez traktowania katalogu '/' w specjalny sposób (domyślnie) --preserve-rootodmowa rekursywnego działania na '/' -f, --silent, --quietwyłączenie większości komunikatów o błędach -v, --verbosewypisanie informacji o każdym przetwarzanym pliku --reference=plik_wzorcowy użycie uprawnień pliku plik_wzorcowy zamiast wartości uprawnienia -R, --recursivezmiany też w plikach w podkatalogach --helpwyświetlenie tego opisu i zakończenie --versionwyświetlenie informacji o wersji i zakończenie
Opis klas użytkowników u – użytkownik () g – grupa () o – inni () a – wszyscy ()
Uprawnienia Istnieje kilka sposobów zapisu praw do danego pliku. Najpopularniejszymi są: system numeryczny, oraz literowy. Numerycznie chmod przyjmuje odpowiednią wartość potęgi dwójki dla każdego typu akcji (zapisu, odczytu, uruchomienia). Typ zapisuPrawo odczytuPrawo zapisuPrawo uruchomienia Specjalne prawo uruchomieniaUID/GIDsticky bitPotęga dwójki222120Wartość w ósemkowym systemie liczbowym421Znakr (ang. read)w (ang. write)x (ang. execute)Xst
Aby zapisać uprawnienia w systemie numerycznym należy dodać liczby odpowiadające uprawnieniom, które chcemy przyznać. Należy tak postąpić osobno dla właściciela, grupy oraz innych, np. właściciel – wszystkie prawa, grupa – odczyt, inni – brak należy zapisać jako: 740.
Aby zapisać uprawnienia w systemie znakowym należy wpisać znak u, g, o lub a (patrz Opis parametrów) następnie znak: + jeżeli chcemy dodać uprawnienia, – jeżeli chcemy odebrać uprawnienia, = jeżeli chcemy zmienić uprawnienia (tzn. przypisać takie, jakie podamy), a następnie odpowiednie oznaczenia z tabeli. Po przecinku można dopisać kolejne uprawnienia (np. u=rwx,g+rw,o-r wprowadza następujące zmiany: dla właściciela – ustawiono odczyt, zapis oraz wykonanie, ale to ostatnie tylko wtedy jeżeli ono już jest ustawione, w innych plikach pozostanie wyłączone, dla grupy – dodano odczyt i zapis, dla innych – odebrano odczyt.)
By zobaczyć jakie prawa ma dany plik, lub katalog wystarczy użyć polecenia ls z (opcją -l).
$ ls -l razem 2844 drw-r--r-- 1 user admin 4096 maj 28 16:38 folder1/ drwxrwxr-x 6 user admin 4096 maj 25 19:18 folder2/ drw-rw-r-- 1 user admin 4096 maj 26 15:56 folder3/
Tabela z interpretacją kodów ósemkowych CyfraPrawaLiteraBinarnie0Brak praw ---0001Wykonywanie --x0012Zapis -w-0103Zapis i wykonanie -wx0114Odczyt r--1005Odczyt i wykonanie r-x1016Odczyt i zapis rw-1107Odczyt, zapis i wykonanie rwx111
Przykłady uprawnień Prawa dostępuWartość liczbowaOpis -rw-------600Tylko właściciel ma prawo do odczytu i zapisu. -rw-r--r--644Właściciel ma prawo do zapisu i odczytu, a reszta tylko prawo odczytu. -rw-rw-rw-666Wszyscy mają prawo do odczytu i zapisu. -rwx------700Tylko właściciel ma prawo do odczytu, zapisu, uruchomienia. -rwxr-xr-x755Właściciel ma wszystkie prawa do pliku, reszta tylko prawo do odczytu i uruchomienia. -rwxrwxrwx777Wszyscy mają wszystkie prawa do pliku. -rwx--x--x711Wszystkie prawa ma właściciel, reszta tylko prawo uruchomienia. drwx------700Właściciel katalogu ma pełne prawa do niego (katalogi mają literkę 'd' na początku zamiast '-') drwxr--r--744Właściciel ma pełne prawa do katalogu, reszta ma prawo do odczytu. -rwxr-xr-x4755Właściciel ma pełne prawa do pliku, grupa ma prawa odczytu i wykonania, reszta ma prawo odczytu i uruchamiania. Plik ma atrybut SUID (pierwsza cyfra w opcjach jest równa 4). Oznacza to, że plik wykonywalny, np. wywołuje proces i oddaje mu kontrole nad wykonaniem zadania. Bez opcji SUID proces działa z uprawnieniami użytkownika, który uruchomił plik, co czasami może powodować niewykonanie zadania, gdyż użytkownik nie miał dostatecznych uprawnień. Z opcją SUID proces pobiera uprawnienia właściciela pliku, najczęściej roota. Polecenie ping i uprawnienia do pliku wykonywalnego są przykładem wykorzystania tej opcji.
Przykłady użycia $ chmod a+w plik.txt — nadaje wszystkim uprawnienia do zmiany 'plik.txt', $ chmod o-x plik.txt — usuwa możliwość wykonywania 'plik.txt' przez pozostałych użytkowników, $ chmod go-rx plik.txt — usuwa możliwość odczytywania i wykonywania "plik.txt" przez grupę i pozostałych użytkowników. $ chmod -R 777 /home/user — wszyscy będą mogli zmieniać zawartość katalogu /home/user oraz jego podkatalogów, jak też czytać go i wykonywać zawarte w nim pliki
Zobacz też umask
Linki zewnętrzne Kalkulator ułatwiający liczbowe określenie praw do pliku
Kategoria:Polecenia Unix