Vyhledávání na webu

Správa uživatelů a skupin, oprávnění a atributy souborů a povolení přístupu sudo na účtech – část 8


Loni v srpnu zahájila Linux Foundation certifikaci LFCS (Linux Foundation Certified Sysadmin), zcela nový program, jehož účelem je umožnit jednotlivcům kdekoli a kdekoli složit zkoušku, aby získejte certifikaci v oblasti základní až střední provozní podpory pro systémy Linux, která zahrnuje podporu běžících systémů a služeb spolu s celkovým monitorováním a analýzou a inteligentním rozhodováním, abyste byli schopni rozhodnout, kdy je nutné eskalovat problémy týmům podpory na vyšší úrovni.

Podívejte se prosím rychle na následující video, které popisuje úvod do certifikačního programu Linux Foundation.

Tento článek je částí 8 dlouhé série 10 výukových programů, zde v této části vás provedeme tím, jak spravovat oprávnění uživatelů a skupin v systému Linux, která jsou vyžadována pro certifikační zkoušku LFCS.

Protože Linux je operační systém pro více uživatelů (v tom, že umožňuje více uživatelům na různých počítačích nebo terminálech přístup k jednomu systému), budete potřebovat vědět, jak provádět efektivní správu uživatelů: jak přidávat, upravovat, pozastavovat nebo odstraňovat uživatelských účtů spolu s udělením nezbytných oprávnění k provádění přidělených úkolů.

Přidávání uživatelských účtů

Chcete-li přidat nový uživatelský účet, můžete jako uživatel root spustit některý z následujících dvou příkazů.

adduser [new_account]
useradd [new_account]

Když je do systému přidán nový uživatelský účet, provedou se následující operace.

1. Vytvoří se jeho domovský adresář (ve výchozím nastavení /home/username).

2. Následující skryté soubory se zkopírují do domovského adresáře uživatele a budou použity k poskytnutí proměnných prostředí pro jeho uživatelskou relaci.

.bash_logout
.bash_profile
.bashrc

3. Pro uživatele se vytvoří poštovní spool na /var/spool/mail/uživatelské jméno.

4. Vytvoří se skupina a bude mít stejný název jako nový uživatelský účet.

Pochopení /etc/passwd

Úplné informace o účtu jsou uloženy v souboru /etc/passwd. Tento soubor obsahuje záznam na systémový uživatelský účet a má následující formát (pole jsou oddělena dvojtečkou).

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
  1. Pole [username] a [Comment] jsou samozřejmá.
  2. x ve druhém poli označuje, že účet je chráněn stínovaným heslem (v /etc/shadow), které je potřeba k přihlášení jako [uživatelské jméno] .
  3. Pole [UID] a [GID] jsou celá čísla, která představují identifikaci uživatele a primární identifikaci skupiny, do které [username] patří, v daném pořadí .
  4. [Domovský adresář] označuje absolutní cestu k domovskému adresáři [uživatelské jméno] a
  5. [Výchozí shell] je shell, který bude tomuto uživateli zpřístupněn, když se přihlásí do systému.
Pochopení /etc/group

Informace o skupině jsou uloženy v souboru /etc/group. Každý záznam má následující formát.

[Group name]:[Group password]:[GID]:[Group members]
  1. [Název skupiny] je název skupiny.
  2. x v [Heslo skupiny] znamená, že se nepoužívají hesla skupiny.
  3. [GID]: stejné jako v /etc/passwd.
  4. [Členové skupiny]: čárkami oddělený seznam uživatelů, kteří jsou členy [Název skupiny].

Po přidání účtu můžete upravit následující informace (abychom jmenovali několik polí) pomocí příkazu usermod, jehož základní syntaxe usermod je následující.

usermod [options] [username]
Nastavení data vypršení platnosti účtu

Použijte příznak –expiredate následovaný datem ve formátu RRRR-MM-DD.

usermod --expiredate 2014-10-30 tecmint
Přidání uživatele do doplňkových skupin

