Android

Komenda Chmod w systemie Linux (uprawnienia do plików)

Kurs Linux - 02 - Modyfikacja praw dostępu do plików z poziomu terminala

Kurs Linux - 02 - Modyfikacja praw dostępu do plików z poziomu terminala

Spisu treści:

Anonim

W systemie Linux dostęp do plików jest zarządzany poprzez uprawnienia do plików, atrybuty i własność. Dzięki temu tylko autoryzowani użytkownicy i procesy mogą uzyskiwać dostęp do plików i katalogów.

W tym samouczku opisano, jak używać komendy chmod do zmiany uprawnień dostępu do plików i katalogów.

Uprawnienia do plików systemu Linux

Zanim przejdziemy dalej, wyjaśnijmy podstawowy model uprawnień systemu Linux.

W systemie Linux każdy plik jest powiązany z właścicielem i grupą i przypisany do niego uprawnienia dostępu dla trzech różnych klas użytkowników:

  • Właściciel pliku. Członkowie grupy. Inni (wszyscy inni).

Własność pliku można zmienić za pomocą komend chown i chgrp .

Istnieją trzy typy uprawnień do plików, które mają zastosowanie do każdej klasy:

  • Zezwolenie na odczyt Zezwolenie na zapis Zezwolenie na wykonanie

Ta koncepcja pozwala określić, którzy użytkownicy mogą czytać plik, zapisywać do pliku lub uruchamiać plik.

Uprawnienia do plików można wyświetlić za pomocą polecenia ls :

ls -l filename.txt

-rw-r--r-- 12 linuxize users 12.0K Apr 8 20:51 filename.txt |- | | | | | | | | | | | | | +-----------> 7. Group | | | | | +-------------------> 6. Owner | | | | +--------------------------> 5. Alternate Access Method | | | +----------------------------> 4. Others Permissions | | +-------------------------------> 3. Group Permissions | +----------------------------------> 2. Owner Permissions +------------------------------------> 1. File Type

Pierwszy znak wskazuje typ pliku. Może to być zwykły plik ( - ), katalog ( d ), dowiązanie symboliczne ( l ) lub dowolny inny specjalny typ pliku.

Następne dziewięć znaków reprezentuje uprawnienia do pliku, trzy trojaczki po trzy znaki każdy. Pierwszy triplet pokazuje uprawnienia właściciela, drugi uprawnienia grupy, a ostatni triplet pokazuje uprawnienia wszystkich pozostałych. Uprawnienia mogą mieć inne znaczenie w zależności od typu pliku.

W powyższym przykładzie ( rw-r--r-- ) oznacza, że ​​właściciel pliku ma uprawnienia do odczytu i zapisu ( rw- ), grupa i inni mają tylko uprawnienia do odczytu ( r-- ).

Każda z trzech trójek uprawnień może być zbudowana z następujących znaków i mieć różne efekty, w zależności od tego, czy są ustawione na plik, czy na katalog:

Wpływ uprawnień na pliki

Pozwolenie Postać Znaczenie w pliku
Czytać - Plik nie jest czytelny. Nie można wyświetlić zawartości pliku.
r Plik jest czytelny.
pisać - Pliku nie można zmienić ani zmodyfikować.
w Plik można zmienić lub zmodyfikować.
Wykonać - Pliku nie można wykonać.
x Plik można wykonać.
s Jeśli zostanie znaleziony w triolu user , ustawia bit setuid . Jeśli zostanie znaleziony w triplecie group , ustawia bit setgid . Oznacza to również, że ustawiona jest flaga x .

Gdy flagi setuid lub setgid są ustawione na pliku wykonywalnym, plik jest wykonywany z uprawnieniami właściciela pliku i / lub grupy.

S To samo co s ale flaga x nie jest ustawiona. Ta flaga jest rzadko używana w plikach.
t Jeśli znajduje się w others tripletach, ustawia sticky bit.

Oznacza to również, że ustawiona jest flaga x . Ta flaga jest bezużyteczna dla plików.

T To samo co t ale flaga x nie jest ustawiona. Ta flaga jest bezużyteczna dla plików.

Wpływ uprawnień na katalogi (foldery)

W systemie Linux katalogi to specjalne typy plików, które zawierają inne pliki i katalogi.

Pozwolenie Postać Znaczenie w katalogu
Czytać - Nie można wyświetlić zawartości katalogu.
r Można wyświetlić zawartość katalogu.

(np. Możesz wyświetlić listę plików w katalogu za pomocą ls .)

pisać - Zawartość katalogu nie może zostać zmieniona.
w Zawartość katalogu może zostać zmieniona.

(np. Nie możesz tworzyć nowych plików, usuwać plików… itp.)

Wykonać - Katalogu nie można zmienić na.
x Po katalogu można nawigować za pomocą cd .
s Jeśli zostanie znaleziony w triplecie user , ustawia bit setuid . Jeśli zostanie znaleziony w triplecie group , ustawia bit setgid . Oznacza to również, że ustawiona jest flaga x . Po ustawieniu flagi setgid w katalogu nowe utworzone w nim pliki dziedziczą identyfikator grupy katalogów (GID) zamiast identyfikatora grupy podstawowej użytkownika, który utworzył plik.

