chmod

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania

chmod (ang. change mode - zmiana atrybutu) — polecenie zmiany zezwoleń dostępu do plików w systemach uniksowych.

Użycie[edytuj | edytuj kod]

chmod [opcje] uprawnienia plik
argument znaczenie
-c, --changes jak -v, ale podanie tylko kiedy zaszła zmiana
--no-preserve-root bez traktowania katalogu '/' w specjalny sposób (domyślnie)
--preserve-root odmowa rekursywnego działania na '/'
-f, --silent, --quiet wyłączenie większości komunikatów o błędach
-v, --verbose wypisanie informacji o każdym przetwarzanym pliku
--reference=plik_wzorcowy użycie uprawnień pliku plik_wzorcowy zamiast wartości uprawnienia
-R, --recursive zmiany też w plikach w podkatalogach
--help wyświetlenie tego opisu i zakończenie
--version wyświetlenie informacji o wersji i zakończenie

Opis klas użytkowników[edytuj | edytuj kod]

  • u - użytkownik (ang. user)
  • g - grupa (ang. group)
  • o - inni (ang. others)
  • a - wszyscy (ang. all)

Uprawnienia[edytuj | edytuj kod]

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 zapisu Prawo odczytu Prawo zapisu Prawo uruchomienia Specjalne prawo uruchomienia UID/GID sticky bit
Potęga dwójki 22 21 20
Wartość w ósemkowym systemie liczbowym 4 2 1
Znak r (ang. read) w (ang. write) x (ang. execute) X s t

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[edytuj | edytuj kod]

Cyfra Prawa Litera
0 Brak praw
1 Wykonywanie x
2 Pisanie w
3 Wykonywanie i pisanie wx
4 Czytanie r
5 Czytanie i wykonywanie rx
6 Czytanie i pisanie rw
7 Czytanie, pisanie i wykonywanie rwx

Przykłady uprawnień[edytuj | edytuj kod]

Prawa dostępu Wartość liczbowa Opis
-rw------- 600 Tylko właściciel ma prawo do odczytu i zapisu.
-rw-r--r-- 644 Właściciel ma prawo do zapisu i odczytu, a reszta tylko prawo odczytu.
-rw-rw-rw- 666 Wszyscy mają prawo do odczytu i zapisu.
-rwx------ 700 Tylko właściciel ma prawo do odczytu, zapisu, uruchomienia.
-rwxr-xr-x 755 Właściciel ma wszystkie prawa do pliku, reszta tylko prawo do odczytu i uruchomienia.
-rwxrwxrwx 777 Wszyscy mają pełne prawa (niezalecane).
-rwx--x--x 711 Wszystkie prawa ma właściciel, reszta tylko prawo uruchomienia.
drwx------ 700 Właściciel katalogu ma pełne prawa do niego (katalogi mają literkę 'd' na początku zamiast '-')
drwxr--r-- 744 Właściciel ma pełne prawa do katalogu, reszta ma prawo do odczytu.
-rwsr-xr-x 4755 Wł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[edytuj | edytuj kod]

  • $ 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 — grupa oraz pozostali użytkownicy będą mogli tylko czytać i wykonywać.
  • $ 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ż[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]