Použijte kombinované možnosti -aG nebo –připojit –skupiny následované seznamem skupin oddělených čárkami.

usermod --append --groups root,users tecmint
Změna výchozího umístění domovského adresáře uživatele

Použijte možnosti -d nebo –home následované absolutní cestou k novému domovskému adresáři.

usermod --home /tmp tecmint
Změna shellu, který uživatel použije ve výchozím nastavení

Použijte –shell a poté cestu k novému shellu.

usermod --shell /bin/sh tecmint
Zobrazení skupin, kterých je uživatel členem
groups tecmint
id tecmint

Nyní provedeme všechny výše uvedené příkazy najednou.

usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint

Ve výše uvedeném příkladu nastavíme datum vypršení platnosti uživatelského účtu tecmint na 30. října 2014. Účet také přidáme do root a skupiny uživatelů. Nakonec nastavíme sh jako jeho výchozí shell a změníme umístění domovského adresáře na /tmp:

Přečtěte si také:

  1. 15 useradd Příklady příkazů v Linuxu
  2. 15 usermod Příklady příkazů v Linuxu

U stávajících účtů můžeme také provést následující.

Deaktivace účtu uzamčením hesla

K uzamčení hesla uživatele použijte -L (velké L) nebo –lock.

usermod --lock tecmint
Odblokování uživatelského hesla

Pomocí možnosti –u nebo –unlock odemkněte heslo uživatele, které bylo dříve zablokováno.

usermod --unlock tecmint

Vytvoření nové skupiny pro přístup ke čtení a zápisu k souborům, ke kterým musí přistupovat několik uživatelů

Spusťte následující sérii příkazů k dosažení cíle.

groupadd common_group # Add a new group
chown :common_group common.txt # Change the group owner of common.txt to common_group
usermod -aG common_group user1 # Add user1 to common_group
usermod -aG common_group user2 # Add user2 to common_group
usermod -aG common_group user3 # Add user3 to common_group
Mazání skupiny

Skupinu můžete odstranit pomocí následujícího příkazu.

groupdel [group_name]

Pokud existují soubory vlastněné group_name, nebudou smazány, ale vlastník skupiny bude nastaven na GID skupiny, která byla smazána.

Oprávnění souborů Linux

Kromě základních oprávnění pro čtení, zápis a spouštění, o kterých jsme hovořili v části Archivační nástroje a nastavení atributů souborů – část 3 této série, existují další méně používaná (ale ne méně důležitá) nastavení oprávnění, někdy označovaná jako „speciální oprávnění “.

Stejně jako výše zmíněná základní oprávnění se nastavují pomocí osmičkového souboru nebo pomocí písmene (symbolický zápis), které označuje typ oprávnění.

Mazání uživatelských účtů

Účet (spolu s jeho domovským adresářem, pokud je vlastněn uživatelem, a všechny soubory v něm uložené a také poštovní spool) můžete smazat pomocí příkazu userdel s –remove možnost.

userdel --remove [username]

Správa skupiny

Pokaždé, když je do systému přidán nový uživatelský účet, je vytvořena skupina se stejným názvem, jejíž jediným členem je uživatelské jméno. Další uživatelé mohou být do skupiny přidáni později. Jedním z účelů skupin je implementovat jednoduché řízení přístupu k souborům a dalším systémovým prostředkům nastavením správných oprávnění k těmto prostředkům.

Předpokládejme například, že máte následující uživatele.

  1. uživatel1 (primární skupina: uživatel1)
  2. uživatel2 (primární skupina: uživatel2)
  3. uživatel3 (primární skupina: uživatel3)

Všechny potřebují přístup pro čtení a zápis do souboru s názvem common.txt, který se nachází někde ve vašem místním systému nebo možná na sdílené síťové složce, která uživatel1 vytvořil. Můžete být v pokušení udělat něco jako,

chmod 660 common.txt
OR
chmod u=rw,g=rw,o= common.txt [notice the space between the last equal sign and the file name]

