Úvod do UNIXu (2 nd round) David Hoksza (obrázky na slidech 9, 12, 15 převzaty od Libora Forsta –
Uživatelé systému identita uživatele id whoami nalogovaní uživatelé who w [user_name] log relací last informace o uživateli finger login chfn login změna údajů
Komunikace write user_name ukončení CTRL+C mesg [y|n] Povolení (potlačení) přijímání zpráv talk on-line komunikace
Přístupová práva (1) uživatelé /etc/passwd login;heslo;UID;GID;plné jméno;domovský adresář;shell není-li heslo, pak v /etc/shadow více UID značí alias uživatelské skupiny /etc/group 1 uživatel - min 1 skupina defaultní GID = 100, nebo GID = UID práva pro soubory a adresáře každý soubor má právě jednoho vlastníka UID a GID vlastník (u - user), skupina (g - group), ostatní (o - others) (, všichni (a - all)) každá skupina Čtení (r - read)(u adresáře výpis), zápis (w - write), spouštění (x - execute) (u adresáře vstup) ls –l rwxrwxrwx – uživatel vše (1. trojice), skupina vše (2. trojice), ostatní vše (3. trojice) rwxr-x--x – uživatel vše (1. trojice), skupina r+x (2. trojice), ostatní x (3. trojice)
Přístupová práva (2) chmod rights file_dir_name změna přístupových práva písmenná notace [a|u|g|o][+-=][rwx] o+x přidání práva spouštění ostatním a-w odebrání práva čtení všem g=rw nastavení skupině právo čtení a zápisu číselná notace osmičková soustava r = 4, w = 2, x = 1 rw = 6, w = 2, rx = 5 nastavení popisuje trojice číslic pro ugo 644 = vlastník r+w, skupina r, ostatní r 755 = vlastník r+w+x, skupina r+x, ostatní r+x -R rekurzivně chown owner[:group] file_name změní vlastníka (skupinu) souboru chgrp group file_name změní vlastnící skupinu souboru
Přístupová práva (3) vlastník souboru tvůrce vlastnící skupina souboru primární skupina tvůrce newgrp group_name změna aktuální uživatelské skupiny zkopírováním se mění vlastník (!) právo x u adresáře dovoluje se znalostí umístění souboru s ním dělat cokoli (v závislosti na právech souboru) pro přístup k adresáři je třeba mít x ke všem nadřazeným adresářům
Přístupová práva (4) SUID, SGID přístupové flagy další číslice v osmičkovém zápisu (4 – SUID, 2 – SGID, 1 – sticky) SUID (Set User ID), SGID (Set Group ID) spustitelné soubory práva vlastníka (skupiny v případě SGID) často zakázané [a|u|g|o]+s písmeno s v “ls –l” místo x adresáře SGID vynucuje pro vytvářené soubory GID SUID vynucuje pro vytvářené soubory UID (FreeBSD)
Přístupová práva (5) sticky bit sticky bit t v “ls –l” chmod +t file_name spustitelné doubory textový segment programu do swapu (urychlení příštího načtení) ostatní nenahrávat do paměti (tmp - Solaris) adresáře práva k souborům mají pouze vlastnící souborů, adresáře a root (nikdo další) – využíváno u world-writable adresářů (/tmp) Solaris, NetBSD
Přístupová práva (6) Defaultní nastavení vlastník (u)skupina (g)ostatní (o) r w x suid sticky sgid umask mask user file creation mode mask změna defaultního nastavení bitový násobek unárního komplementu masky a plných práv pro soubory = 666 AND NOT(174 8 ) = plných práv pro adresáře = 777 AND NOT(174 8 ) = 603 8
Úkol Jak donutit program id aby dal totožný výstup jako whoami? Vytvořit soubor Zpřístupnit ho ostatním studentům, ale ne mě (uživatel tupost) – lze to? Na čem to závisí? Vytvořit adresář a v něm soubory tak, že půjde číst pouze jeden zvolený soubor (pro kohokoli) a nic jiného s adresářem dělat nepůjde Přesvědčit se, že zkopírováním souboru se mění vlastník Nalézt příkaz, který vylistuje skupiny ve kterých jste (pouze a jenom skupiny)
i-node datová struktura s informacemi o objektech souborového sytému počet i-nodů je omezen každý soubor má svůj i-node identifikace číslem (i-number) nemění se ani při přesunu souboru (adresáře) ls -i obsah i-nodu (POSIX): velikost souboru id zařízení UID GID mód souboru (rwx) čas modifikace i-nodu (ctime) modifikace obsahu (mtime) přístup (atime) pole odkazů na datové bloky stat file_name
Adresace datových bloků blok nepřímých odkazů 1.řádu tabulka přímých odkazů v I-node blok nepřímých odkazů 2.řádu datové bloky blok nepřímých odkazů 3.řádu
Hard link odkaz na data filesystému (soubory) obvykle nelze odkazovat na adresáře label => může existovat více labelů používá se reference counting ln [options] source target vytvoří hard link na source pojemovaný target -b backup targetu při přepsání ls -l číslo za právy – počet hard linků -i čísla i-nodů
Soft link symbolic link, symlink symbolický soubor sloužící jako reference na jiný soubor (tedy i na adresář) Je to I-node práva jsou shodná s právy na soubor, kam link odkazuje (někdy lze změnit přepínačem v chown) sirotek – symlink ukazující do “prázdna“ OS zajišťuje transparentnost ln –s … parametry jako u hard linku ls –L pro symlinky vypisuje odkazované soubory (data jejich i-nodů) budou zavedeny ve Windows Vista (mklink)
Linky - příklad root:x:0:0:...../etc/passwd ln -s../etc/passwd passwdln /etc/passwd passwd 0 I-list... Originál /etc passwd Hard link /var passwd Soft link /usr passwd
Úkol 1. Vypíšu-li pomocí ls místo linků info o odkazovaných souborech, pak mám-li řetězec linků delší než 2, vypíše se mi až poslení člen? 2. Jak se chová symlink, když je vytvořen jako relativní/absolutní cesta a cíl je přesunut? 3. Vím, že mezi dvěma soubory je vtah linku, jak zjistím, zda jde o symlink, nebo hard link (ls –l je zakázáno)? 4. Vytvořte sirotka (nevraždit – myslí se symlink!!!)