setuid nie ma wpływu na katalogi.

S To samo co s ale flaga x nie jest ustawiona. Ta flaga jest bezużyteczna w katalogach.
t Jeśli znajduje się w others tripletach, ustawia sticky bit.

Oznacza to również, że ustawiona jest flaga x . Gdy bit lepki jest ustawiony w katalogu, tylko właściciel pliku, właściciel katalogu lub użytkownik administracyjny może usuwać lub zmieniać nazwy plików w katalogu.

T To samo co t ale flaga x nie jest ustawiona. Ta flaga jest bezużyteczna w katalogach.

Korzystanie z chmod

Polecenie chmod ma następującą ogólną postać:

chmod MODE FILE…

Polecenie chmod umożliwia zmianę uprawnień do pliku przy użyciu trybu symbolicznego lub numerycznego lub pliku referencyjnego. Wyjaśnimy tryby bardziej szczegółowo później. Polecenie może przyjmować jeden lub więcej plików i / lub katalogów oddzielonych spacją jako argumentów.

Tylko root, właściciel pliku lub użytkownik z uprawnieniami sudo może zmieniać uprawnienia do pliku. Zachowaj szczególną ostrożność podczas korzystania z chmod , szczególnie przy rekurencyjnej zmianie uprawnień.

Metoda symboliczna (tekstowa)

Składnia polecenia chmod w trybie symbolicznym ma następujący format:

chmod perms… FILE…

Pierwszy zestaw flag ( ), flagi użytkowników, określa, którzy użytkownicy klasyfikują uprawnienia do pliku.

  • u - właściciel pliku. g - Użytkownicy będący członkami grupy. o - Wszyscy inni użytkownicy. a - Wszyscy użytkownicy, identyczni jak ugo .

Jeśli flaga użytkowników zostanie pominięta, domyślną jest a i nie ma to wpływu na uprawnienia ustawione przez umask.

Drugi zestaw flag ( ), flagi operacji określają, czy uprawnienia mają zostać usunięte, dodane, czy ustawione:

  • - Usuwa określone uprawnienia. + Dodaje określone uprawnienia. = Zmienia bieżące uprawnienia na określone uprawnienia. Jeśli po symbolu = nie podano żadnych uprawnień, wszystkie uprawnienia z określonej klasy użytkownika zostaną usunięte.

Uprawnienia ( perms… ) można jawnie ustawić za pomocą zera lub jednej lub więcej z następujących liter: r , w , x , X , s i t . Użyj pojedynczej litery z zestawu u , g i o podczas kopiowania uprawnień z jednej klasy na inną.

Podczas ustawiania uprawnień dla więcej niż jednej klasy użytkownika ( ), użyj przecinków (bez spacji), aby oddzielić tryby symboliczne.

Poniżej znajduje się kilka przykładów użycia polecenia chmod w trybie symbolicznym:

  • Daj członkom grupy pozwolenie na odczytanie pliku, ale nie na zapisywanie go i wykonywanie:

    chmod g=r filename

    Usuń uprawnienie do wykonywania dla wszystkich użytkowników:

    chmod ax filename

    Odpychająco usuwają uprawnienia do zapisu dla innych użytkowników:

    chmod -R ow dirname

    Usuń uprawnienia do odczytu, zapisu i wykonywania dla wszystkich użytkowników z wyjątkiem właściciela pliku:

    chmod og-rwx filename

    To samo można również osiągnąć, używając następującego formularza:

    chmod og= filename

    Przyznaj uprawnienia do odczytu, zapisu i wykonywania właścicielowi pliku, uprawnienia do odczytu grupie plików i brak uprawnień wszystkim innym użytkownikom:

    chmod u=rwx, g=r, o= filename

    Dodaj uprawnienia właściciela pliku do uprawnień, które mają członkowie grupy plików:

    chmod g+u filename

    Dodaj lepki bit do danego katalogu:

    chmod o+t dirname

Metoda numeryczna

Składnia komendy chmod podczas korzystania z metody numerycznej ma następujący format:

chmod NUMBER FILE…

Korzystając z trybu numerycznego, możesz ustawić uprawnienia dla wszystkich trzech klas użytkowników (właściciela, grupy i wszystkich innych) jednocześnie.

NUMBER może być 3 lub 4 cyfrowym numerem.

Gdy używany jest 3-cyfrowy numer, pierwsza cyfra reprezentuje uprawnienia właściciela pliku, druga z grupy plików, a ostatnia wszystkich pozostałych użytkowników.

Każde uprawnienie do zapisu, odczytu i wykonania ma następującą wartość liczbową:

  • r (odczyt) = 4 w (zapis) = 2 x (wykonanie) = 1 brak uprawnień = 0

Numer uprawnień konkretnej klasy użytkownika jest reprezentowany przez sumę wartości uprawnień dla tej grupy.

