Jak używać polecenia chmod w systemie Linux

Kontroluj, kto może uzyskiwać dostęp do plików, przeszukiwać katalogi i uruchamiać skrypty za pomocą polecenia chmod w systemie Linux. To polecenie modyfikuje uprawnienia do plików Linuksa, które na pierwszy rzut oka wyglądają na skomplikowane, ale w rzeczywistości są dość proste, gdy wiesz, jak działają.

chmod Modyfikuje uprawnienia do plików

W Linuksie to, kto może robić co z plikiem lub katalogiem, jest kontrolowane przez zestawy uprawnień. Istnieją trzy zestawy uprawnień. Jeden zestaw dla właściciela pliku, inny zestaw dla członków grupy pliku i ostatni zestaw dla wszystkich pozostałych.

Uprawnienia kontrolują akcje, które można wykonać na pliku lub katalogu. Pozwalają lub uniemożliwiają odczyt, modyfikację pliku lub, jeśli jest to skrypt lub program, wykonanie. W przypadku katalogu uprawnienia decydują o tym, kto może wejść do katalogu i kto może tworzyć lub modyfikować pliki w tym katalogu.

Do tego celu służy polecenie chmod ustawić każde z tych uprawnień. Do zobacz, jakie uprawnienia zostały ustawione na pliku lub katalogu możemy użyć ls.

Przeglądanie i rozumienie uprawnień do plików

Możemy użyć opcji -l (długi format), aby ls wyświetlał listę uprawnień do plików i katalogów.

ls -l

wyjście z ls -l w oknie terminala

W każdym wierszu pierwszy znak określa typ wpisu, który jest wyświetlany. Jeśli jest to myślnik (-), jest to plik. Jeśli jest to litera d, jest to katalog.

Kolejnych dziewięć znaków przedstawia ustawienia dla trzech zestawów uprawnień.

Pierwsze trzy znaki pokazują uprawnienia użytkownika, który jest właścicielem pliku (uprawnienia użytkownika).
Trzy środkowe znaki pokazują uprawnienia członków grupy pliku (uprawnienia grupy).
Ostatnie trzy znaki pokazują uprawnienia dla osób spoza pierwszych dwóch kategorii (inne uprawnienia).

Każdy zestaw uprawnień zawiera trzy znaki. Znaki są wskaźnikami obecności lub braku jednego z uprawnień. Są to myślnik (-) lub litera. Jeśli znak jest myślnikiem, oznacza to, że pozwolenie nie zostało przyznane. Jeśli znak jest r, w lub x, to zezwolenie zostało przyznane.

Litery przedstawiają:

r: uprawnienia do odczytu. Plik można otworzyć, a jego zawartość obejrzeć.
w: Uprawnienia do zapisu. Plik można edytować, modyfikować i usuwać.
x: uprawnienia do wykonywania. Jeśli plik jest skryptem lub programem, można go uruchomić (wykonać).

Na przykład:

– oznacza, że ​​w ogóle nie udzielono żadnych uprawnień.
rwx oznacza, że ​​przyznano pełne uprawnienia. Wszystkie wskaźniki odczytu, zapisu i wykonania są obecne.

Na naszym zrzucie ekranu pierwsza linia zaczyna się od litery d. Ta linia odnosi się do katalogu o nazwie „archiwum”. Właścicielem katalogu jest „dave”, a nazwa grupy, do której należy katalog, jest również nazywana „dave”.

Kolejne trzy znaki to uprawnienia użytkownika do tego katalogu. Pokazują one, że właściciel ma pełne uprawnienia. Wszystkie znaki r, w i x są obecne. Oznacza to, że użytkownik dave ma uprawnienia do odczytu, zapisu i wykonywania w tym katalogu.

Drugi zestaw trzech znaków to uprawnienia grupy, są to rx. Pokazują one, że członkowie grupy dave mają uprawnienia do odczytu i wykonywania w tym katalogu. Oznacza to, że mogą wyświetlić listę plików i ich zawartość w katalogu, a także mogą cd (wykonać) do tego katalogu. Nie mają uprawnień do zapisu, więc nie mogą tworzyć, edytować ani usuwać plików.

