LINUX uživatelské účty (1) Trocha teorie: Jak bylo již mnohokrát řečeno, LINUX je systémem víceuživatelským. Tzn. Že k dané instanci OS se může v reálném čase připojit současně více uživatelů, a to jak lokálně na daném PC, tak i vzdáleně. Z toho důvodu musí mít OS informace o jednotlivých uživatelích, o jejich přihlašovacích údajích, o jejich právech apod. LINUX má uživatele sdruženy do skupin. Každý uživatel je členem minimálně jedné skupiny, může být však členem i více skupin. Účty skupin Informace o skupinách jsou uloženy v souboru /etc/group Tyto informace jsou uloženy v následujícím textovém formátu : jmeno_skupiny:x:gid:[clen1:clen2: clenx] jmeno_skupiny - název skupiny x - x účet je aktivní,! - skupina je zablokovaná GID - group ID jednoznačný číselný identifikátor skupiny clen1.. clenn - nepovinný seznam uživatelů, kteří jsou také členy skupiny root:x:0: //skupina root s GID 0 postfix:x:105:postdrop //skupina postfix s GID 105, jejím členem je navíc uživatel postdrop test:!:1001 //skupina test s GID 1001 - neaktivní
LINUX uživatelské účty (2) Účty uživatelů Informace o uživatelech jsou uloženy v souborech /etc/passwd a /etc/shadow. Soubor /etc/passwd v sobě uchovává kompletní seznam uživatelských účtů, a to jak reálných, tak systémových (virtuálních). Soubor /etc/shadow obsahuje zakryptované hesla k jednotlivým účtům. Tyto informace jsou uloženy v následujícím textovém formátu : /etc/passwd username:x:uid:gid:gecos:homedir:shell username - uživatelské jméno x - x účet je aktivní,! - účet je zablokován UID - user ID jednoznačný číselný identifikátor uživatele GID - group ID jednoznačný číselný identifikátor primární skupiny GECOS - popis uživatele (např. jméno a příjmení) homedir - domovský adresář shell - shell, který bude spuštěn po přihlášení uživatele. Pro znemožnění přihlášení na konzoli je možno uvést například /bin/false root:x:0:0:root:/root:/bin/bash /uživatel root s UID 0 rpc:x:71:71:system user for portmap:/:/bin/false //systémový uživatel rpc bez přístupu na shell ikopetschke:x:500:500:igor Kopetschke:/home/ikopetschke:/bin/bash //můj účet david:!:500:500:david Kmoch:/home/david:/bin/bash //účet se zablokovaným přihlášení
LINUX uživatelské účty (3) /etc/shadow username:pwd_hash:.. expiration data.. username - uživatelské jméno pwd_hash - hash hesla v MD5 exp.data - údaje o platnosti a expiraci hesla david:$1$qtbymz.s$iiqxlpsx55z$_9sju&bd0:13213:0:99999:7::: //uživatel david a jeho heslo Po přihlášení a úspěšné autentizaci je uživateli přiděleno odpovídající UID a GID jeho primární skupiny, resp. GIDy dalších skupin, jejichž je členem. Z tohoto textu je tedy patrné, že například superuživatelská práva pro root-a nejsou dána jeho jménem (root) ale jeho UID (0). Tento uživatel se klidně může jmenovat jakkoli Každý uživatel má právo změnit své heslo. Zakládat uživatelské účty a skupiny, modifikovat je, mazat či blokovat a měnit hesla jiným uživatelům může pouze superuživatel. Ten také zodpovídá za správnou politiku silných hesel.
LINUX uživatelské účty (4) Vytvoření skupiny Skupiny se vytvářejí pomocí příkazu groupadd. Systém automaticky přidělí nejbližší volné GID, pokud to přepínačem -g neurčíme jinak. groupadd [prepinace] nazev_skupiny -g GID založí skupinu s daným GID $ groupadd management // založí skupinu management s lib. GID $ groupadd -g 600 ucetni // založí skupinu ucetni s GID 600 Modifikace skupiny Skupiny se modifikují pomocí příkazu groupmod. groupmod prepinace nazev_skupiny -g XXX nastaví skupině GID na XXX -n name přejmenuje skupinu na name $ groupmod -g 700 ucetni // změní skupině ucetni GID na 700 $ groupmod -n financni ucetni // přejmenuje skupinu ucetni na financni
LINUX uživatelské účty (5) Smazání skupiny Skupiny se mažou pomocí příkazu groupdel. groupdel nazev_skupiny $ groupdel management // smaže skupinu management Při mazání skupiny je nutno si uvědomit, že smazáním skupiny nesmažete uživatelské účty ve skupině obsažené, ani soubory, které byly touto skupinou vlastněny. Tuto kontrolu je nutno provést následně ručně pomocí nástrojů shellu.
LINUX uživatelské účty (6) Vytvoření uživatele Uživatelské účty se vytvářejí pomocí příkazů useradd nebo adduser. Systém automaticky přidělí nejbližší volné UID, pokud to přepínačem -u neurčíme jinak. useradd [prepinace] username -g group přiřadí uživateli jako primární skupinu group (GID nebo jméno skupiny) -G groups zařadí uživatele do dalších skupin daných seznamem groups -d homedir domovský adresář uživatele -s shell shell pro uživatele (nebo /bin/false) -m domovský adresář bude vytvořen pokud neexistuje -M domovský adresář nebude vytvořen -u UID založí uživatele s daným UID $ useradd -g users -d /home/pepa -m -s /bin/bash pepa // založí uživatele pepa s lib. UID $ useradd -u 1002 -g ucetni -G users,firma jana // založí uživatele jana s členstvím ve skupinách ucetni,users a firma a s UID 1002 Další informace viz manuálová stránka man useradd. Zvlášť doporučuji věnovat pozornost adresáři /etc/skel a přepínači -D.
LINUX uživatelské účty (7) Modifikace uživatele Uživatelské účty se modifikují pomocí příkazů usermod. Přepínače -g, -G, -s, -d, -u mají stejný význam jako v případě příkazu useradd. usermod [prepinace] username -l new_username změní uživatelské jméno uživatele při zachování UID a dalších údajů -L zablokuje (LOCK) účet -U odblokuje (UNLOCK) účet $ usermod -l pepicek -d /home/pepicek pepa // změní uživatele pepa na pepicek a změní jeho homedir $ usermod -L jana // zablokuje uživatele jana Smazání uživatele Uživatelské účty se modifikují pomocí příkazů userdel. userdel [prepinace] username -r zároveň s účtem smaže i soubory v domovském adresáři a poštu $ userdel pepa // smaže uživatele pepa $ userdel -r jana // smaže uživatele jana včetně souborů v domovském adresáři a pošty
LINUX uživatelské účty (8) Změna hesla Hesla uživatelů se vytvářejí a moddifikují pomocí příkazu passwd. Superuživatel může nastavit a změnit heslo komukoliv, běžný uživatel může operovat pouze s heslem svým. passwd [prepinace] [username] -l uzamkne účet (pouze root) -u odemkne účet (pouze root) -d smaže účet (pouze root) -S zobrazí statut účtu $ passwd // změní nebo nastaví heslo aktuálního uživatele $ passwd jana // změní nebo nastaví heslo uživatele jana (pouze root) $ passwd -S jana // zobrazí status uživatele jana (pouze root)