Operační systém UNIX
Přednáška 4. - Identita uživatele
Identita uživatele
predn_04.odt
28.03.2007 15:47:03
1
Operační systém UNIX
Přednáška 4. - Identita uživatele
Identita uživatele (procesu) Vnější identita - identita uživatele Je tvořena přihlašovacím jménem a ověřována např. heslem Slouží k: přihlášení do systému pojmenování domovského adresáře jako jméno pro mail ... Pravidla pro tvorbu jmen: 8 znaků obvykle malá písmena
predn_04.odt
28.03.2007 15:47:03
2
Operační systém UNIX
Přednáška 4. - Identita uživatele
Vnitřní identita - identita procesu, souboru Číselná identifikace uživatele a skupiny (uid, gid) sloužící k autorizaci procesu uvnitř systému (ověření práv k provádění operací se soubory a práv ke spouštění jiných procesů). Každý proces má: uid (real, efective, saved) primární gid (real, efective, saved) Proces může mít přidělena další tzv. sekundární gid
Každý soubor má: uid gid
predn_04.odt
28.03.2007 15:47:03
3
Operační systém UNIX
Přednáška 4. - Identita uživatele
Změna identity procesu: RealUID
SavedUID
EfectiveUID
SavedUID
EfectiveUID
proveditelný soub. s S(et)UID UID
exec: RealUID
EUID=0: RUID, EUID na cokoliv EUID<>0: EUID na RUID nebo SavedUID
predn_04.odt
28.03.2007 15:47:03
4
Operační systém UNIX
Přednáška 4. - Identita uživatele
Vztah mezi identitami je definován: soubory v /etc: passwd: shadow, group jmennými službami - umožňují centralizaci správy (nejen) uživatelů: nis (příkazy yp...) nis+ (příkazy nis...) ldap
predn_04.odt
28.03.2007 15:47:03
5
Operační systém UNIX
Přednáška 4. - Identita uživatele
Soubor /etc/passwd: Slouží k překladu uid na jméno a naopak a k uložení informací nutných pro přihlášení uživatele. Pro každého uživatele jedna řádka rozdělená znaky : (dvojtečka)na sedm položek: přihl.jméno:krypt.heslo:uid:gid:úplné_jméno:dom.adresář:shell Příklad: $ cat /etc/passwd root:x:0:1:Super-User:/root:/sbin/sh daemon:x:1:1::/: bin:x:2:2::/usr/bin: sys:x:3:3::/: listen:x:37:4:Network Admin:/usr/net/nls: nobody:x:60001:60001:Nobody:/: noaccess:x:60002:60002:No Access User:/: nobody4:x:65534:65534:SunOS 4.x Nobody:/: honza:x:1001:10:Honza:/home/honza:/bin/ksh predn_04.odt
28.03.2007 15:47:03
6
Operační systém UNIX
Přednáška 4. - Identita uživatele
uživatelské_jméno Max. 8 znaků, definuje ho administrátor, uživatel ho nemá právo měnít. Nesmí být tvořeno pouze velkými písmeny Nemá smysl přiřadit stejné jméno dvěma uživatelům (druhý se nikdy nepřihlásí) Po přihlášení lze zobrazit: jako hodnotu proměnné LOGNAME příkazem whoami příkazem who am i Příklad: $ echo $LOGNAME honza $ who am i honza pts/3 $ whoami honza $
predn_04.odt
Oct 21 11:52
(localhost)
28.03.2007 15:47:03
7
Operační systém UNIX
Přednáška 4. - Identita uživatele
uživatelské_heslo Max. 8 znaků (většinou). Mění se příkazem passwd uživatel musí znát původní heslo, root ne uživatel musí dodržovat pravidla (délka, znaky), root ne. Uloženo v kryptovaném tvaru v /etc/passwd resp. /etc/shadow Kryptování je jednocestné: vstupní heslo (max. 8 znaků)
sůl (2 znaky)
crypt výstupní heslo (2+11 znaků)
predn_04.odt
28.03.2007 15:47:03
8
Operační systém UNIX
Přednáška 4. - Identita uživatele
uid - identifikační číslo uživatele Přidělováno administrátorem. Celé číslo (dříve max. 65535, nyní i více ale nedoporučuje se). uid=0 definuje tzv privilegovaného uživatele (obvykle se jménem root) Pod tímto uid bude po přihlášení uživatele spuštěn jeho shell (7.položka) Různí uživatelé by měli mít různá uid.
gid - identifikační číslo primární skupiny Přidělováno administrátorem. Celé číslo, dříve max. 65535, nyní i více ale nedoporučuje se Pod tímto gid bude po přihlášení uživatele spuštěn jeho shell.
predn_04.odt
28.03.2007 15:47:03
9
Operační systém UNIX
Přednáška 4. - Identita uživatele
úplné_jméno Podrobnější popis uživatele Posílán jako úplné jméno v mailu
domovský_adresář Adresář ze kterého je odstartován přihlašovací shell. Je na něj nastavena proměnná HOME
shell Absolutní cesta k příkazu, který je spuštěn po řádkovém přihlášení uživatele. Obvykle shell, ale může být i jiný program.
predn_04.odt
28.03.2007 15:47:03
10
Operační systém UNIX
Přednáška 4. - Identita uživatele
Soubor /etc/group Slouží k překladu gid na jméno skupiny a naopak a k definici tzv. sekundárních skupin. Pro každou skupinu jedna řádka rozdělena znaky : (dvojtečka) na čtyři pole: jméno_skupiny:heslo_skupiny:gid:seznam_uživatelů $ cat /etc/group root::0:root other::1: bin::2:root,bin,daemon ... nuucp::9:root,nuucp staff::10: daemon::12:root,daemon sysadmin::14:honza nobody::60001: noaccess::60002: nogroup::65534: $ predn_04.odt
28.03.2007 15:47:03
11
Operační systém UNIX
Přednáška 4. - Identita uživatele
jméno_skupiny Pravidla jako pro jméno uživatele. Uživatel se může přihlásit i když jeho primární skupina (z /etc/passwd) není v /etc/group
heslo_skupiny Nebývá obvykle implementováno (je prázdné).
gid Celé číslo podobně jako uid.
seznam_uživatelů 1. Uvedení uživatelé mají právo skupinového přístupu k souborům této skupiny (tato skupina je jejich sekundární skupinou). 2. Uvedení uživatelé mají právo příkazem newgrp si nastavit tuto skupinu jako primární.
predn_04.odt
28.03.2007 15:47:03
12
Operační systém UNIX
Přednáška 4. - Identita uživatele
Výpis a změna vnější identity Identitu definuje administrátor, uživatel si může měnit heslo příkazem passwd Kromě příkazů whoami a who am i vnější identitu zobrazují příkazy: groups who last ls -l Příklad: root@solaris/root>whoami root root@solaris/root>who am i root pts/2 Oct 24 09:46 (dilna) root@solaris/root>last -3 root pts/2 dilna Wed Oct 24 09:46 still logged in honza pts/2 dilna Sun Oct 21 21:27 - 02:11 (04:43) honza pts/3 localhost Sun Oct 21 14:52 - 19:27 (04:34) root@solaris/root>who root pts/2 Oct 24 09:46 (dilna) root@solaris/root> predn_04.odt
28.03.2007 15:47:03
13
Operační systém UNIX
Přednáška 4. - Identita uživatele
Výpis a změna vnitřní identity Aktuální uid a gid lze zobrazit příkazem id ( id -a ), pcred pid (Solaris) Pokud jsou efektivní uid resp. gid různá od uid resp. gid, zobrazí se také (id -a). Identita se nastavuje při startu procesu nebo mění na žádost procesu (viz dříve). Obvykle jsou uid a euid resp. gid a egid stejná a dědí se z rodičovského procesu. Neprivilegovaný proces může změnit identitu jen voláním programu s suidbitem. Při přihlášení (login, dtlogin, sshd, ...) mění vše. Programem newgrp se mění gid a egid. U programů s nastaveným suid bitem se mění euid. U programů s nastaveným sgid bitem se mění egid. Pozor! suid/sgid bit je nebezpečný pro skripty.
predn_04.odt
28.03.2007 15:47:03
14
Operační systém UNIX
Přednáška 4. - Identita uživatele
Příkaz su su [-] [přihlašovací_jméno] Startuje nový shell pod novou identitou. Původní shell nekončí. Po odhlášení z su se v něm pokračuje. Je-li su volán uživatelem, vyžaduje heslo, od roota ne. Je-li uveden přepínač -, provede přihlašovací skripty (nastaví prostředí). Je-li vynecháno přihlašovací jméno, doplní se jméno root
Příkaz newgrp newgrp sekundární_skupina Nahrazuje původní shell jiným shellem s novou skupinovou identitou. Použití příkazu je omezeno (viz dále u popisu souboru /etc/group)
predn_04.odt
28.03.2007 15:47:03
15
Operační systém UNIX
Přednáška 4. - Identita uživatele
Příklad: root@solaris/root>id uid=0(root) gid=1(other) root@solaris/root>su - honza Sun Microsystems Inc. SunOS 5.8 Generic February 2000 $ id uid=1001(honza) gid=10(staff) $ id -a uid=1001(honza) gid=10(staff) groups=10(staff),14(sysadmin) $ groups staff sysadmin $ newgrp sysadmin $ id uid=1001(honza) gid=14(sysadmin) $ newgrp staff $ id uid=1001(honza) gid=10(staff)
predn_04.odt
28.03.2007 15:47:03
16
Operační systém UNIX
Přednáška 4. - Identita uživatele
Vlastnictví souborů a přístupová práva Každý soubor/adresář má v i-uzlu: vlastníka (uid) a skupinu (gid). přístupová práva čtení (read), zápis (write) a provádění (execute) pro vlastníka (user), skupinu (group) a ostatní (other): Tyto informace vypisuje příkaz ls -l: přístupová práva pro vlastníka, skupinu, ostatní
drwxr-xr-x drwx------rw-r--r--
2 honza 2 root 1 honza
typ souboru -, d, c, b, p predn_04.odt
staff other staff
512 Oct 14 22:32 d1 512 Oct 21 15:32 dir 0 Mar 4 2001 konec
vlastník (uid) skupina (gid)
28.03.2007 15:47:03
17
Operační systém UNIX
Přednáška 4. - Identita uživatele
Význam přístupových práv: právo
význam u souboru
význam u adresáře
r
číst obsah souboru (cat)
vypisovat obsah adresáře (ls)
w
měnit obsah souboru (vi)
x
spouštět soubor jako program
predn_04.odt
zakládat a rušit soubory v adresáři (rm) nastavovat a procházet adresář (cd)
28.03.2007 15:47:03
18
Operační systém UNIX
Přednáška 4. - Identita uživatele
Postup při vyhodnocení práv:
+
euid procesu = 0
přístup povolen euid procesu = uid souboru -
+ použij příst. práva vlastníka
egid procesu resp. sek. gid = gid souboru -
+ použij příst. práva skupiny
použij příst. práva ostatní
predn_04.odt
28.03.2007 15:47:03
19
Operační systém UNIX
Přednáška 4. - Identita uživatele
Změna přístupových práv Právo měnit přístupová práva má pouze vlastník souboru a root Přístupová práva se mění příkazem chmod
Symbolická změna přístupových práv: chmod [-R] seznam_změn seznam_souboru seznam_změn je seznam jedné nebo více změn oddělených čárkami ve tvaru
<jak> kde: je jedno nebo více z: user, group, other, all <jak> je právě jedno z: +, -, = je jedno nebo více z: r, w, x, s, t Příklad: $ ls -l t1 -rwxr-xr-x 1 honza staff $ chmod u-w,go=w,a-x t1 $ ls -l t1 -r---w--w1 honza staff predn_04.odt
21 Mar
4
2001 t1
21 Mar
4
2001 t1
28.03.2007 15:47:03
20
Operační systém UNIX
Přednáška 4. - Identita uživatele
Absolutní (oktalová) změna přístupových práv: chmod [-R] kód seznam_souboru kde kód jsou oktalově vyjádřená přístupová práva. Příklad: $ ls -l t1 -r---w--w1 honza $ chmod 127 t1 $ ls -l t1 ---x-w-rwx 1 honza $
staff
21 Mar
4
2001 t1
staff
21 Mar
4
2001 t1
21 Mar 0 Oct
4 2001 t1 6 21:21 t2
21 Mar 0 Oct
4 2001 t1 6 21:21 t2
Nejčastější změny přístupových práv $ ls -l t[12] ---x-w-rwx 1 honza staff -rw-r--r-1 honza staff $ chmod 755 t1 $ chmod +x t2 $ ls -l t[12] -rwxr-xr-x 1 honza staff -rwxr-xr-x 1 honza staff predn_04.odt
28.03.2007 15:47:03
21
Operační systém UNIX
Přednáška 4. - Identita uživatele
Přístupová práva nově zakládaných souborů Jsou definována pomocí tzv. masky přístupových práv. Hodnota masky je součástí procesu (podobně jako uid a gid) a je dědičná. Hodnotu masky lze vypsat a případně měnit příkazem umask. Přístupová práva vzniknou množinovým rozdílem výchozí hodnoty a masky. Výchozí hodnota je 666 pro soubory a 777 pro adresáře. maska 000 022 027 077 066
predn_04.odt
soubor 666 644 640 600 600
adresář 777 755 750 700 711
poznámka odpovídá výchozí hodnotě Nebezpečné! obvyklé nastavení vyšší bezpečnost největší restrikce kompromisní řešení
28.03.2007 15:47:03
22
Operační systém UNIX
Příklad: $ umask 022 $ mkdir a1 $ touch s1 $ umask 026 $ mkdir a2 $ touch s2 $ ls -ld [as][12] drwxr-xr-x 2 honza drwxr-x--x 2 honza -rw-r--r-1 honza -rw-r----1 honza $
predn_04.odt
Přednáška 4. - Identita uživatele
sysadmin sysadmin sysadmin sysadmin
512 512 0 0
Oct Oct Oct Oct
28.03.2007 15:47:03
21 21 21 21
18:27 18:27 18:27 18:28
a1 a2 s1 s2
23
Operační systém UNIX
Přednáška 4. - Identita uživatele
Změna vlastnictví souboru Právo měnit má pouze root (dříve i vlastník, to je ale bezpečnostní problém). Vlastnictví (i skupinové) lze měnit příkazem chown, skupinové příkazem chgrp. Volání: chown [-R] nový_vlastník[:nová_skupina] seznam_souborů chgrp [-R] nová_skupina seznam_souborů kde -R znamená rekurzivní změnu do podadresářů Příklad: root@solaris/home/honza/dir>ls -la total 4 drwx-----2 root other drwxr-xr-x 6 honza staff -rw-r--r-1 root other root@solaris/home/honza/dir>chown -R total 4 drwx-----2 honza staff drwxr-xr-x 6 honza staff -rw-r--r-1 honza staff predn_04.odt
512 Oct 21 19:27 512 Oct 21 18:28 0 Oct 21 19:27 honza:staff .;ls
. .. s -la
512 Oct 21 19:27 . 512 Oct 21 18:28 .. 0 Oct 21 19:27 s
28.03.2007 15:47:03
24
Operační systém UNIX
Přednáška 4. - Identita uživatele
Speciální přístupová práva právo s(uid) 4000 s(gid) 2000 l(ock) s(t)icky s(T)icky
predn_04.odt
nastave význam u souboru ní 4000 program má po spuštění euid vlastníka programu u+s 2000 program má po spuštění egid vlastníka programu g+s (je-li x pro skup.) soubor se povinně zamyká (není-li x pro skupinu) 1000 o+t není-li nastaven x pro ostatní, souboru není měněn čas přístupu (swap)
význam u adresáře nové soubory v adresáři dědí gid z adresáře, nikoliv z gid procesu. Toto právo nelze nastavit absolutním způsobem! soubory v adresáři s právy rwxrwxrwt smí zakládat každý, ale rušit smí pouze vlastník nebo root nebo uživatel s právem zápisu do souboru
28.03.2007 15:47:03
25
Operační systém UNIX
Přednáška 4. - Identita uživatele
Příklad: root@solaris/home/honza>chmod 7000 t1 d1; ls -ld [td]1 d--S-----T 2 honza staff 512 Oct 14 22:32 ---S--l--T 1 honza staff 21 Mar 4 2001 root@solaris/home/honza>chmod 7777 t1 d1; ls -ld [td]1 drwsrwxrwt 2 honza staff 512 Oct 14 22:32 -rwsrwsrwt 1 honza staff 21 Mar 4 2001 root@solaris/home/honza>chmod g+s d1;ls -ld [td]1 drwsrwsrwt 2 honza staff 512 Oct 14 22:32 -rwsrwsrwt 1 honza staff 21 Mar 4 2001 root@solaris/home/honza>
predn_04.odt
28.03.2007 15:47:03
d1 t1 d1 t1 d1 t1
26
Operační systém UNIX
Přednáška 4. - Identita uživatele
Seznamy pro řízení přístupu (Access Control List, ACL) Rozšíření přístupových práv po vzoru MS Vyžadováno při zvýšené bezpečnosti Nestandardní a proto nekompatibilní mezi implementacemi. Není vždy implementováno Příklad pro Solaris: $setfacl -s u::7,g::5,o:1,m:4,g:sysadmin:6,u:honza:7 t1 $ls -l t1 -rwsr-l--t+ 1 root staff 21 Mar 4 2001 t1 $getfacl t1 # file: t1 # owner: root # group: staff user::rwx user:honza:rwx #effective:r-group::r-x #effective:r-group:sysadmin:rw#effective:r-mask:r-other:--x predn_04.odt
28.03.2007 15:47:03
27