Ostatnim zestawem trzech znaków jest również rx. Te uprawnienia dotyczą osób, które nie podlegają pierwszym dwóm zestawom uprawnień. Te osoby (zwane „innymi”) mają uprawnienia do odczytu i wykonywania w tym katalogu.

Podsumowując, członkowie grupy i inne osoby mają uprawnienia do odczytu i wykonywania. Właściciel, użytkownik o imieniu dave, również ma uprawnienia do zapisu.

W przypadku wszystkich innych plików (poza plikiem skryptowym mh.sh) dave i członkowie grupy dave mają właściwości do odczytu i zapisu plików, a pozostali mają tylko uprawnienia do odczytu.

W szczególnym przypadku pliku skryptowego mh.sh właściciel dave i członkowie grupy mają uprawnienia do odczytu, zapisu i wykonywania, a pozostali mają tylko uprawnienia do odczytu i wykonywania.

Zrozumienie składni uprawnień

Aby użyć chmod do ustawienia uprawnień, musimy to powiedzieć:

Kto: dla kogo ustawiamy uprawnienia.
Co: Jaką zmianę wprowadzamy? Czy dodajemy lub usuwamy pozwolenie?
Które: Które z uprawnień ustawiamy?

Używamy wskaźników do reprezentowania tych wartości i tworzymy krótkie „instrukcje uprawnień”, takie jak u + x, gdzie „u” oznacza „użytkownika” (kto), „+” oznacza dodawanie (co), a „x” oznacza uprawnienie do wykonania (który).

Wartości „who”, których możemy użyć, to:

u: użytkownik, czyli właściciel pliku.
g: Grupa, oznaczająca członków grupy, do której należy plik.
o: Inni, czyli osoby nieobjęte uprawnieniami uig.
a: Wszystkie, czyli wszystkie powyższe.

Jeśli żadne z nich nie jest używane, chmod zachowuje się tak, jakby zostało użyte „a”.

Wartości „jakie” możemy wykorzystać:

-: Minus. Usuwa uprawnienie.
+: Znak plus. Udziela pozwolenia. Uprawnienie zostanie dodane do istniejących uprawnień. Jeśli chcesz mieć to uprawnienie i tylko tę polisę uprawnień, użyj opcji =, opisanej poniżej.
=: Znak równości. Ustaw uprawnienia i usuń innych.

Wartości „which”, których możemy użyć, to:

r: Uprawnienie do odczytu.
w: Zezwolenie na zapis.
x: uprawnienie do wykonywania.

Ustawianie i modyfikowanie uprawnień

Powiedzmy, że mamy plik, do którego każdy ma pełne uprawnienia.

ls -l new_ file.txt

ls -l nowy_plik.txt w oknie terminala

Chcemy, aby użytkownik dave miał uprawnienia do odczytu i zapisu, a grupa i inni użytkownicy mieli tylko uprawnienia do odczytu. Możemy to zrobić za pomocą następującego polecenia:

chmod u=rw,og=r new_file.txt

chmod u = rw, og = r new_file.txt w oknie terminala

Użycie operatora „=” oznacza, że ​​usuwamy wszelkie istniejące uprawnienia, a następnie ustawiamy te określone.

sprawdźmy nowe uprawnienia do tego pliku:

ls -l new_file.txt

ls -l nowy_plik.txt w oknie terminala

Istniejące uprawnienia zostały usunięte, a nowe uprawnienia zostały ustawione, zgodnie z oczekiwaniami.

Co powiesz na dodanie uprawnień bez usuwania istniejących ustawień uprawnień? My też możemy to łatwo zrobić.

Powiedzmy, że mamy plik skryptu, który skończyliśmy edytować. Musimy sprawić, by był wykonywalny dla wszystkich użytkowników. Jego obecne uprawnienia wyglądają następująco:

ls -l new_script.sh

ls -l new_script.sh w oknie terminala

Możemy dodać uprawnienia do wykonywania dla wszystkich za pomocą następującego polecenia:

chmod a+x new_script.sh

chmod a + x new_script.sh w oknie terminala

