Správa uživatelů, uživatelských oprávnění & přístupů na Ubuntu Server

Postupy, tipy a návody pro správu (vytváření, modifikaci odstraňování účtů, nastavování jejich oprávnění a sledování aktivity) uživatelů v OS Ubuntu Server.

Základní typy účtů a jejich účel na Ubuntu Server OS

Správa účtů na Ubuntu Serveru je klíčová v kontextu přiřazování různých oprávnění uživatelům i službám odrážejícím se v bezpečnosti provozu systému.

Na Ubuntu Server OS, stejně jako jiných Linuxových distribucích, můžeme primárně rozlišovat dva základní typy účtů, a to:

  • Uživatelské účty

    • slouží pro přihlášení reálných osob k systému. Tyto účty jsou obvykle spojeny s konkrétními lidmi.
    • typicky mají svůj vlastní domovský adresář /home/<userName>, pro osobní data a aplikace uživatelů.
    • Uživatelské účty mohou mít přiřazená oprávnění pro přístup k dalším částem systému, včetně administrátorských rolí s možností používat sudo příkazy.
  • Systémové účty (účty služeb)

    • jsou vytvořeny primárně pro potřeby provozování aplikací nebo služeb na pozadí (například webové servery, databáze).
    • typicky mají pro svá data přiřazený adresář /var/lib/<serviceName>
    • obvykle mají omezená oprávnění nutná pouze pro konkrétní úlohy a často jsou nastavena tak, aby nemohla být použita pro interaktivní přihlášení.

Jelikož jde v obou případech technicky o obdobný typ "uživatelského" účtu, i nakládání s oběma typy účtu je podobné - viz. dokumentace níže.

S využitím účtů je možné:

  • Zvýšit bezpečnost přiřazením oprávnění, kdo se k serveru může připojovat, k jakaým datům přistupovat, a co na serveru vykonávat. V případě systémových uživatelů jde poté o izolaci běhu služeb od ostatních operací systému.
  • Monitorovat aktivitu na serveru v kontextu sledování akcí provedených jednotlivými uživateli.
  • Spravovat zdroje. Uživatelské účty umožňují lepší kontrolu nad využíváním systémových zdrojů. Lze například nastavit pro jednotlivé uživatele kvóty na diskový prostor nebo omezení procesorového času.
  • Personalizovat prostředí pro zvýšení pohodlí a efektivity. Každý uživatel může mít své vlastní prostředí s individuálně nastavenými aliasy, proměnnými prostředí a konfiguračními soubory.
  • Dodržet předpisy, standardy, regulace v odvětvích s přísnými požadavky na správu uživatelských účtů a zabezpečení dat.

Zjištění uživatelů na serveru

  • cat /etc/passwd - seznam účtů systému včetně uživatelských informací
  • compgen -u - seznam účtů bez dalších informací
  • compgen -g - seznam uživatelských skupin bez dalších informací
  • groups <userName> - výpis uživatelských skupin, do nichž spadá daný uživatel

Vytvoření nového uživatele na Ubuntu Server

Uživatelské účty na Ubuntu Serveru lze tvořit prostřednictvím sudo příkazů adduser a useradd s příslušnými speciálními parametry. V rámci porovnání obou příkazů, adduser je obecně přátelštější a vysokoúrovňový nástroj poskytující více možností automatizace a přehlednější konfiguraci, zatímco useradd je základnější a vyžaduje více manuálních úprav. Pro zjednodušení, v případě tvorby obou typů uživatelů níže je použít příkaz adduser.

sudo adduser <userName>

Příkaz provede následující:

  • Vyžádá si zadání hesla a jeho potvrzení
  • Požádá o další volitelné informace - Full name, Room number, Work phone, Home phone, Other.
  • Vytvoří domovský adresář pro nového uživatele, obvykle v /home/<userName>.
  • Nastaví odpovídající skupiny a další konfigurační soubory.

Uživatel systémové služby se tvoří obdobně jako běžný uživatelm, avšak s několika speciálními parametry zajišťujícími omezení vhodná pro systémový typ účtu, viz:

sudo useradd --system --no-create-home --shell /bin/false <serviceName>

Popis parametrů

  • --system = účet má být vytvořen jako systémový účet. Systémové účty mají obvykle nižší UID a jsou oddělené od běžných uživatelských účtů pro lepší organizaci a zabezpečení. Systémové účty jsou také obvykle vyloučeny z některých systémových běžných úloh, jako jsou e-maily o expiraci hesel atd.
  • --no-create-home = účet má být vytvořen bez domovského adresáře
  • --shell /bin/false = Nastavuje shell uživatele na /bin/false, což zabrání uživateli v interaktivním přihlášení. Alternativou je použití /usr/sbin/nologin. Přihlášení není možné v obou případech - rozdíl je však ve formě odpovědi. Zatímco /usr/sbin/nologin poskytne informaci, že přihlášení není povoleno, /bin/false okamžitě ukončí shell session bez podání jakékoli informace, včetně záznamu v logu.