Aby dowiedzieć się o uprawnieniach do pliku w trybie numerycznym, wystarczy obliczyć sumy dla wszystkich klas użytkowników. Na przykład, aby udzielić właścicielowi pliku uprawnienia do odczytu, zapisu i wykonania, odczytaj i wykonaj uprawnienia do grupy plików i tylko uprawnienia odczytu dla wszystkich innych użytkowników, wykonaj następujące czynności:

  • Właściciel: rwx = 4 + 2 + 1 = 7 Grupa: rx = 4 + 0 + 1 = 5 Inne: rx = 4 + 0 + 0 = 4

Stosując powyższą metodę dochodzimy do liczby 754 , która reprezentuje pożądane uprawnienia.

Aby skonfigurować flagi setuid , setgid i sticky bit użyj czterech cyfr.

Gdy używany jest 4-cyfrowy numer, pierwsza cyfra ma następujące znaczenie:

  • setuid = 4setgid = 2 sticky = 1 brak zmian = 0

Kolejne trzy cyfry mają takie samo znaczenie, jak przy użyciu 3 cyfr.

Jeśli pierwszą cyfrą jest 0, można ją pominąć, a tryb można przedstawić za pomocą 3 cyfr. Tryb numeryczny 0755 jest taki sam jak 755 .

Aby obliczyć tryb numeryczny, możesz również użyć innej metody (metoda binarna), ale jest to nieco bardziej skomplikowane. Znajomość sposobu obliczania trybu numerycznego przy użyciu 4, 2 i 1 jest wystarczająca dla większości użytkowników.

Możesz sprawdzić uprawnienia do pliku w notacji numerycznej za pomocą polecenia stat :

stat -c "%a" filename

644

Oto kilka przykładów używania polecenia chmod w trybie numerycznym:

  • Nadaj właścicielowi pliku uprawnienia do odczytu i zapisu oraz tylko uprawnienia do odczytu dla członków grupy i wszystkich innych użytkowników:

    chmod 644 dirname

    Nadaj właścicielowi pliku uprawnienia do odczytu, zapisu i wykonywania, odczytu i wykonywania uprawnień członkom grupy i żadnych uprawnień innym użytkownikom:

    chmod 750 dirname

    Nadaj uprawnienia do odczytu, zapisu i wykonywania oraz lepki bit do danego katalogu:

    chmod 1777 dirname

    Rekurencyjnie ustawiaj uprawnienia do odczytu, zapisu i wykonywania dla właściciela pliku oraz brak uprawnień dla wszystkich innych użytkowników w danym katalogu:

    chmod -R 700 dirname

Korzystanie z pliku referencyjnego

Opcja --reference=ref_file pozwala ustawić uprawnienia pliku na takie same jak uprawnienia dla określonego pliku referencyjnego ( ref_file .).

chmod --reference=REF_FILE FILE

Na przykład następujące polecenie przypisze uprawnienia do file1 do file2

chmod --reference=file1 file2

Rekurencyjnie zmieniaj uprawnienia do pliku

Aby rekurencyjnie operować na wszystkich plikach i katalogach w danym katalogu, użyj opcji -R ( --recursive ):

chmod -R MODE DIRECTORY

Na przykład, aby zmienić uprawnienia wszystkich plików i podkatalogów w katalogu /var/www na 755 , należy użyć:

chmod -R 755 /var/www

Operowanie na dowiązaniach symbolicznych

Łącza symboliczne mają zawsze uprawnienia 777 .

Domyślnie, przy zmianie uprawnień dowiązania symbolicznego, chmod zmieni uprawnienia do pliku, do którego prowadzi łącze.

chmod 755 symlink

Istnieje szansa, że ​​zamiast zmiany docelowej własności pojawi się błąd „nie można uzyskać dostępu do„ dowiązania symbolicznego: odmowa zezwolenia ”.

Błąd występuje, ponieważ domyślnie w większości dystrybucji Linuksa dowiązania symboliczne są chronione i nie można operować na plikach docelowych. Ta opcja jest określona w /proc/sys/fs/protected_symlinks . 1 oznacza włączone, a 0 wyłączone. Zaleca się, aby nie wyłączać ochrony dowiązania symbolicznego.

Masowe zmienianie uprawnień do plików

Czasami zdarzają się sytuacje, w których trzeba zbiorczo zmienić uprawnienia do plików i katalogów.

Najczęstszym scenariuszem jest rekurencyjna zmiana uprawnień do pliku witryny na 644 a uprawnienia do katalogu na 755 .

Za pomocą metody numerycznej:

find /var/www/my_website -type d -exec chmod 755 {} ; find /var/www/my_website -type f -exec chmod 644 {} ;

Za pomocą metody symbolicznej:

find /var/www/my_website -type d -exec chmod u=rwx, go=rx {} ; find /var/www/my_website -type f -exec chmod u=rw, go=r {} ;

Polecenie find wyszuka pliki i katalogi w katalogu /var/www/my_website i przekaże każdy znaleziony plik i katalog do polecenia chmod celu ustawienia uprawnień.

Wniosek

Komenda chmod zmienia uprawnienia do pliku. Uprawnienia można ustawić za pomocą trybu symbolicznego lub numerycznego.

Aby dowiedzieć się więcej o chmod odwiedź stronę podręcznika użytkownika chmod.

terminal chmod