Jeśli spojrzymy na uprawnienia, zobaczymy, że uprawnienie do wykonywania jest teraz przyznane wszystkim, a istniejące uprawnienia są nadal aktualne.

ls -l new_script.sh

ls -l new_script.sh w oknie terminala

Moglibyśmy osiągnąć to samo bez „a” w instrukcji „a + x”. Następujące polecenie zadziałałoby równie dobrze.

chmod +x new_script.sh

Ustawianie uprawnień dla wielu plików

Możemy jednocześnie nadawać uprawnienia do wielu plików.

Oto pliki w bieżącym katalogu:

ls -l

ls -l w oknie terminala

Powiedzmy, że chcemy usunąć prawa zapisu dla „innych” użytkowników z plików z rozszerzeniem „.page”. Możemy to zrobić za pomocą następującego polecenia:

chmod o-r *.page

chmod lub * .page w oknie terminala

Sprawdźmy, jaki to miało efekt:

ls -l

ls -l w oknie terminala

Jak widać, uprawnienie do odczytu zostało usunięte z plików „.page” dla kategorii „innych” użytkowników. Żadne inne pliki nie zostały dotknięte.

Gdybyśmy chcieli umieścić pliki w podkatalogach, moglibyśmy użyć opcji -R (rekurencyjna).

chmod -R o-r *.page

Skrót numeryczny

Innym sposobem użycia chmod jest podanie uprawnień, które chcesz nadać właścicielowi, grupie i innym osobom w postaci trzycyfrowej liczby. Lewa cyfra reprezentuje uprawnienia właściciela. Środkowa cyfra reprezentuje uprawnienia członków grupy. Pierwsza cyfra po prawej stronie oznacza uprawnienia pozostałych.

Cyfry, których możesz użyć i co one reprezentują, są wymienione tutaj:

0: (000) Brak pozwolenia.
1: (001) Wykonaj pozwolenie.
2: (010) Pozwolenie na pisanie.
3: (011) Uprawnienia do zapisu i wykonywania.
4: (100) Pozwolenie na odczyt.
5: (101) Uprawnienia do odczytu i wykonywania.
6: (110) Uprawnienia do odczytu i zapisu.
7: (111) Uprawnienia do odczytu, zapisu i wykonywania.

Każde z trzech uprawnień jest reprezentowane przez jeden z bitów w binarnym odpowiedniku liczby dziesiętnej. Zatem 5, czyli binarnie 101, oznacza odczyt i wykonanie. 2, czyli binarnie 010, oznaczałoby pozwolenie na zapis.

Korzystając z tej metody, ustawiasz uprawnienia, które chcesz mieć; nie dodajesz tych uprawnień do istniejących uprawnień. Więc jeśli uprawnienia do odczytu i zapisu były już na miejscu, musiałbyś użyć 7 (111), aby dodać uprawnienia wykonywania. Użycie 1 (001) spowoduje usunięcie uprawnień do odczytu i zapisu oraz dodanie uprawnień do wykonywania.

Dodajmy z powrotem uprawnienia do odczytu do plików „.page” dla innych kategorii użytkowników. Musimy także ustawić uprawnienia użytkownika i grupy, więc musimy ustawić im takie, jakie już są. Ci użytkownicy mają już uprawnienia do odczytu i zapisu, czyli 6 (110). Chcemy, aby „inni” mieli uprawnienia do odczytu i uprawnienia, więc muszą być ustawione na 4 (100).

Dokonuje tego następujące polecenie:

chmod 664 *.page

chmod 664 * .page w oknie terminala

To ustawia uprawnienia, których wymagamy od użytkownika, członków grupy i innych osób na to, czego wymagamy. Użytkownicy i członkowie grupy mają przywrócone uprawnienia do tego, czym już byli, a pozostałym przywrócono uprawnienia do odczytu.

ls -l

ls -l w oknie terminala

Zaawansowane opcje

Jeśli ty przeczytaj stronę podręcznika dla chmod zobaczysz kilka zaawansowanych opcji związanych z bitami SETUID i SETGID oraz z ograniczonym usuwaniem lub bitem „lepkim”.

W 99% przypadków, w których będziesz potrzebować chmod, opisane tutaj opcje będą Cię obejmować.