To však poskytne přístup pro čtení a zápis pouze vlastníkovi souboru a uživatelům, kteří jsou členy skupiny vlastníka souboru (uživatel1 v tomto případě). Opět můžete být v pokušení přidat user2 a user3 do skupiny user1, ale zároveň jim to poskytne přístup ke zbytku vlastněných souborů podle uživatele user1 a skupiny user1.

Zde se skupiny hodí a zde je to, co byste měli udělat v případě, jako je tento.

Pochopení Setuid

Když je na spustitelný soubor použito oprávnění setuid, uživatel spouštějící program zdědí platná oprávnění vlastníka programu. Vzhledem k tomu, že tento přístup může přiměřeně vyvolat obavy o bezpečnost, musí být počet souborů s oprávněním setuid omezen na minimum. Programy s tímto nastaveným oprávněním pravděpodobně najdete, když uživatel systému potřebuje získat přístup k souboru vlastněnému rootem.

Stručně řečeno, nejde jen o to, že uživatel může spustit binární soubor, ale také o to, že tak může učinit s právy roota. Podívejme se například na oprávnění /bin/passwd. Tento binární soubor se používá ke změně hesla účtu a upravuje soubor /etc/shadow. Superuživatel může komukoli změnit heslo, ale všichni ostatní uživatelé by měli mít možnost změnit pouze své vlastní.

Každý uživatel by tedy měl mít oprávnění ke spuštění /bin/passwd, ale pouze root bude moci zadat účet. Ostatní uživatelé mohou změnit pouze svá odpovídající hesla.

Pochopení Setgid

Když je nastaven bit setgid, efektivní GID skutečného uživatele se stane vlastníkem skupiny. Každý uživatel tak může přistupovat k souboru s oprávněními udělenými vlastníkovi skupiny takového souboru. Navíc, když je v adresáři nastaven bit setgid, nově vytvořené soubory zdědí stejnou skupinu jako adresář a nově vytvořené podadresáře také zdědí bit setgid nadřazeného adresáře. Tento přístup s největší pravděpodobností použijete vždy, když členové určité skupiny potřebují přístup ke všem souborům v adresáři, bez ohledu na primární skupinu vlastníka souboru.

chmod g+s [filename]

Chcete-li nastavit setgid v osmičkovém tvaru, přidejte před aktuální (nebo požadovaná) základní oprávnění číslo 2.

chmod 2755 [directory]
Nastavení SETGID v adresáři

Pochopení Sticky Bit

Když je u souborů nastaven „sticky bit “, Linux to prostě ignoruje, zatímco u adresářů to má za následek zabránění uživatelům smazat nebo dokonce přejmenovat soubory, které obsahuje, pokud uživatel adresář nevlastní, soubor nebo je root.

chmod o+t [directory]

Chcete-li nastavit sticky bit v osmičkovém tvaru, přidejte před aktuální (nebo požadovaná) základní oprávnění číslo 1.

chmod 1755 [directory]

Bez lepivého bitu může každý, kdo může zapisovat do adresáře, mazat nebo přejmenovávat soubory. Z toho důvodu se lepivý bit běžně vyskytuje v adresářích, jako je /tmp, do kterých lze zapisovat po celém světě.

Speciální atributy souborů Linux

Existují další atributy, které umožňují další omezení operací povolených se soubory. Zabraňte například přejmenování, přesunutí, odstranění nebo dokonce úpravě souboru. Nastavují se příkazem chattr a lze je zobrazit pomocí nástroje lsattr následovně.

chattr +i file1
chattr +a file2

Po provedení těchto dvou příkazů bude file1 neměnný (což znamená, že jej nelze přesunout, přejmenovat, upravit ani smazat), zatímco file2 přejde do režimu pouze připojení (lze pouze otevřít v režimu připojení pro zápis).

Přístup ke kořenovému účtu a použití sudo

Jedním ze způsobů, jak mohou uživatelé získat přístup k účtu root, je psaní.

su

a poté zadejte heslo uživatele root.

