chmod

chmod (ang. change mode – 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_wzorcowyuż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 (ang. user)
  • g – grupa (ang. group)
  • o – inni (ang. others)
  • a – wszyscy (ang. all)

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 uruchomieniaSpecjalne prawo uruchomieniaUID/GIDsticky bit
Potęga dwójki222120
Wartość w ósemkowym systemie liczbowym421
Znakr (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

CyfraPrawaLiteraBinarnie
0Brak praw---000
1Wykonywanie--x001
2Zapis-w-010
3Zapis i wykonanie-wx011
4Odczytr--100
5Odczyt i wykonanier-x101
6Odczyt i zapisrw-110
7Odczyt, zapis i wykonanierwx111

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.
-rwsr-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ż

Linki zewnętrzne