Unix / Linux - uprawnienia do plików / tryby dostępu

W tym rozdziale omówimy szczegółowo prawa dostępu do plików i tryby dostępu w systemie Unix. Własność plików jest ważnym składnikiem systemu Unix, który zapewnia bezpieczną metodę przechowywania plików. Każdy plik w systemie Unix ma następujące atrybuty -

  • Owner permissions - Uprawnienia właściciela określają, jakie czynności właściciel pliku może wykonać na pliku.

  • Group permissions - Uprawnienia grupy określają, jakie czynności użytkownik będący członkiem grupy, do której należy plik, może wykonać na pliku.

  • Other (world) permissions - Uprawnienia innych osób wskazują, jakie działania mogą wykonać wszyscy inni użytkownicy na pliku.

Wskaźniki uprawnień

Podczas używania ls -l polecenie, wyświetla różne informacje związane z uprawnieniami do pliku w następujący sposób -

$ls -l /home/amrood
-rwxr-xr--  1 amrood   users 1024  Nov 2 00:10  myfile
drwxr-xr--- 1 amrood   users 1024  Nov 2 00:10  mydir

Tutaj pierwsza kolumna reprezentuje różne tryby dostępu, tj. Uprawnienia związane z plikiem lub katalogiem.

Uprawnienia są podzielone na grupy po trzy, a każda pozycja w grupie oznacza określone uprawnienie, w następującej kolejności: odczyt (r), zapis (w), wykonanie (x) -

  • Pierwsze trzy znaki (2-4) reprezentują uprawnienia właściciela pliku. Na przykład,-rwxr-xr-- oznacza, że ​​właściciel ma uprawnienia do odczytu (r), zapisu (w) i wykonywania (x).

  • Druga grupa trzech znaków (5-7) składa się z uprawnień dla grupy, do której należy plik. Na przykład,-rwxr-xr-- oznacza, że ​​grupa ma uprawnienia do odczytu (r) i wykonywania (x), ale nie ma uprawnień do zapisu.

  • Ostatnia grupa trzech znaków (8-10) reprezentuje uprawnienia dla wszystkich innych. Na przykład,-rwxr-xr-- oznacza, że ​​istnieje read (r) tylko pozwolenie.

Tryby dostępu do plików

Uprawnienia do pliku to pierwsza linia obrony bezpieczeństwa systemu Unix. Podstawowymi blokami konstrukcyjnymi uprawnień w systemie Unix są plikiread, write, i execute uprawnienia, które zostały opisane poniżej -

Czytać

Umożliwia odczyt, czyli przeglądanie zawartości pliku.

pisać

Daje możliwość modyfikowania lub usuwania zawartości pliku.

Wykonać

Użytkownik z uprawnieniami do wykonywania może uruchomić plik jako program.

Tryby dostępu do katalogu

Tryby dostępu do katalogu są wymienione i zorganizowane w taki sam sposób, jak w przypadku każdego innego pliku. Jest kilka różnic, o których należy wspomnieć -

Czytać

Dostęp do katalogu oznacza, że ​​użytkownik może czytać zawartość. Użytkownik może spojrzeć na plikfilenames wewnątrz katalogu.

pisać

Dostęp oznacza, że ​​użytkownik może dodawać lub usuwać pliki z katalogu.

Wykonać

Wykonywanie katalogu nie ma sensu, więc potraktuj to jako uprawnienie do przeglądania.

Użytkownik musi mieć execute dostęp do bin katalogu, aby wykonać plik ls albo cd Komenda.

Zmiana uprawnień

Aby zmienić uprawnienia do pliku lub katalogu, użyj rozszerzenia chmod(Zmień tryb) polecenie. Istnieją dwa sposoby użycia chmod - tryb symboliczny i tryb absolutny.

Używanie chmod w trybie symbolicznym

Najłatwiejszym sposobem modyfikowania uprawnień do plików lub katalogów przez początkującego jest użycie trybu symbolicznego. Dzięki uprawnieniom symbolicznym możesz dodawać, usuwać lub określać żądany zestaw uprawnień za pomocą operatorów w poniższej tabeli.

Sr.No. Operator i opis chmury Chmod
1

+

Dodaje wyznaczone uprawnienia do pliku lub katalogu.

2

-

Usuwa wyznaczone uprawnienia z pliku lub katalogu.

3

=

Ustawia wyznaczone uprawnienia.

Oto przykład użycia testfile. Bieganiels -1 w pliku testowym pokazuje, że uprawnienia pliku są następujące -

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Następnie każdy przykład chmod polecenie z poprzedniej tabeli jest uruchamiane na pliku testowym, po którym następuje ls –l, więc możesz zobaczyć zmiany uprawnień -

$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Oto, jak możesz połączyć te polecenia w jednym wierszu -

$chmod o+wx,u-x,g = rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

Używanie chmod z absolutnymi uprawnieniami

Drugim sposobem modyfikacji uprawnień za pomocą polecenia chmod jest użycie liczby do określenia każdego zestawu uprawnień do pliku.

