Přidání uživatele je jedním z nejzákladnějších cvičení na jakémkoli počítačovém systému; tento článek se zaměřuje na to, jak to udělat v systému Linux.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Než začneme, chci zmínit tři základní věci, které je třeba mít na paměti. Za prvé, jako u většiny operačních systémů, uživatelé Linuxu potřebují účet, aby se mohli přihlásit. Tento článek se konkrétně zabývá místními účty, nikoli síťovými účty, jako je LDAP. Za druhé, účty mají jak jméno (tzv. uživatelské jméno), tak číslo (tzv. ID uživatele). Za třetí, uživatelé jsou obvykle umístěni do skupiny. Skupiny mají také název a ID skupiny.
Jak byste očekávali, Linux obsahuje nástroj příkazového řádku pro přidávání uživatelů; nazývá se to useradd . Můžete také najít příkaz adduser . Mnoho distribucí přidalo tento symbolický odkaz do useradd příkaz z důvodu pohodlí.
$ file `which adduser`
/usr/sbin/adduser: symbolic link to useradd
Pojďme se podívat na useradd .
Poznámka:Výchozí hodnoty popsané v tomto článku odrážejí výchozí hodnoty v Red Hat Enterprise Linux 8.0. V těchto souborech a určitých výchozích nastaveních můžete najít jemné rozdíly v jiných distribucích Linuxu nebo jiných unixových operačních systémech, jako je FreeBSD nebo Solaris.
Výchozí chování
Základní použití useradd je docela jednoduché:Uživatele lze přidat pouze zadáním jeho uživatelského jména.
$ sudo useradd sonny
V tomto příkladu useradd příkaz vytvoří účet s názvem sonny . Vytvoří se také skupina se stejným názvem a sonny je umístěna v ní, aby byla použita jako primární skupina. Existují další parametry, jako je jazyk a prostředí, které se použijí podle výchozích hodnot a hodnot nastavených v konfiguračních souborech /etc/default/useradd a /etc/login.defs . To je obecně dostačující pro jeden osobní systém nebo malé obchodní prostředí s jedním serverem.
Zatímco dva výše uvedené soubory řídí chování useradd , informace o uživateli jsou uloženy v jiných souborech nalezených v /etc adresář, na který budu odkazovat v tomto článku.
Soubor | Popis | Pole (tučné – nastaveno uživatelem useradd) |
---|---|---|
passwd | Ukládá podrobnosti o uživatelském účtu | uživatelské jméno :unused:uid :gid :komentář :homedir :shell |
stín | Ukládá podrobnosti zabezpečení uživatelského účtu | uživatelské jméno :password:lastchange:minimum:maximum:warn:neaktivní :vyprší :nepoužité |
skupina | Ukládá podrobnosti skupiny | název skupiny :unused:gid :členové |
Přizpůsobitelné chování
Příkazový řádek umožňuje přizpůsobení v situacích, kdy administrátor potřebuje jemnější kontrolu, například zadat ID uživatele.
ID uživatelů a skupin
Ve výchozím nastavení useradd se pokouší použít stejné číslo pro ID uživatele (UID) a ID primární skupiny (GID), ale neexistují žádné záruky. Ačkoli není nutné, aby se UID a GID shodovaly, pro administrátory je snazší je spravovat.
Musím vysvětlit jen scénář. Předpokládejme, že přidám další účet, tentokrát pro Timmyho. Porovnání dvou uživatelů, sonny a timmy , ukazuje, že jak uživatelé, tak jejich příslušné primární skupiny byly vytvořeny pomocí getent příkaz.
$ getent passwd sonny timmy
sonny:x:1001:1002:Sonny:/home/sonny:/bin/bash
timmy:x:1002:1003::/home/timmy:/bin/bash
$ getent group sonny timmy
sonny:x:1002:
timmy:x:1003:
Bohužel se neshoduje ani UID uživatele, ani primární GID. Je to proto, že výchozí chování je přiřadit uživateli další dostupné UID a poté se pokusit přiřadit stejné číslo primární skupině. Pokud je však toto číslo již použito, bude skupině přiřazeno další dostupné GID. Abych vysvětlil, co se stalo, předpokládám, že skupina s GID 1001 již existuje a zadejte příkaz pro potvrzení.
$ getent group 1001
book:x:1001:alan
Skupinová kniha s ID 1001 způsobilo, že GID jsou o jedno vypnuté. Toto je příklad, kdy by správce systému musel převzít větší kontrolu nad procesem vytváření uživatelů. Chcete-li tento problém vyřešit, musím nejprve určit dalšího dostupného ID uživatele a skupiny, které se bude shodovat. Příkazy getent group a gettent passwd pomůže při určení dalšího dostupného čísla. Toto číslo lze předat pomocí -u argument.
$ sudo useradd -u 1004 bobby
$ getent passwd bobby; getent group bobby
bobby:x:1004:1004::/home/bobby:/bin/bash
bobby:x:1004:
Dalším dobrým důvodem pro zadání ID je pro uživatele, kteří budou přistupovat k souborům na vzdáleném systému pomocí systému souborů NFS (Network File System). NFS se snáze spravuje, když všechny klientské a serverové systémy mají pro daného uživatele nakonfigurované stejné ID. Trochu podrobněji se tomu věnuji ve svém článku o použití autofs k připojení sdílených složek NFS.
Více přizpůsobení
Velmi často však musí být pro uživatele specifikovány další parametry účtu. Zde jsou krátké příklady nejběžnějších přizpůsobení, která možná budete muset použít.
Komentář
Možnost komentáře je pole s prostým textem pro poskytnutí krátkého popisu nebo jiných informací pomocí -c argument.
$ sudo useradd -c "Bailey is cool" bailey
$ getent passwd bailey
bailey:x:1011:1011:Bailey is cool:/home/bailey:/bin/bash
Skupiny
Uživateli lze přiřadit jednu primární skupinu a více sekundárních skupin. -g argument určuje název nebo GID primární skupiny. Pokud není zadán, useradd vytvoří primární skupinu se stejným jménem uživatele (jak je ukázáno výše). -G argument (velká písmena) se používá k předání seznamu skupin oddělených čárkami, do kterých bude uživatel zařazen; tyto jsou známé jako sekundární skupiny.
$ sudo useradd -G tgroup,fgroup,libvirt milly
$ id milly
uid=1012(milly) gid=1012(milly) groups=1012(milly),981(libvirt),4000(fgroup),3000(tgroup)
Domovský adresář
Výchozí chování useradd je vytvořit domovský adresář uživatele v /home . Různé aspekty domovského adresáře však lze přepsat pomocí následujících argumentů. -b nastaví další adresář, kam lze umístit domovy uživatelů. Například /home2 namísto výchozího /home .
$ sudo useradd -b /home2 vicky
$ getent passwd vicky
vicky:x:1013:1013::/home2/vicky:/bin/bash
-d umožňuje zadat domovský adresář s jiným názvem než má uživatel.
$ sudo useradd -d /home/ben jerry
$ getent passwd jerry
jerry:x:1014:1014::/home/ben:/bin/bash
Adresář kostry
-k dá pokyn, aby byl nový domovský adresář nového uživatele naplněn libovolnými soubory v /etc/skel adresář. Obvykle se jedná o konfigurační soubory shellu, ale může to být cokoliv, co by chtěl správce systému zpřístupnit všem novým uživatelům.
Shell
-s argument lze použít k určení shellu. Pokud není zadáno nic jiného, použije se výchozí. Například v následujícím shellu bash je definováno ve výchozím konfiguračním souboru, ale Wally si vyžádal zsh .
$ grep SHELL /etc/default/useradd
SHELL=/bin/bash
$ sudo useradd -s /usr/bin/zsh wally
$ getent passwd wally
wally:x:1004:1004::/home/wally:/usr/bin/zsh
Zabezpečení
Zabezpečení je nezbytnou součástí správy uživatelů, takže useradd má k dispozici několik možností příkaz. Uživatelskému účtu lze přidělit datum vypršení platnosti ve tvaru RRRR-MM-DD pomocí -e argument.
$ sudo useradd -e 20191231 sammy
$ sudo getent shadow sammy
sammy:!!:18171:0:99999:7::20191231:
Účet lze také automaticky deaktivovat, pokud vyprší platnost hesla. -f argument nastaví počet dní po vypršení platnosti hesla, než bude účet deaktivován. Nula je okamžitá.
$ sudo useradd -f 30 willy
$ sudo getent shadow willy
willy:!!:18171:0:99999:7:30::
Příklad ze skutečného světa
V praxi lze při vytváření nového uživatelského účtu použít několik těchto argumentů. Pokud například potřebuji vytvořit účet pro Perryho, mohu použít následující příkaz:
$ sudo useradd -u 1020 -c "Perry Example" \
-G tgroup -b /home2 \
-s /usr/bin/zsh \
-e 20201201 -f 5 perry
Pro pochopení jednotlivých možností viz výše uvedené části. Ověřte výsledky pomocí:
$ getent passwd perry; getent group perry; getent shadow perry; id perry
perry:x:1020:1020:Perry Example:/home2/perry:/usr/bin/zsh
perry:x:1020:
perry:!!:18171:0:99999:7:5:20201201:
uid=1020(perry) gid=1020(perry) groups=1020(perry),3000(tgroup)
Několik rad na závěr
useradd Tento příkaz je pro každého administrátora Unixu (nejen Linuxu) nutností. Je důležité porozumět všem jeho možnostem, protože vytvoření uživatele je něco, co chcete udělat hned napoprvé. To znamená mít dobře promyšlenou konvenci pojmenování, která zahrnuje vyhrazený rozsah UID/GID vyhrazený pro vaše uživatele v celém podniku, nejen na jediném systému – zvláště když pracujete v rostoucí organizaci.