Pokud autentizace proběhne úspěšně, budete přihlášeni jako root s aktuálním pracovním adresářem, který je stejný jako předtím. Pokud chcete být místo toho umístěni do domovského adresáře root, spusťte.

su -

a poté zadejte heslo uživatele root.

Výše uvedený postup vyžaduje, aby běžný uživatel znal heslo uživatele root, což představuje vážné bezpečnostní riziko. Z tohoto důvodu může sysadmin nakonfigurovat příkaz sudo tak, aby umožnil běžnému uživateli spouštět příkazy jako jiný uživatel (obvykle superuživatel) velmi kontrolovaným a omezeným způsobem. Uživateli lze tedy nastavit omezení, která mu umožní spouštět jeden nebo více specifických privilegovaných příkazů a žádné jiné.

Přečtěte si také: Rozdíl mezi uživatelem su a sudo

K ověření pomocí sudo používá uživatel své vlastní heslo. Po zadání příkazu budeme vyzváni k zadání našeho hesla (nikoli hesla superuživatele) a pokud autentizace proběhne úspěšně (a pokud má uživatel oprávnění ke spuštění příkazu), provede se zadaný příkaz.

Pro udělení přístupu k sudo musí administrátor systému upravit soubor /etc/sudoers. Doporučujeme tento soubor upravit pomocí příkazu visudo namísto přímého otevírání v textovém editoru.

visudo

Tím se otevře soubor /etc/sudoers pomocí vim (můžete se řídit pokyny uvedenými v části Instalace a použití vim jako editoru – část 2 této série a soubor upravte).

Toto jsou nejrelevantnější řádky.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin"
root        ALL=(ALL) ALL
tecmint     ALL=/bin/yum update
gacanepa    ALL=NOPASSWD:/bin/updatedb
%admin      ALL=(ALL) ALL

Pojďme se na ně podívat blíže.

Defaults    secure_path="/usr/sbin:/usr/bin:/sbin:/usr/local/bin"

Tento řádek vám umožňuje zadat adresáře, které budou použity pro sudo, a používá se k zabránění používání adresářů specifických pro uživatele, které může poškodit systém.

Další řádky slouží k zadání oprávnění.

root        ALL=(ALL) ALL
  1. První klíčové slovo ALL označuje, že toto pravidlo platí pro všechny hostitele.
  2. Druhý ALL označuje, že uživatel v prvním sloupci může spouštět příkazy s oprávněními libovolného uživatele.
  3. Třetí ALL znamená, že lze spustit jakýkoli příkaz.
tecmint     ALL=/bin/yum update

Pokud za znakem = není zadán žádný uživatel, sudo předpokládá uživatele root. V tomto případě bude uživatel tecmint moci spustit yum update jako root.

gacanepa    ALL=NOPASSWD:/bin/updatedb

Direktiva NOPASSWD umožňuje uživateli gacanepa spouštět /bin/updatedb bez nutnosti zadávat své heslo.

%admin      ALL=(ALL) ALL

Znak % označuje, že tento řádek platí pro skupinu s názvem „admin“. Význam zbytku řádku je stejný jako u běžného uživatele. To znamená, že členové skupiny „admin “ mohou spouštět všechny příkazy jako kterýkoli uživatel na všech hostitelích.

Chcete-li vidět, jaká oprávnění vám sudo uděluje, použijte volbu „-l “ pro jejich výpis.

PAM (Pluggable Authentication Modules)

Pluggable Authentication Modules (PAM) nabízí flexibilitu nastavení konkrétního schématu ověřování na základě jednotlivých aplikací a/nebo služeb pomocí modulů. Tento nástroj přítomný na všech moderních linuxových distribucích překonal problém, s nímž se často potýkali vývojáři v počátcích Linuxu, kdy každý program, který vyžadoval ověření, musel být speciálně zkompilován, aby věděl, jak získat potřebné informace.

Například u PAM nezáleží na tom, zda je vaše heslo uloženo v /etc/shadow nebo na samostatném serveru ve vaší síti.

