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: 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ą: W odniesieniu do katalogu powyższe litery oznaczają:
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:
PRZYKŁADY
  1. 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)
  2. 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)
  3. 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)
  4. 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:
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