Příkaz provede následující:

  • Vytvoří systémový účet bez interaktivních dotazů (nepožaduje heslo).
  • Nevytvoří domovský adresář pro účet, pokud to nepožadujete přiřauením parametru --create-home.
  • Vytvoří skupinu se stejným jménem jako účet, pokud již neexistuje.

Odstranění uživatele z Ubuntu Server

deluser je příkaz specifický pro OS Debian a jeho deriváty, jako je Ubuntu a další. Jde v podstatě o script rozšiřující funkcionalitu userdel. Příkaz současně automaticky odstraňuje domovský adresář uživatele a zpracovat další úkoly, jako je odstranění uživatele ze všech skupin, ve kterých byl členem, stejně jako skupin bez členů.

  • sudo deluser <userName> - odstranění uživatele
  • sudo deluser --remove-home <userName> - odstranění domovského adresáře uživatele
  • sudo deluser <uzivatel> <skupina> - odstranění uživatele ze skupiny

userdel je standardní nástroj pro odstraňování uživatelů ve většině distribucí Linuxu. Je součástí balíčku pro správu uživatelů passwd.

  • sudo userdel <userName> - odstranění uživatele
  • sudo userdel -r <userName> - odstranění uživatele včetně domovského adresáře a mailové schránky

Správa přístupů pro jednotlivé uživatele

  • ls -lh / ls -lh <cesta> = Zjištění nastavení přístupu k jednotlivým adresářům

Přidání vlastností jednoho uživatele jinému uživateli

sudo usermod -aG <serviceName1> <serviceName2>

Nyní služba <serviceName2> má stejná oprávnění jako služba <serviceName1>

Změna vlastnictví adresáře

Každý adresář v Ubuntu server je ve vlastnictví konkrétního uživatele. Není-li uživatel přiřazený, vlastníkem je root. Vlastník je zobrazen ve výpisu ls -lh a může být změněn následujícím příkazem:

  • Změna vlastnictví
    sudo chown <userName>:<userName> soubor/slozka/cesta
  • Rekruzivní změna vlastnicví (včetně všech vnořených souborů a složek)
    sudo chown -R <userName>:<userName> soubor/slozka/cesta

    Dobrovolný parametr -R značí rekruzivní změnu vlastnictví, tedy přidání shodného vlastnictví i na všechny poddružené složky daného adresáře.

Nastavení oprávnění manipulace se souborem / adresářem ( chmod )

  • sudo chmod 600 <file> - číst a zapisovat může pouze vlastník
  • sudo chmod 400 <file> - soubor je určen pouze pro čtení vlastníkem souboru
  • sudo chmod g+r <file> - zapisovat může pouze vlastník, číst mohou kromě vlastníka i uživatelé skupiny

Správa oprávnění pro jednotlivé uživatele

Umožnění používat příkaz sudo (možnost používat příkaz sudo)

  • Možnost používat sudo příkazy (mohou ovlivnit celý systém) mají uživatelé ze skupiny sudo. Oprávnění uživateli tedy přidáme jeho přidáním do skupiny.

    usermod -aG sudo <userName>

    Přidání zajišťuje parametr -aG - append to group (přidat do skupiny). Tedy, ke stávajícím skupinám uživatele <userName> je příkazem přidána i skupina sudo.

    Ověření sudo oprávnění

    # Přepnutí se na nově vytvořeného uživatele
    $ su - <userName>
    # zkouška spuštění příkazu vyžadující sudo oprávnění (výpis root složky)
    $ sudo ls -la /root
    # write password for <userName> based on the request

    Co znamená být v sudo skupině?

    Přístup k příkazu sudo umožňuje uživatelům vykonávat příkazy s oprávněními superuživatele (root), což zahrnuje schopnost měnit systémové soubory, instalovat software, měnit běžící služby a provádět další administrativní úkoly. Konkrétní sudo oprávnění jednotlivých uživatelů lze současně definovat v souboru /etc/sudoers popř. /etc/sudoers.d/.

  • sudo visudo

    umožňuje explicitně specifikovat oprávnění pro jednotlivé uživatele (jde o alternativu k umístění uživatele do skupiny sudo)

Specifikace SSH přístupu pro jednotlivé uživatele

K Ubuntu Server lze přistupovat prostřednictvím SSH dle konfigurace mnoha způsoby, včetně jejich kombinace. Současně, způsob přístupu lze řešit globálně pro všechny, stejně jako jednotlivě na úrovni jednotlivých uživatelů a skupin uživatelů.

Specifikace možností a jejich konfigurace v rámci SSH přístupu je specifikována v sekci SSH Keys, 2FA authentization a podobně.

Specifikace suborders pro jednotlivé uživatele

Prostřednictvím suborders soboruvisudo lze libovolným uživatelům dát možnost vykonávání určených příkazů vyžadujících sudo oprávnění.

sudo visudo
  • Povolení konkrétnímu živateli vypnout počítač

    Přidejte záznam níže na konec visudo suborders souboru

    specificUsername ALL = NOPASSWD: /sbin/poweroff, /sbin/shutdown

    Nyní by měl uživatel specificUsername mít oprávnění používat příkazy sudo poweroff a sudo shutdown now