LABORATORIUM 2
PRAWA DOSTĘPU DO PLIKÓW I KATALOGÓW
Polecenie ls -l wyświetla dla każdego obiektu na początku linii ciąg 10 atrybutów o postaci:
**********
Pierwszy znak w tym ciągu określa typ pliku:
- (-) plik zwykły (ordinary file)
- d katalog (directory)
- p łącze nazwane (named pipe)
- l dowiązanie symboliczne (symbolic link)
- b urządzenie blokowe (block device)
- c urządzenie znakowe (character device)
- s gniazdo (socket)
i kilka innych (zależnie od rodzaju systemu).
Pozostałych 9 znaków tworzy 3 trójki o postaci:
rwxrwxrwx
gdzie na każdej pozycji może wystąpić podana litera lub znak - . Znaki te określają prawa
dostępu do pliku. Wystąpienie litery oznacza, że dane prawo jest nadane, zaś znak - oznacza,
że dane prawo jest odebrane.
Pierwsza trójka odnosi się do praw
właściciela pliku, druga - do
praw
grupy właściciela, zaś trzecia - do wszystkich
innych użytkowników danego systemu.
W odniesieniu do pliku powyższe litery oznaczają:
- r - prawo do odczytu (read)
- w - prawo do zapisu (write)
- x - prawo do wykonywania (execute) (odnosi się do programów binarnych oraz skryptów)
W odniesieniu do katalogu powyższe litery oznaczają:
- r - prawo do zapoznania się z zawartością katalogu (tj. uzyskania informacji,
jakie nazwy i atrybuty plików i katalogów w nim występują);
- w - prawo do zmiany zawartości katalogu (tj. tworzenia i usuwania w nim plików i
katalogów, jak również do zmiany ich nazw i atrybutów);
- x - prawo do "wejścia" do danego katalogu (czyli uczynienia go swoim katalogiem
bieżącym).
Nadawać i odbierać prawa dostępu do pliku lub katalogu może jego właściciel przy użyciu
polecenia
chmod (change mode - zmień tryb). Polecenie to ma następującą postać:
chmod [ komu_jakie ] nazwa_obiektu
nazwa_obiektu jest nazwą pliku lub katalogu, natomiast argument komu_jakie może być
tworzony na kilka różnych sposobów. Stosowane są oznaczenia:
- u - właściciel (user)
- g - grupa (group)
- o - inni (other)
PRZYKŁADY
- chmod g+x plik (członkom grupy właściciela do posiadanych już wcześniej praw zostaje
dodane prawo do wykonywania programu zawartego w danym pliku. Prawa właściciela i
innych użytkowników nie ulegają zmianie)
- chmod o-w plik (użytkownikom spoza grupy zostało odebrane prawo do zapisu w danym
pliku, wszelkie pozostałe prawa dostępu - bez zmian)
- chmod u=rw plik (właściciel ustalił, że będzie posiadał prawo do odczytu i zapisu, ale nie do
wykonywania danego pliku. Prawa grupy i innych - bez zmian)
- chmod 705 plik (cyfry 7, 0, 5 są traktowane jako cyfry oktalne, stanowiące skrótowy zapis
trójek bitów: 111, 000, 101. Trójki te są odpowiednio interpretowane: właściciel - wszystkie
prawa, grupa - żadnych praw, pozostali - prawo do odczytu i wykonywania, ale nie do zapisu)
Tabela cyfr oktalnych i ich odpowiedników binarnych:
- 0 | 000
- 1 | 001
- 2 | 010
- 3 | 011
- 4 | 100
- 5 | 101
- 6 | 110
- 7 | 111
ZADANIA
Zaloguj się na SIGMĘ: ssh login@sigma.ug.edu.pl
Zad 1. Znajdź wszystkie pliki na swoim koncie domowym, które twoja grupa (group) na
sigmie może przeglądać. Skorzystaj z poznanego wcześniej polecenia
find i odpowiedniego przełącznika.
Zad 2. Znaleźć w swoim katalogu domowym podkatalog public_html (jeżeli go nie ma, to utworzyć). Umieścić w nim
plik o nazwie strona.html (lub index.html) i następującej zawartości:
To jest moja strona domowa
Sprawdzić, jakie są minimalne prawa dostępu, które trzeba przydzielić do:
a) katalogu domowego;
b) katalogu public_html;
c) pliku strona.html, aby zawartość pliku była widoczna w przeglądarce internetowej pod
adresem (prawdopodobnie bez inf):
http://sigma.inf.ug.edu.pl/~nazwa_konta/strona.html
Spróbuj przejrzeć inne pliki z twojego konta w przeglądarce:
http://sigma.inf.ug.edu.pl/~login/pliki i podkatalogi public_html
Zad 3. Utworzyć we własnym katalogu domowym niedużą strukturę podkatalogów i plików
tekstowych. Poprzydzielać różne prawa dostępu, następnie spróbować wejść do katalogów
domowych innych uczestników zajęć i sprawdzić, które z obiektów są tam dla nas dostępne (i
w jakim sensie). Spróbować utworzyć własny plik w cudzym katalogu ("kukułcze jajko") oraz
spróbować usunąć cudzy plik we własnym katalogu (co można zaobserwować?).
Wypróbować powyższe operacje:
a) w trybie tekstowym;
b) przy użyciu programu Midnight Commander (mc);
c) przy użyciu graficznego interfejsu użytkownika.
UWAGA: nie należy odbierać samemu sobie praw dostępu do swojego katalogu domowego
(nie będzie możliwe odczytanie plików konfiguracyjnych ani startowych przez
oprogramowanie w trakcie otwierania sesji pracy - grozi wizyta u administratora systemu !).
Zad 4. W utworzonej na swoim koncie strukturze podkatalogów przeprowadzić
eksperymenty:
a) usuwając wszelkie prawa dostępu do katalogu bieżącego;
b) usuwając wszelkie prawa dostępu do katalogu nadrzędnego (nadkatalogu). W jakich przypadkach
możemy wykonać wtedy polecenie cd ? W jakich przypadkach możemy wykonać polecenie
chmod? Czy możemy bezpośrednio przeskoczyć do katalogu ABC/XYZ, jeżeli nie mamy
prawa wstepu do ABC, ale mamy do XYZ?
Zad 5. W zespołach 2- lub 3-osobowych wypróbować możliwość komunikacji przez
współdzielony plik: na jednym z kont w zespole utworzyć pusty plik i przydzielić
odpowiednie prawa dostępu (do pliku i do katalogu domowego). Wpisywać i odczytywać
komunikaty przy użyciu poleceń:
echo treść_komunikatu > plik
cat plik
ROZSZERZONE PRAWA DOSTĘPU
Poza zwykle stosowanymi prawami dostępu r, w, x możliwe jest też stosowanie innych
atrybutów modyfikujących działanie nadanych praw. Atrybuty te są dodatkowymi bitami,
które możemy modyfikować tak jak poprzednie, za pomocą liter lub cyfr.
Bit
Set User ID (SUID) pozwala aby, proces wykonujący program zawarty w pliku o takim
atrybucie będzie działać nie z prawami swojego rzeczywistego właściciela (tego, który go
uruchomił), ale z prawami właściciela pliku z programem (to nie musi być ten sam
użytkownik).
Używamy go kiedy uprawnienia root-a są potrzebne do wykonania niektórych czynności, np.
zmiana hasła lub kiedy nie chcemy podawać hasła pewnego użytkownika, ale chcemy móc
wykonać polecenia z jego uprawnieniami.
Program
passwd korzystając z uprawnień root-a pozwala edytować w ściśle określony sposób
plik /etc/shadow, czyli zmienić wpis o swoim haśle ale nic ponadto.Ustawiamy go poleceniem:
chmod 4--- nazwa_pliku lub chmod u+s nazwa_pliku
Bit
Set Group ID (SGID) pozwala aby, proces wykonujący program zawarty w pliku o takim
atrybucie będzie działać nie z prawami swojej rzeczywistej grupy, ale z prawami grupy
właściciela pliku z programem.Ustawiamy go poleceniem:
chmod 2--- nazwa_pliku lub chmod g+s nazwa_pliku
Sticky bit to atrybut katalogu, który sprawia, że pliki mogą być usuwane lub
przemianowywane tylko przez odpowiednie osoby. Jest często stosowany w katalogu /tmp,
do którego dostęp mogą mieć wszyscy użytkownicy systemu.Ustawiamy go poleceniem:
chmod 1--- nazwa_katalogu lub chmod o+t nazwa_katalogu
ZADANIA CD.
Zad 6. Sprawdź, że plik /usr/bin/passwd rzeczywiście ma takie uprawnienia. Które jeszcze
polecenia mają te uprawnienia?
Zad 7.Stworzyć kilka plików i katalogów oraz nadać im uprawnienia z dodatkowymi
atrybutami. Poleceniem ls -l sprawdzić wyniki. Spróbować odjąć uprawnienie wykonywania
(x) od pliku lub katalogu z ustawionymi dodatkowymi uprawnieniami. Co można
zaobserwować?
Zad 8. W zespołach co najmniej 3-osobowych przeprowadzić następujący eksperyment: jedna
osoba (admin) przydziela odpowiednie prawa dostępu tak, aby umożliwić pozostałym
członkom zespołu usuwanie plików i wejście do swojego utworzonego katalogu, w którym
wszyscy tworzą jakieś własne pliki. Spróbować usunąć pliki innych użytkowników.
Następnie po aktywowaniu sticky bita przez admina na powyższym katalogu spróbować
ponownie. Co można zaobserwować?
Zad 9. Wypróbować działanie poleceń:
echo $UID
oraz echo $EUID
(wyświetlających odpowiednio rzeczywisty oraz skuteczny identyfikator użytkownika).
Utworzyć na swoim koncie nieduży plik tekstowy i nadać mu prawa dostępu 600 (oktalnie).
Utworzyć i skompilować następujący program w języku C:
#include <stdio.h>
main(){
int c;
FILE *f;
printf("Real UID=%u\n",getuid());
printf("Effective UID=%u\n\n",geteuid());
f=fopen(" ...nazwa ścieżkowa pliku tekstowego...","r");
while ((c=fgetc(f))!=EOF) putchar(c); // w przypadku pomyślnym wyświetla zawartość pliku o podanej nazwie
fclose(f);
return;
}
W zespołach 2- lub 3-osobowych przeprowadzić następujący eksperyment: przydzielić
odpowiednie prawa dostępu tak, aby umożliwić pozostałym członkom zespołu wejście do
katalogu, w którym jest plik tekstowy oraz skompilowany program.
a) Przydzielić plikowi
zawierającemu skompilowany program prawa 755 (oktalnie), wykonać program samemu i
zalecić to samo pozostałym członkom zespołu.
b) Podać polecenie: chmod u=rws .......(nazwa pliku ze skompilowanym programem)
i zalecić powtórne uruchomienie programu. Jaką różnicę można zaobserwować ?
UWAGA: nadanie praw 755 jest konieczne z powodu korzystania przez sigmę z sieciowego
systemu plików; zasadniczo powinno być wystarczające nadanie praw 711. (nowy serwer,
sprawdzić czy działa 711
UMASK
Każdy program, który tworzy nowy plik, tworzy go z pewnymi (domyślnymi) prawami
dostępu określonymi w tym programie (dokładniej: określonymi przez jeden z argumentów
funkcji tworzącej nowy plik). Jeżeli użytkownik programu chce (zazwyczaj ze względów
bezpieczeństwa) zmniejszył te domyślne prawa, może zrobić to ustawiając odpowiednio
swoją maskę trybu pliku. Maska trybu pliku jest atrybutem danego procesu użytkownika
(dziedziczonym przez procesy potomne). W przypadku procesu interpretera poleceń maska
może być zmieniana przy użyciu polecenia wewnętrznego umask.
ZADANIA CD.
Zad 10. W opisie bash'a przeczytać opis polecenia wewnętrznego umask i wypróbować jego
działanie sprawdzając, a następnie zmieniając swoją maskę trybu pliku i tworząc za każdym
razem nowe pliki (przy użyciu polecenia touch plik), a później sprawdzając uzyskane prawa
dostępu do nich (polecenie ls -l). Jaka operacja logiczna na bitach domyślnych praw dostępu
oraz maski jest wykonywana ?
Proszę dokładnie zapoznać się z działaniem umask, pomocna strona:
https://www.arturpyszczuk.pl/commands-umask.html