• Nie Znaleziono Wyników

Pliki Unixa - podstawowe koncepcje

N/A
N/A
Protected

Academic year: 2021

Share "Pliki Unixa - podstawowe koncepcje"

Copied!
17
0
0

Pełen tekst

(1)

Pliki Unixa

podstawowe koncepcje

Tomas z B orzys zkows ki

(2)

Diagram blokowy jądra systemu

Programy użytkowników

Poziom użytkownika Biblioteki

Poziom jądra

Poziom jądra Poziom sprzętu

Interfejs funkcji systemowych

Podsystem plików Znakowe Blokowe Programy obsługi Bufor Sterowanie sprzętem Podsystem sterujący procesami Komunikacja międzyprocesowa Przydział CPU Zarządzanie pamięcią 2

(3)

Podsystem plików

Tablica deskryptorów plików użytkownika Własność procesu użytkownika Tablica plików Tablica i-węzłów Własność jądra (struktury globalne)

tablica deskryptorów jest przydzielana każdemu procesowi, gdy

proces otwiera/tworzy plik w tablicy tej jest pamiętana odp. informacja

tablica plików pamięta przesunięcie wzgl. pocz. pliku bajtu,

którego będzie dotyczyła następna operacja czytania/pisania oraz prawa dostępu procesu, który plik otworzył

(4)