Když například přihlašovací program potřebuje ověřit uživatele, PAM dynamicky poskytne knihovnu, která obsahuje funkce pro správné schéma autentizace. Změna schématu ověřování pro přihlašovací aplikaci (nebo jakýkoli jiný program používající PAM) je tedy snadná, protože zahrnuje pouze úpravu konfiguračního souboru (s největší pravděpodobností souboru pojmenovaného po aplikaci, který se nachází v /etc/pam.d a méně pravděpodobně v /etc/pam.conf).

Soubory v /etc/pam.d udávají, které aplikace nativně používají PAM. Kromě toho můžeme zjistit, zda určitá aplikace používá PAM tím, že zkontrolujeme, zda s ní byla propojena knihovna PAM (libpam):


ldd $(which login) | grep libpam # login uses PAM
ldd $(which top) | grep libpam # top does not use PAM

Na obrázku výše vidíme, že libpam byl propojen s přihlašovací aplikací. To dává smysl, protože tato aplikace je zapojena do provozu systémového ověřování uživatelů, zatímco top nikoli.

Podívejme se na konfigurační soubor PAM pro passwd – ano, dobře známý nástroj pro změnu uživatelských hesel. Nachází se na adrese /etc/pam.d/passwd:


cat /etc/passwd

První sloupec udává typ autentizace, která se má použít s cestou k modulu (třetí sloupec). Když se před typem objeví pomlčka, PAM nezaznamená do systémového protokolu, pokud modul nelze načíst, protože jej nelze v systému nalézt.

K dispozici jsou následující typy ověřování:

  1. účet: tento typ modulu kontroluje, zda uživatel nebo služba poskytly platné přihlašovací údaje k ověření.
  2. auth: tento typ modulu ověřuje, že uživatel je tím, za koho se vydává, a uděluje potřebná oprávnění.
  3. heslo: tento typ modulu umožňuje uživateli nebo službě aktualizovat své heslo.
  4. session: tento typ modulu označuje, co by mělo být provedeno před a/nebo po úspěšném ověření.

Druhý sloupec (nazvaný control) udává, co by se mělo stát, pokud se ověření pomocí tohoto modulu nezdaří:

  1. požadavek: pokud selže autentizace přes tento modul, celková autentizace bude okamžitě zamítnuta.
  2. požadováno je podobné jako nezbytné, ačkoli všechny ostatní uvedené moduly pro tuto službu budou volány před odmítnutím ověření.
  3. dostatečný: pokud selže autentizace přes tento modul, PAM stále udělí autentizaci, i když selhal předchozí označený jako povinný.
  4. nepovinné: pokud autentizace přes tento modul selže nebo uspěje, nic se nestane, pokud to není jediný modul svého typu definovaný pro tuto službu.
  5. include znamená, že řádky daného typu by měly být načteny z jiného souboru.
  6. dílčí zásobník je podobný jako zahrnuje, ale selhání nebo úspěch autentizace nezpůsobí ukončení celého modulu, ale pouze dílčího zásobníku.

Čtvrtý sloupec, pokud existuje, zobrazuje argumenty, které mají být modulu předány.

Na prvních třech řádcích v /etc/pam.d/passwd (zobrazeno výše) načtěte modul system-auth a zkontrolujte, zda uživatel zadal platné přihlašovací údaje (účet) . Pokud ano, umožní mu změnit autentizační token (heslo) udělením oprávnění k použití passwd (auth).

Pokud například přidáte


remember=2

na následující řádek


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok

v /etc/pam.d/system-auth:


password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=2

poslední dvě hashovaná hesla každého uživatele jsou uložena v /etc/security/opasswd, takže je nelze znovu použít:

souhrn

Efektivní dovednosti pro správu uživatelů a souborů jsou základními nástroji pro každého správce systému. V tomto článku jsme pokryli základy a doufáme, že jej můžete použít jako dobrý výchozí bod, na kterém můžete stavět. Neváhejte zanechat své komentáře nebo dotazy níže a my vám rychle odpovíme.