Każdemu uprawnieniu przypisywana jest wartość, jak pokazano w poniższej tabeli, a suma każdego zestawu uprawnień zawiera liczbę dla tego zestawu.

Numer Ośmiokrotna reprezentacja uprawnień Nr ref
0 Brak pozwolenia ---
1 Wykonaj pozwolenie --x
2 Napisz pozwolenie -w-
3 Uprawnienia do wykonywania i zapisu: 1 (wykonanie) + 2 (zapis) = 3 -wx
4 Czytaj pozwolenie r--
5 Uprawnienia do odczytu i wykonywania: 4 (odczyt) + 1 (wykonanie) = 5 rx
6 Prawo do odczytu i zapisu: 4 (odczyt) + 2 (zapis) = 6 rw-
7 Wszystkie uprawnienia: 4 (odczyt) + 2 (zapis) + 1 (wykonanie) = 7 rwx

Oto przykład wykorzystujący plik testowy. Bieganiels -1 w pliku testowym pokazuje, że uprawnienia pliku są następujące -

$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

Następnie każdy przykład chmod polecenie z poprzedniej tabeli jest uruchamiane na pliku testowym, po którym następuje ls –l, więc możesz zobaczyć zmiany uprawnień -

$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

Zmiana właścicieli i grup

Tworząc konto w systemie Unix, przypisuje plik owner ID i a group IDdla każdego użytkownika. Wszystkie wyżej wymienione uprawnienia są również przypisywane na podstawie właściciela i grup.

Dostępne są dwa polecenia do zmiany właściciela i grupy plików -

  • chown - The chown komenda oznacza "change owner" i służy do zmiany właściciela pliku.

  • chgrp - The chgrp komenda oznacza "change group" i służy do zmiany grupy pliku.

Zmiana właściciela

Plik chownpolecenie zmienia własność pliku. Podstawowa składnia jest następująca -

$ chown user filelist

Wartością użytkownika może być name of a user w systemie lub user id (uid) użytkownika w systemie.

Poniższy przykład pomoże ci zrozumieć koncepcję -

$ chown amrood testfile
$

Zmienia właściciela danego pliku na użytkownika amrood.

NOTE - Superużytkownik, root, ma nieograniczoną możliwość zmiany własności dowolnego pliku, ale zwykli użytkownicy mogą zmieniać własność tylko tych plików, które są ich właścicielami.

Zmiana prawa własności do grupy

Plik chgrppolecenie zmienia prawa własności pliku do grupy. Podstawowa składnia jest następująca -

$ chgrp group filelist

Wartością group może być name of a group w systemie lub the group ID (GID) grupy w systemie.

Poniższy przykład pomoże ci zrozumieć koncepcję -

$ chgrp special testfile
$

Zmienia grupę podanego pliku na special Grupa.

Uprawnienia do plików SUID i SGID

Często, gdy polecenie jest wykonywane, będzie musiało zostać wykonane ze specjalnymi uprawnieniami, aby wykonać swoje zadanie.

Na przykład, gdy zmienisz hasło za pomocą passwd polecenie, twoje nowe hasło zostanie zapisane w pliku /etc/shadow.

Jako zwykły użytkownik nie masz read lub writedostęp do tego pliku ze względów bezpieczeństwa, ale kiedy zmieniasz hasło, musisz mieć uprawnienia do zapisu w tym pliku. Oznacza to, żepasswd program musi nadać Ci dodatkowe uprawnienia, abyś mógł zapisywać do pliku /etc/shadow.

Dodatkowe uprawnienia są nadawane programom za pośrednictwem mechanizmu znanego jako Set User ID (SUID) i Set Group ID (SGID) bity.

Gdy uruchamiasz program, który ma włączony bit SUID, dziedziczysz uprawnienia właściciela tego programu. Programy, które nie mają ustawionego bitu SUID, są uruchamiane z uprawnieniami użytkownika, który uruchomił program.

Tak jest również w przypadku SGID. Zwykle programy są uruchamiane z uprawnieniami Twojej grupy, ale zamiast tego Twoja grupa zostanie zmieniona tylko dla tego programu na właściciela grupy programu.

Bity SUID i SGID pojawią się jako litera "s"jeśli pozwolenie jest dostępne. SUID"s" bit będzie znajdować się w bitach uprawnień, w których właściciele execute zezwolenie zwykle przebywa.

Na przykład polecenie -

$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

Pokazuje, że bit SUID jest ustawiony i że właścicielem polecenia jest root. Wielka literaS w pozycji wykonywania zamiast małych liter s wskazuje, że bit wykonania nie jest ustawiony.

Jeśli bit lepki jest włączony w katalogu, pliki można usunąć tylko wtedy, gdy jesteś jednym z następujących użytkowników -

  • Właściciel katalogu przyklejonego
  • Właściciel usuwanego pliku
  • Superużytkownik, root

Aby ustawić bity SUID i SGID dla dowolnego katalogu, wypróbuj następujące polecenie -

$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$