Překladače Uživatelé a skupiny v Unixu © Milan Keršláger 29.05.2018 http://www.pslib.cz/ke/slajdy http://creativecommons.org/licenses/by-nc-nd/3.0/
Unixový systém víceúlohový nutné vzájemné oddělení úloh (procesů) proces nemůže zasahovat do paměti jiného nutná podpora procesoru ochrana paměti – IBM PC: i386 (32bitový, Windows NT) privilegovaný režim – dtto (nelze nebezpečné instrukce) existovaly i systémy bez podpory CPU → problém víceuživatelský nutné vzájemné oddělení uživatelů pomocí oprávnění (soubory, adresáře, procesy) nutná podpora v jádře operačního systému (+privileg. r.)
Uživatelé správce (administrátor) → root (UID=0) není jádrem OS omezován může se změnit na libovolného uživatele využíváno při přihlašování (uvítací program jako root) běžný uživatel → UID!=0 může zasahovat jen do vlastních souborů, procesů využívá se systém oprávnění NEmůže se změnit na jiného uživatele jádro OS pracuje s UID (číslo) ve výpisu se překládá na jméno (srozumitelnost)
Definice uživatelů uloženo v souboru /etc/passwd jednoduchá databáze (chyba → zbytek se nepoužívá) 1 řádek = 1 uživatel, položky odděleny znakem „:“ login:passwd:UID:GID:FullName:HomeDir:shell využívá se při překladu UID → jméno uživatele (ls -l) založení uživatele prosté přidání dalšího řádku lze i editorem nástroje (GUI, useradd, userdel) používáme kvůli zamykání (editační konflikt)
Data o uživatelích jsou uložena v textových souborech /etc/passwd definice uživatelů /etc/shadow hesla v chráněném souboru (uživatel nemůže ani číst) /etc/group seznam skupin + členství uživatelů ve skupinách /etc/gshadow hesla skupin v chráněném souboru (jako /etc/shadow)
/etc/passwd na prvním řádku je typicky root root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin ... huzva:x:500:500:René Hužva:/home/huzva:/bin/bash na prvním řádku je typicky root dále jsou tzv. systémové účty se speciálním využitím některé mají GUID=0, takže je to „malý root“ tři tečky naznačují řádky, které byly v ukázce smazány
Skrytá hesla (shadow passwords) heslo zakódováno jednosměrnou funkcí původně crypt(), později md5, sha1, sha2 přidávána sůl (1 heslo = více zakódovaných tvarů) i tak lze použít útok hrubou silou bereme všechny kombinace hesel (využití slovníku) zakódujeme a porovnáme s uloženým tvarem dnes tzv. „rainbow table“ → otázka vteřin (md5, sha1) ukrytí hesel do souboru /etc/shadow může číst jen root, běžný uživatel ne nevadí, protože před přihlášením oprávnění root
/etc/shadow opět jednoduchá databáze login:passwd:další:údaje:... další údaje upřesňují vlastnosti hesla poslední změna hesla, platnost hesla, účtu, povinná změna, zákaz změny hesla uživatelem, ... soubor může číst jen uživatel root zašifrovaná hesla chráněna před zcizením nelze použít útok hrubou silou změna hesla uživatelem → SUID (speciální oprávnění) root:6$630fCdtG$:14632:0:99999:7::: huzva:465sWTI1pX/:14251:0:99999:7:::
Skupiny každý uživatel je členem alespoň 1 skupiny další skupiny v /etc/group primární skupina explicitně definována v /etc/passwd změna primární skupiny příkazem newgrp (nový shell) BSD systémy posuzují pouze primární skupinu SYSV systémy posuzují všechny skupiny najednou dnes typické chování (v Linuxu volitelná vlastnost jádra)
/etc/group seznam skupin opět jednoduchá databáze názevsk:passwd:GID:login1,login2 BSD systémy všichni uživatelé ve skupině users SYSV systémy každý uživatel má vlastní stejnojmennou skupinu větší důraz na implicitní soukromí dá se nastavit (při vytváření uživatele) /etc/default/useradd
/etc/gshadow stejná ochrana hesel, jako /etc/shadow názevsk:heslo:administrators:membe rs typicky se hesla nepoužívají členství ve skupinách pevně dáno nastaví se při přihlášení uživatele je-li však heslo nastaveno, může uživatel do skupiny vstoupit až po přihlášení příkaz newgrp
Správa uživatelů a skupin různé nástroje pro GUI a příkazový řádek GUI se liší dle distribuce, řádkové stejné (standard) useradd, userdel, usermod groupadd, groupdel, groupmon passwd pro změnu hesla (uživatel vlastní, root všechny) id výpis aktuálních informací (UID, GID, skupiny) uid=500(huzva) gid=500(huzva) groups=500(huzva),501(www)
Nástroj sudo kontrolovaná elevace (zvýšení) oprávnění lze spustit příkaz jako jiný uživatel (i jako root) /etc/sudoers → konfigurace použití: sudo příkaz využívá distribuce Ubuntu (vkládá se heslo uživatele) příkaz su změna na jiného uživatele nutno znát jeho heslo (root nemusí)
Jmenné služby externí databáze uživatelů nahrazuje nebo doplňuje lokální databázi (viz dříve) specializovaná databáze, replikace, distribuovanost uživatelé, skupiny, hesla, členství ve skupinách, jména tiskáren, počítačů, ... optimalizace pro čtení a prohledávání aktualizace (změny) jen občasné LDAP (Lightweight Directory Access Protocol) NIS (Network Information Service) MS Active Directory, X.500, ale též DNS
LDAP původně protokol k X.500 model klient – server, používá TCP/IP jednotný globální prostor autentizace uživatelů, ACL podpora decentralizace podpora různých atributů na TUL jméno + heslo, ale též heslo pro WiFi apod. OpenLDAP, Fedora Directory Server open source implementace LDAP MS Active directory privátní implementací LDAP
Atributy LDAP dle X.520 C – country (CZ) SP – state or province (Liberecký kraj) L – locality (Liberec) O – organization (Technická univerzita) OU – organization unit (Fakulta mechatroniky) CN – common name (René Hužva) CN=René Hužva, OU=Fakulta mechatroniky, O=Technická univerzita, L=Liberec, SP=Liberecký kraj, C=CZ
NIS původně Yellow Pages (YP) kolidovalo s ochrannou značkou v UK firma Sun Microsystem licencováno pro unixové systémy dnes spíše LDAP (blíže k tomu, co má MS Windows) uživatelé, hesla, názvy počítačů, e-mailové aliasy, skupiny a členství ve skupinách, ... novější verze: NIS+