i-węzeł zawiera

 identyfikator właściciela (UID) i grupy (GID) pliku

 typ pliku (zwykły, katalog, specjalny znakowy, specjalny

blokowy, łącze lub 0 jeżli i-węzeł nie jest używany

 prawa dostępu do pliku

 czasy ostatniej modyfikacji i dostępu do pliku oraz czas

ostatniej modyfikacji i-węzła

 liczba dowiazań do pliku = liczba nazw jaką plik posiada w

drzewie katalogów

 rozmiar pliku

 adresy bloków dyskowych przechowujących zawartość pliku

Do przeglądania zawartości i-węzła służy polecenie stat. Użyteczne podczas sprawdzania właściwości plików mogą się okazać

ls oraz file (więcej informacji w standardowych informatorach

Linuxowych np.: man lub info).

(5)

Typy plików

pliki zwykłe

zawierają dane, mogą być zarówno binarne jak i

tekstowe

pliki specjalne

umożliwiają realizację operacji wejścia/wyjścia

urządzeń; są przechowywane w katalogu /dev

katalogi

zawierają listę plików

gniazda (sockets)

są to pliki specjalne wykorzystywane do

komunikacji między procesami np. proces lpd odbiera zlecenia wydruku od innych procesów za pomocą gniazda /dev/printer

potoki nazwane

kolejny po gniazdach mechanizm komunikacji

międzyprocesowej; pochodzi z Systemu V; są przechowywane w katalogu /dev

dowiązania

dzielimy na twarde i symboliczne; pierwsze

umożliwiają tworzenie wielu nazw dla tego samego i-węzła, drugie są plikami wskazującymi na nazwę innego pliku

(6)

Typy plików

cd.

Dowiązania twarde

Tworzy je polecenie ln plik hplik spowoduje utworzenie

nowego pliku o nazwie hplik z tym samym numerem i-węzła co

plik. Ponieważ i-węzły są niepowtarzalne w ramach danego

urządzenia, nie można tworzyć dowiązań twardych w obrębie kilku partycji.

Dowiązania symboliczne

Tworzy je polecenie ln -s plik splik powoduje utworzenie nowego pliku o nazwie splik wskazującego na plik plik.

Pytania

1. Jak można się dowiedzieć jaki jest typ pliku? W szczególności czy plik jest plikiem zwykłym, dowiązaniem twardym czy symbolicznym? 2. Wykonujemy komendy less hplik i less splik. Jak to się

dzieje, że wyświetlane są te same dane?

3. Co się stanie, gdy skasujemy plik plik, a następnie utworzymy go ponownie? Jaka będzie zawartość plików hplik i splik?

(7)

Typy plików: rozpoznawanie

Wyświetlając zawartość katalogu za pomocą polecenia ls -l, typ pliku rozpoznajemy po pierwszym znaku poprzedzającym prawa dostępu:

-

plik zwykły (dowiązanie twarde)

d

katalog

l

dowiązanie symboliczne

b

plik specjalny blokowy

c

plik specjalny znakowy

s

gniazdo (socket)

p

potok nazwany

Godne uwagi są również inne opcje polecenia ls takie jak -F czy -i (wypróbuj jak działają!). Wynik komendy ls -liF:

247620 -rw-r--r-- 1 tomek tomek 2709 Jan 22 1998 ug.inp

363065 drwxr-x--x 3 tomek tomek 4096 Feb 25 20:42 Public_html/ 68668 lrwxrwxrwx 1 tomek tomek 4 Aug 9 23:08 splik -> plik 180501 brw-rw---- 1 root disk 3,1 May 5 1998 /dev/hda1

181701 crw-rw-rw- 1 root root 5,0 May 5 1998 /dev/tty

182705 srw--- 1 root root 0 Aug 9 22:30 /dev/printer= 180305 prw--- 1 root root 0 Aug 9 13:29 /dev/initctl|

(8)

Katalogi: implementacja

Katalog to specjalny typ pliku zawierający listę par: nr i-węzła, nazwa pliku. Gdy proces używa nazwy ścieżkowej pliku, jądro przeszukuje fizyczne struktury katalogów i znajduje odpowiedni i-węzeł. Potem na podstawie informacji z i-węzła odczytuje dane z pliku.

i1 i2 i3 i4 nazwa 1 nazwa 2 nazwa 3 nazwa 4 Tablica i-węzłów Katalog 8

(9)

Katalogi: odwołania

Wyszukiwanie pliku w katalogach może prowadzić do wielu pośrednich odczytów i-węzłów. Jest to związane z tym, że plik może być

umieszczony b. głęboko w strukturze katalogów.

(10)

Pobieranie informacji z i-węzła

W Linuxie dostępne są trzy sposoby pobierania informacji z i-węzła

#include <sys/stat.h>

int stat (const char *sciezka, struct stat *statbuf); int lstat(const char *sciezka, struct stat *statbuf); int fstat(int desk, struct stat *statbuf);

Wszystkie powyższe funkcje przekazują pola odp. i-węzła do struktury *statbuf z tym, że stat() o pliku *sciezka podążając za

dowiązaniami symbolicznymi (o ile są), natomiast lstat() nie

podąża za dowiązaniami symbolicznymi. fstat() działa jak stat() z

tym, że plik jest przekazany przez deskryptor otwartego pliku.

Ćwiczenie

1. Omówić program stat_ex.c

2. Zmienić pow. program tak by wywoływać funkcje stat() i fstat()

zamiast lstat(). Zademonstrować jak zmieni się działanie.

3. Zmodyfikować programy z p. 2. tak, by typ pliku był podawany słownie.

(11)

Prawa dostępu

Standardowe

Systemy UNIX i Linux udostępniają możliwość nadania każdemu plikowi praw do czytania, pisania i wykonywania (rwx) dla

użytkownika / właściciela pliku, grupy i pozostałych użytkowników.

Rozszerzone

Część systemów UNIXowych, także Linux, udostępnia tzw.

rozszerzone prawa dostępu. Są to Bit lepkości (ang. Sticky bit) o kodzie t oraz prawo “ustaw UID/GID” o kodzie s. Oba, podobnie jak prawa standardowe ustawia się poleceniem chmod.

Dla plików (<sys/stat.h>)

t

: Powoduje utrzymanie w pamięci binariów programu nawet, jeżeli

proces, który z nich korzystał, już się zakończył. Może to zmniejszyć obciążenie sytemu (01000 = S_ISVTX).

s

: Ustawione dla plików binarnych powoduje, że procesy, które je

wykonują mają takie same prawa jak właściciel wykonywanego pliku (GID 02000 = S_ISGID; UID: 04000 = S_ISUID). 11

(12)

Rozszerzone prawa dostępu: katalogi

Sticky bit

Standardowo użytkownik może usuwać pliki ze wszystkich katalogów, do których posiada prawo do pisania. Ustawienie bitu lepkości dla katalogu powoduje, że pliki w nim może usuwać tylko właściciel plików lub użytkownik posiadający prawo pisania dla tych plików.

Bit lepkości ustawia się dla katalogów, do których każdy powinien

mieć prawo pisania ale nie każdy powinien mieć prawo usuwania plików.

Prawo SGID

Prawo to nadane katalogom posiada również specjalne znaczenie.

Oznacza ono, że pliki tworzone w tym katalogu będą miały nadawaną taką grupę jaka jest grupa tego katalogu, a nie grupa główna

użytkownika, który je tworzy.

Zadanie

Zademonstrować działanie bitu lepkości i prawa SUID/SGID dla katalogów i/lub (trudniejsze) dla plików.

(13)

Rozszerzony system plików: ext2

Pierwszym Linuxowym systemem plików był system plików MINIXa. Jego następcą był tzw. Rozszerzony System Plików. Obecnie

powszechny jest jego następca tzw. System Drugi Rozszerzony: ext2.

ext2 jest rozszerzeniem standardowego UNIXowego systemu plików.

Pozwala na ustawianie plikom dodatkowych atrybutów takich jak:

Atrybut Definicja Ustawianie

EXT2_APPEND_FL

EXT2_IMMUTABLE_FL

EXT2_NODUMP

EXT2_SYNC_FL

Plik może być otwarty do pisania tylko ze znacznikiem O_APPEND

Nikt nawet admin nie może modyfikować ani usuwać pliku Plik powinien być ignorowany przez polecenie dump

Aktualizacja synchroniczna jak przy open() z O_SYNC

chattr +a chattr +i chattr +d

chattr +s

Dwa pierwsze atrybuty mogą być ustawiane tylko przez admina.

Opisy pozostałych atrybutów można znaleźć w <linux/ext2_fs.h>

(14)

ext2 - Ćwiczenia

Pokazać:

1. Przedstawić programy checkflags.c i setflags.c.

2. Znaleźć plik <linux/ext2_fs.h> i pokazać sekcję Inode flags.

Zadania

1. Nauczyć się używać polecenia chattr i lsattr do zmiany i czytania ustawień plików systemu ext2.

2. Rozszerzyć programy checkflags.c i setflags.c o

możliwość ustawiania/czytania kilku nowych atrybutów ext2. jakie jest ich znaczenie?

(15)

Struktura katalogów

/ Katalog główny. W jego obrębie zgromadzone są wszystkie pliki i

katalogi, niezależnie od ich fizycznej lokalizacji.

/bin i /usr/bin Pierwszy zawiera programy będące poleceniami

systemowymi, drugi programy użytkowe instalowane dodatkowo.

/boot Zawiera jądro Linuxa, vmlinuz i inne pliki niezbędne podczas

bootowania systemu.

/dev Zawiera pliki specjalne umożliwiające dostęp do urządzeń. /etc, /sbin i /usr/sbin Zawierają pliki umożliwiające

administrację i konfigurację systemu. /etc zawiera skrypty

umożliwiające start i konfigurację systemu, natomiast /sbin

i /usr/sbin programy umożliwiające wykonywanie większości

czynności administracyjnych dotyczących systemu i zainstalowanego oprogramowania, odpowiednio.

/home przeznaczony na katalogi domowe użytkowników systemu.

Nazwa tego katalogu nie jest z góry narzucona i może być dowolnie zmieniana przez administratora systemu. Spotyka

(16)

cd.

/lost+found Zawiera pliki zagubione. Niepoprawne wyłączenie

systemu lub dysku może prowadzić do sytuacji, w której pliki i ich i-węzły są przechowywane na dysku, natomiast nie są

wymienione w żadnym drzewie plików. Za wyszukiwanie zagubionych plików odpowiada polecenie fsck.

Struktura katalogów

/mnt Tymczasowy pusty katalog montowania. Przeznaczony do

chwilowego montowania systemów plików z partycji dyskowych.

/proc Katalog procesów. Pliki przechowywane w tym katalogu

odpowiadają aktualnie działającym procesom (istniejącym w tablicy procesów jądra).

/tmp Katalog tymczasowy dostępny dla wszystkich użytkowników.

Zadaniem admina jest okresowe czyszczenie tego katalogu.

Procedury startowe uruchamiają skrypt czyszczący ten katalog.

/var Katalog kolejkowania i logów (varing data) . Podkatalog

/var/spool służy do przechowywania danych dot. kolejkowania.

Kolejkowania wymagają m.in. uucp, lpd, poczta elektr., cron, ...

(17)

Katalog

/usr

Katalog ten zawiera podkatalogi przeznaczone do przechowywania lokalnie tworzonych programów, poleceń użytkowych, bibliotek dzielonych i innych.

/usr/bin Zawiera polecenia systemowe i skrypty uruchamiane przez

wszystkich użytkowników.

/usr/include Zawiera standardowe pliki nagłówkowe języka C. /usr/lib Zawiera publicznie dostępne pliki biblioteczne.

/usr/local Zawiera pliki lokalne. Katalog /usr/local/bin

jest zarezerwowany na aplikacje tworzone i rozwijane przez użytkowników, także ściągnięte przez nich z Internetu.

/usr/man, /usr/info i /usr/doc Zawierają pliki wbudowanego

informatora systemowego man, info i pliki poscritowe.

/usr/share Zawiera dane dzielone tj. dane statyczne wymagane

przez różne programy. Dane te nie muszą być kopiowane lokalnie na wszystkie komputery, ale są dostępne w jednym

Obraz

Diagram blokowy jądra systemu

Cytaty

Powiązane dokumenty

Pierwszą daną w pliku jest liczba elementów tablicy... Liczba danych nie jest z

4. podaniu aktów normatywnych do wiadomości publicznej w określony prawem sposób. Akty stanowione prawa mają charakter prospektywny, co oznacza że zwrócone są ku

Włącz konspekt numerowany (numerację rozdziałów) tak, by akapity złożone stylem &#34;Nagłówek 1&#34; były numerowane jako kolejne rozdziały, a te złożone stylem

Skopiuj plik plikA z katalogu katalogA do katalogu katalogB za pomocą polecenia cp zmieniając nazwę na plikTymaczasowy- cp ../katalog1/plik1

Utwórz w katalogu domowym dowiązanie symboliczne o nazwie aaa do pliku oryginal.. Utwórz w katalogu domowym dowiązanie sztywne o nazwie ccc do

passwd – zmiana hasła (id – sprawdzenie kto jest zalogowany)

17.Pozamerytoryczne czynniki wpływające na podejmowanie decyzji sędziowskich 18.Racjonalność językowa prawodawcy w świetle orzecznictwa (SN, NSA lub TK) 19.Rola racjonalnego

Usuń katalog Meksyk z ca łą