Prawa dostępu
Kategoria: Artykuły, etykiety: system, dla początkujących
Dodany: 2009-07-26 18:12
(zmodyfikowany: 2009-08-16 12:46)
Przez: thalcave
Wyświetleń: 122361
W systemach sieciowych prawa dostępu odgrywają istotną rolę. Wpływają bezpośrednio na bezpieczeństwo systemu oraz danych użytkowników.
W systemie Linux uprawnienia do plików ustawia się niezależnie dla właściciela pliku, grupy, do której plik jest przydzielony oraz pozostałych użytkowników. Oddzielnie możemy ustawiać uprawnienia odczytu, zapisu i wykonania.
Sprawdzenie uprawnień do pliku/katalogu uzyskamy komendą:
ls -dl plik
Opcja -l
włącza tzw. pełny opis pliku, zaś -d
powoduje, że wyświetlane są katalogi a nie ich zawartość.
Pierwsza kolumna zawiera definicję nadanych uprawnień. Jest to 10 znaków, w których pierwszy charakteryzuje rodzaj pliku (przykładowo - - zwykły plik, d - katalog, l - dowiązanie symboliczne). Kolejne dziewięć znaków możemy podzielić na trzy grupy po trzy znaki odpowiadające za uprawnienia właściciela, grupy oraz pozostałych użytkowników. Każda z tych grup to ciąg trzech znaków oznaczających po kolei uprawnienia odczytu (read), zapisu (write) i wykonania (execute). Dla nadanego prawa występuje odpowiednia literka, przy jego braku myśnik (-).
Warto wspomnieć, że dla zwykłych plików uprawnienia działają zgodnie ze swoją nazwą, zaś dla katalogów troszkę odmiennie: odczytanie pozwala na odczytanie (wypisanie na ekranie) zawartości katalogu, zapis pozwala dokonywania w nim zmian (tworzenia plików/katalogów, zapisywania zmian w plikach itp.), zaś prawo wykonania zezwala na wejście do katalogu.
Kolumna czwarta i piąta to odpowiednio: właściciel pliku oraz grupa, do której plik należy.
Zmiana uprawnień
Zmianę uprawnień dokonujemy poleceniem chmod
, które jako argumenty przyjmuje definicje zmian oraz listę plików, których zmiany te dotyczą. Definicja zmian ma postać liter oznaczających grupy użytkowników, znaku definiującego nadanie lub odebranie uprawnień oraz liter wskazujących na uprawnienia do zmiany.
Oznaczenia grupy są następujące:
- u - właściciel pliku,
- g - grupa, do której plik należy,
- o - pozostali użytkownicy,
- a - wszyscy użytkownicy, skrócony zapis ugo
Znaki definiujące nadania to:
- + - nadanie praw,
- - - odjęcie praw,
- = - ustawienie danych praw oraz usunięcie pozostałych
Litery zmiany uprawnień:
- r - prawo odczytu,
- w - prawo zapisu,
- x - prawo wykonania
Przydatną opcją jest -R
powodująca rekursywne zmiany uprawnień.
Przykłady:
Nadanie praw odczytu i zapisu dla właściciela oraz grupy przy odebraniu pozostałych praw dla pliku .bashrc wykonuje polecenie:
chmod ug=rw ~/.bashrc
Aby zabrać wszelkie uprawnienia do katalogu /boot wraz z zwartością dla wszystkich użytkowników poza właścicielem:
chmod go= -R /boot
Aby odebrać prawo dokonywania zmian przez grupę i nadać prawo odczytu dla pozostałych użytkowników dla pliku .bashrc należy wykonać:
chmod g-w,o+r .bashrc
Zmiana uprawnień dowiązania symbolicznego zmienia bezpośrednio uprawnienia do pliku wskazywanego przez dowiązanie. Zaś samo dowiązanie symboliczne zawsze ma uprawnienia pełne (rxwrwxrwx
).
Czasami istnieje potrzeba nadania rekursywnego prawa wykonania dla katalogów, ale prawo to nie jest wymagane (a wręcz zbędne) plikom. Najlepiej zastąpić w takim wypadku x
znakiem X
(duży X będzie dotyczył tylko katalogów, pliki zostaną pominięte).
Zmiana właściciela pliku
Zmianę właściciela pliku może dokonywać tylko root (lub użytkownik z jego uprawnieniami). Użytkownicy o ograniczonych uprawnieniach mogą zaś zmieniać grupę własnościową pliku. Pod warunkiem, oczywiście, że do tej grupy należą.
Obie te operacje możemy wykonać jednym poleceniem
chown login:grupa pliki
Część :grupa
lub login
możemy pominąć, jeśli zmienić chcemy tylko jedną informację.
Dodatkowo zmienić grupę możemy poleceniem
chgrp grupa pliki
Obie komendy przyjmują, podobnie jak polecenie chmod
, opcję -R
powodującą zmianę rekursywną.
Prawa specjalne
W dzisiejszych systemach podstawowe prawa dostępu do plików bywają niewystarczające. Linux posiada trzy uprawnienia specjalne:
- SetUID - ustaw identyfikator użytkownika - uprawnienie pozwala uruchamiać pliki wykonywalne z uprawnieniami jego właściciela,
- SetGID - ustaw identyfikator grupy - uprawnienie pozwala uruchamiać pliki wykonywalne z uprawnieniami grupy, do której on należy,
- sticky bit - bit zaczepienia - ustawiony dla katalogu pozwala usuwać i zmieniać pliki w nim zawarte tylko przez właściciela
W dziewięcioznakowej definicji prawa specjalne nadpisują uprawnienia wykonania odpowiednio dla: właściciela, grupy i reszty użytkowników. SetUID i SetGID oznaczane są przez literę s (S jeśli prawo wykonania dla użytkownika lub grupy nie jest nadane), zaś dla sticky bit - t.
Przykłady:
Nadanie SetUID plikowi skrypt odbywa się przez:
chmod u+s skrypt
Zaś nadanie SetGID skryptowi skrypt wygląda następująco:
chmod g+s skrypt
Nadawanie praw w postaci absolutnej
Postać absolutna to liczba trzycyfrowa w systemie ósemkowym [złożona z cyfr od 0 do 7]. Pierwsza cyfra charakteryzuje prawa właściciela, druga grupy, trzecia - pozostałych użytkowników. Każda z nich jest sumą poszczególnych praw:
- prawo odczytu - 4,
- prawo zapisu - 2,
- prawo wykonania 1
Trybem absolutnym można ustawiać też prawa specjalne - dopisuje się w tym celu czwartą cyfrę na początku liczby trzycyfrowej:
- SetUID - 4,
- SetGID - 2,
- sticky bit - 1
Przykłady:
Aby odebrać plikowi .bashrc uprawnienia dla grupy oraz pozostałych użytkowników i nadać prawa odczytu i zapisu dla właściciela wykonujemy:
chmod 600 .bashrc
Aby nadać plikowi skrypt SetUID, pełne uprawnienia dla właściciela i prawo wykonania dla grupy oraz pozostałych użytkowników musimy użyć:
chmod 4711 skrypt
Ewentualne znalezione błędy proszę zgłaszać autorowi
- JID: thalcave [[at]] jid.dug.net.pl
- email: thalcave [[at]] gmail.com