chmod (ang. change mode - zmiana atrybutu) — polecenie zmiany zezwoleń dostępu do plików w systemach uniksowych.
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]
- u - użytkownik (ang. user)
- g - grupa (ang. group)
- o - inni (ang. others)
- a - wszyscy (ang. all)
Uprawnienia [edytuj]
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).
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]
| 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]
| 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. |
| -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]
- $ 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]
Linki zewnętrzne [edytuj]