Artur Pyszczuk's blog...

"Although it can be frustrating, debugging is one of the most intellectually rich, challenging, and interesting parts of programming."
Think Python: How to Think Like a Computer Scientist by Allen Downey
/home/linux/commands/chmod/

chmod - Zmiana dostępu do plików (prawa dostępu)

W Linuksie każdy plik (katalog) ma swoje określone prawa dostępu. Definiują one czy plik może zostać odczytany, czy można do niego pisać, czy można go wykonać. Prawa dostępu mogą występować w różnych kombinacjach. Aby sprawdzić prawa dostępu, trzeba użyć polecenia ls z opcją -l. Na rysunku 1 pokazany został przykładowy plik z pewnymi prawami dostępu, które zostały poniżej poddane szczegółowej analizie.

Polecenie chmod
Rys 1. Prawa dostępu do pliku.

Każdy plik posiada uprawnienia podzielone na trzy części, które odpowiednio oznaczają: prawa dostępu właściciela pliku, prawa dostępu grupy, oraz prawa dostępu pozostałych. W naszym przypadku pierwsza część to rw-, druga to r-- oraz trzecia to r--. Na poniższym rysunku przedstawiony został wykaz praw dostępu z wartościami literowymi oraz liczbowymi (te przydadzą się podczas nadawania praw dostępu w dalszej części)

Polecenie chmod
Rys 2. Prawa dostępu do pliku - wykaz.

Prawa dostępu można łączyć, dlatego też prawo dostępu właściciela pliku oznacza, że może on czytać (r) plik, oraz pisać (w) do pliku, natomiast nie może pliku wykonywać (uruchamiać np. pliku wykonywalnego, skryptu). Prawo dostępu grupy oraz prawo dostępu pozostałych oznaczają, że użytkownicy grupy oraz pozostałe osoby mogą ten plik tylko czytać.

Na rysunku 1 prawa dostępu zaczynają się od minusa (-), ten znak nie jest określeniem jakiegokolwiek prawa, a informacją o tym, że plik ten jest plikiem zwykłym. Na poniższym rysunku pokazano kilka możliwych znaków, które mogą występować na pierwszej pozycji.

Polecenie chmod
Rys 3. Prawa dostępu do pliku - Typ pliku.

Jeśli chcemy zmienić prawa dostępu do pliku, musimy użyć polecenia chmod, którego sposób użycia w ogólnych przypadkach został pokazany poniżej.

$ chmod [OPCJE] TRYB Plik(i)

$ chmod [OPCJE] TRYB-OCTAL Plik(i)

Najprostsze użycia tego polecenia zostały pokazane na poniższych rysunkach. Polecenie chmod z dodatkowymi opcjami zostało pokazane w dalszej części.

A więc tak, jeśli chcemy nadać prawo do czytania, pisania oraz wykonywania dla właściciela pliku, prawo do czytania dla użytkowników grupy, oraz odebrać wszystkie uprawnienia dla pozostałych musimy utworzyć specjalną liczbę, którą wstawiamy w miejsce TRYB-OCTAL. Liczba ta zostaje utworzona na podstawie tabelki z rysunku 2. Jak zostało powiedziane prędzej, prawa można łączyć, dlatego też pierwszą cyfrą będzie 7, ponieważ suma wszystkich wartości liczbowych uprawnień właśnie tyle się równa (4 + 2 + 1). Kolejna cyfra będzie określała uprawnienia dla użytkowników grupy i będzie miała wartość 4. Jeśli chcemy odebrać uprawnienia wpisujemy zero. Naszą liczbą będzie liczba 740, co zostało pokazane na poniższym rysunku.

Polecenie chmod
Rys 4. Zmiana praw dostępu do pliku

Wszystkie kombinacje praw dostępu zostały pokazane na rysunku 5.

Polecenie chmod
Rys 5. Wszystkie kombinacje praw dostępu

Istnieje jeszcze drugi sposób przydzielania praw dostępu do pliku. A mianowicie możemy wpisywać, które prawa chcemy dodać, odjąć lub które tylko mają zostać ustawione. Przeanalizujemy każdy z przypadków na osobnym rysunku, ale zanim to zrobimy w tabelce poniższej znajdują się przydatne informacje.

Polecenie chmod
Rys 6. Ustawianie praw dostępu

W miejsce TRYB wpisujemy najpiew znak określający kogo uprawnienia będą się tyczyły, a następnie wpisujemy jeden ze znaków dodających, odbierających, lub ustawiających prawa dostępu. Aby dodać uprawnienia do pliku można postąpić tak jak na poniższym rysunku. Jeśli chcemy zdefiniować prawa dla różnych użytkoników jednocześnie, wpisujemy znak określający danych użytkoników oraz uprawnienia po przecinku. Na rysunku 7 uprawnienia zostały dodane, a ponieważ przed tą operacją nikt nie miał praw dostępu do tego pliku, tak więc teraz właściciel pliku może czytać i pisać, grupa może czytać, a pozostali mogą wykonywać.

Polecenie chmod
Rys 7. Dodawanie praw dostępu

Aby odebrać (odjąć) uprawnienia wszystkim (oczywiście można każdemu z osobna) oraz dodać uprawnienia wszystkim można posłużyć się następującym schematem.

Polecenie chmod
Rys 8. Odejmowanie i dodawanie praw dostępu wszystkim

Jeśli nie wiemy jakie uprawnienia plik posiadał wcześniej (oczywiście łatwo to sprawdzić) możemy ustawić konkretne prawa dostępu do pliku. Należy pamiętać o jednym, jeśli ustawiamy uprawnienia np. właścicielowi pliku i nie ustawiamy innym użytkownikom, to jeśli użytkownicy grupy, lub pozostali mieli prędzej jakieś prawa dostępu to one zostaną. Aby wyzerować ich uprawnienia musimy podać jako prawo dostępu minus, co pokazano na rysunku 9.

Polecenie chmod
Rys 9. Ustawianie konkretnych praw dostępu

Dość ważną rzeczą, o której jeszcze nie wspomniano jest polecenie umask. Wiąże się ono bezpośrednio z prawami dostępu, dlatego też w tym miejscu zachęcam do przeczytania o tym poleceniu.

Do tej pory zostały przedstawiono informacje o tym, co ten program robi wraz z przykładami, w tym miejscu pokaże kilka przydatnych opcji polecenia chmod. Na pierwszy ogień pójdzie opcja -c, która jest podobna do opcji -v (verbose) znanej z większości poleceń systemowych (informowanie o dokonanych czynnościach), różni się tym, że informacje o dokonanych zmianach zostaną wyświetlone, jeśli prawa dostępu zostały zmienione (jeśli uprzednio były takie same, informacje nie zostaną wydrukowane).

Polecenie chmod
Rys 10. Informowanie o dokonanych zmianach

Kolejną i chyba najważniejszą opcją dla tego polecenia jest -R, która zmienia prawa dostępu dla katalogu oraz wszystkich jego plików jednocześnie. Bardzo ułatwia to życie, jeśli musimy edytować uprawnienia wielu plików.

Polecenie chmod
Rys 11. Zmienianie uprawnień dla katalogu, oraz całej jego zawartości


Wiecej informacji na temat programu chmod znajdziesz w podreczniku systemowym man.
Wpisujac w konsoli man chmod

Wiecej informacji na temat programu chmod znajdziesz również w programie info.
Wpisujac w konsoli info coreutils 'chmod invocation'

Zobacz także:

Some rights reserved 2010 - 2015 Artur Pyszczuk

| Strona Główna | Kontakt |