Kurs Linux - 02 - Modyfikacja praw dostępu do plików z poziomu terminala
Spisu treści:
- Uprawnienia do plików systemu Linux
- Korzystanie z
chmod
- Metoda symboliczna (tekstowa)
- Metoda numeryczna
- Korzystanie z pliku referencyjnego
- Rekurencyjnie zmieniaj uprawnienia do pliku
- Operowanie na dowiązaniach symbolicznych
- Masowe zmienianie uprawnień do plików
- Wniosek
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
|
|
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
|
|
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ą
|
|
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.
|
|
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
|
|
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 jakugo
.
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) = 4w
(zapis) = 2x
(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
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ć:
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.
Jak zresetować uprawnienia plików NTFS w systemie Windows 10/8/7
Resetowanie uprawnień do plików NTFS to oprogramowanie typu freeware, które pozwala łatwo przywrócić lub zresetować uprawnienia do plików i zabezpieczeń w systemie Windows 10/8/7, bez korzystania z wiersza poleceń.
Komenda Fsck w systemie Linux (napraw system plików)
fsck (kontrola systemu plików) to narzędzie wiersza polecenia, które umożliwia wykonywanie kontroli spójności i interaktywnych napraw w jednym lub kilku systemach plików Linux.
Komenda Ls w systemie Linux (lista plików i katalogów)
Polecenie ls jest jednym z podstawowych poleceń, które powinien znać każdy użytkownik Linuksa. Służy do wyświetlania informacji o plikach i katalogach w systemie plików.