Przejdź do zawartości

chmod

Przejrzana
Z Wikipedii, wolnej encyklopedii

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 Binarnie
0 Brak praw --- 000
1 Wykonywanie --x 001
2 Zapis -w- 010
3 Zapis i wykonanie -wx 011
4 Odczyt r-- 100
5 Odczyt i wykonanie r-x 101
6 Odczyt i zapis rw- 110
7 Odczyt, zapis i wykonanie rwx 111

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ą wszystkie prawa do pliku.
-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.
-rwxr-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 — 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ż

[edytuj | edytuj kod]

Linki zewnętrzne

[edytuj | edytuj kod]