Operační systém UNIX
Identita uživatele
Identita uživatele (procesu) Vnější identita, identita uživatele
Je tvořena přihlašovacím jménem a heslem Slouží k: přihlášení do systému pojmenování domovského adresáře jako jméno pro mail ...
Vnitřní identita, identita procesu Tvoří ji identifikační a efektivní identifikační číslo uživatele a skupiny (uid, gid, euid, egid). Jsou to celá čísla 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á právě jedno: uid a euid (obvykle jsou stejná) primární gid a egid (opět obvykle stejná) Proces může mít přidělena další tzv. sekundární gid predn_04.doc
18.11.01 23:24
1
Operační systém UNIX
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.doc
18.11.01 23:24
2
Operační systém UNIX
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.doc
18.11.01 23:24
3
Operační systém UNIX
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.doc
Oct 21 11:52
18.11.01 23:24
(localhost)
4
Operační systém UNIX
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.doc
18.11.01 23:24
5
Operační systém UNIX
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.doc
18.11.01 23:24
6
Operační systém UNIX
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.doc
18.11.01 23:24
7
Operační systém UNIX
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.doc
18.11.01 23:24
8
Operační systém UNIX
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.doc
18.11.01 23:24
9
Operační systém UNIX
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
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.doc
18.11.01 23:24
10
Operační systém UNIX
Identita uživatele
Výpis a změna vnitřní identity
Aktuální uid a gid lze zobrazit příkazem id resp. id -a
Pokud jsou efektivní uid resp. gid různá od uid resp. gid, zobrazí se také (id -a).
Identitu kernel nastavuje při startu procesu nebo mění na žádost procesu. Obvykle jsou uid a euid resp. gid a egid stejná a dědí se z rodičovského procesu. Ve zvláštních případech se nedědí, ale nastavují všechna nebo jen některá: Při přihlášení (login, dtlogin) nebo programem su se mění uid i gid, normální i efektivní 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 nefunguje pro skripty a některé programy (je závislé na implementaci).
predn_04.doc
18.11.01 23:24
11
Operační systém UNIX
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)
Příklad:
predn_04.doc
18.11.01 23:24
12
Operační systém UNIX
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.doc
18.11.01 23:24
13
Operační systém UNIX
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.doc
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)
18.11.01 23:24
14
Operační systém UNIX
Identita uživatele
Význam přístupových práv: právo
význam u souboru
význam u adresáře vypisovat obsah adresáře (ls)
r
číst obsah souboru (cat)
w
měnit obsah souboru (vi)
zakládat a rušit soubory v adresáři (rm)
x
spouštět soubor jako program
predn_04.doc
nastavovat a procházet adresář (cd)
18.11.01 23:24
15
Operační systém UNIX
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 = gid souboru -
použij příst. práva skupiny
použij příst. práva ostatní
predn_04.doc
18.11.01 23:24
16
Operační systém UNIX
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
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.doc
21 Mar
4
2001 t1
21 Mar
4
2001 t1
18.11.01 23:24
17
Operační systém UNIX
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.doc
18.11.01 23:24
18
Operační systém UNIX
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
soubor
adresář
poznámka
000
666
777
odpovídá výchozí hodnotě Nebezpečné!
022
644
755
obvyklé nastavení
027
640
750
vyšší bezpečnost
077
600
700
největší restrikce
066
600
711
kompromisní řešení
predn_04.doc
18.11.01 23:24
19
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.doc
Identita uživatele
sysadmin sysadmin sysadmin sysadmin
512 512 0 0
18.11.01 23:24
Oct Oct Oct Oct
21 21 21 21
18:27 18:27 18:27 18:28
a1 a2 s1 s2
20
Operační systém UNIX
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.doc
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
18.11.01 23:24
21
Operační systém UNIX
Identita uživatele
Speciální přístupová práva právo
nastavení
význam u souboru
význam u adresáře
s(uid) 4000
4000 u+s
program má po spuštění euid vlastníka programu
-
s(gid) 2000 l(ock)
2000 g+s
program má po spuštění nové soubory v adresáři dědí egid vlastníka programu (je- gid z adresáře, nikoliv z gid li x pro skup.) procesu. soubor se povinně zamyká Toto právo nelze nastavit absolutním způsobem. (není-li x pro skupinu)
s(t)icky 1000 o+t s(T)icky
predn_04.doc
-
není-li nastaven x pro ostatní, souboru není měněn čas přístupu (swap)
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
18.11.01 23:24
22
Operační systém UNIX
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 d1 ---S--l--T 1 honza staff 21 Mar 4 2001 t1 root@solaris/home/honza>chmod 7777 t1 d1; ls -ld [td]1 drwsrwxrwt 2 honza staff 512 Oct 14 22:32 d1 -rwsrwsrwt 1 honza staff 21 Mar 4 2001 t1 root@solaris/home/honza>chmod g+s d1;ls -ld [td]1 drwsrwsrwt 2 honza staff 512 Oct 14 22:32 d1 -rwsrwsrwt 1 honza staff 21 Mar 4 2001 t1 root@solaris/home/honza>
predn_04.doc
18.11.01 23:24
23
Operační systém UNIX
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 8: $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 group::r-x group:sysadmin:rwmask:r-other:--x predn_04.doc
#effective:r-#effective:r-#effective:r--
18.11.01 23:24
24
Operační systém UNIX
predn_04.doc
Identita uživatele
18.11.01 23:24
25