Správa uživatelů a oprávnění v Linuxu: SUID, SGID a chmod

Proč je správa uživatelů a oprávnění v Linuxu klíčová

Správa uživatelů a oprávnění v Linuxu definuje, kdo může co dělat, kde a jak. Zahrnuje identitu uživatelů a skupin, řízení přístupu k souborům a procesům, audit, delegování práv a rozšířené bezpečnostní mechanismy. Správně navržený model minimalizuje dopady incidentů, snižuje riziko laterálního pohybu a zvyšuje provozní jistotu.

Identita v Linuxu: uživatelé a skupiny

  • UID/GID: jedinečné číselné identifikátory určují vlastnictví objektů a oprávnění. Root (UID 0) má neomezené možnosti.
  • Primární a doplňkové skupiny: každý uživatel má jednu primární skupinu (GID) a libovolný počet doplňkových skupin pro detailnější řízení přístupu.
  • Typy účtů: interaktivní (lidské), systémové a servisní (neinteraktivní), dočasné a strojové identity.

Databáze účtů: passwd, shadow, group

  • /etc/passwd: mapuje uživatelská jména na UID a základní atributy (domovský adresář, shell). Hesla jsou zde nahrazena znakem x.
  • /etc/shadow: obsahuje kryptografické otisky hesel a parametry expirace (přístup pouze pro root).
  • /etc/group: definice skupin, členství, GID a doplňující metadata.

Životní cyklus uživatele: vytvoření, změna, zrušení

  • Vytvoření: nástroje jako useradd (nízkoúrovňový) nebo adduser (interaktivní). Založení domovského adresáře, inicializace skeletonu (/etc/skel), nastavení shellu a skupin.
  • Změna: usermod pro přejmenování, změnu UID, přidání do skupin, uzamčení účtu; passwd a chage pro správu hesel a expirace.
  • Zrušení: userdel s volbou mazání domovského adresáře a pošty; zachování UID/GID mapy kvůli vlastnictví souborů.

Skupiny a jejich správa

  • Vytvoření a úprava: groupadd, groupmod, groupdel.
  • Členství: gpasswd, usermod -aG pro přidání do doplňkových skupin; kontrola příkazem id.
  • Role-based přístup: mapování pracovních rolí na skupiny (např. dev, ops, dba, backup) a následné přiřazení uživatelů.

Přihlašování a autentizace: PAM a NSS

  • PAM (Pluggable Authentication Modules): modulární řetězec autentizace, autorizace a účetních kontrol; pořadí modulů a kontrolní příznaky (required, sufficient, requisite, optional).
  • NSS (Name Service Switch): zdroje identity (soubory, LDAP, SSSD) a pořadí dotazování (/etc/nsswitch.conf).
  • Politiky hesel: délka, složitost, historie, expirace; uzamčení po neúspěšných pokusech (pam_tally2, pam_faillock), vícefaktorová autentizace (TOTP/U2F/WebAuthn).

Delegování práv: su, sudo a polkit

  • su: přepnutí identity, typicky na root; vyžaduje heslo cílového účtu.
  • sudo: granularita na úrovni příkazů a aliasů; audit, timestamp a podmínky (host, skupina, běh bez shellu). Konfigurace v souborech /etc/sudoers a sudoers.d.
  • polkit: jemné řízení oprávnění pro DBus služby a desktopové akce; pravidla založená na identitě a kontextu.

Model oprávnění POSIX: vlastník, skupina, ostatní

  • Bitová maska rwx: práva čtení, zápisu a spuštění pro trojici user/group/other.
  • Umask: výchozí maska omezuje oprávnění nově vytvořených souborů a procesů; rozdílná pro systémové služby a interaktivní shelly.
  • Speciální bity: setuid (spuštění s UID vlastníka), setgid (spuštění s GID), sticky bit (ochrana proti mazání ve sdílených adresářích, např. /tmp).

Rozšířená ACL (Access Control Lists)

  • POSIX ACL: detailnější kontrola přístupu přesahující vlastnictví jedné skupiny; položky pro více uživatelů a skupin; dědičné default ACL v adresářích.
  • Nástroje: getfacl a setfacl pro čtení a nastavování ACL; pozor na interakce s klasickými bity a umask.
  • Případy použití: sdílené projektové adresáře napříč týmy, dočasná eskalace přístupu bez změny skupiny.

Vlastnictví, kvóty a atributy souborů

  • Vlastnictví: příkazy chown a chgrp; mapování UID/GID při migracích a v kontejnerech.
  • Kvóty: diskové limity soft/hard pro uživatele a skupiny; nástroje edquota, quota, repquota.
  • Neměnné atributy: příkazy chattr +i a lsattr pro ochranu kritických souborů před změnou či odstraněním.

Linux capabilities: jemné rozdělení moci root

Model capability rozkládá privilegia root na dílčí schopnosti (např. CAP_NET_BIND_SERVICE, CAP_SYS_ADMIN). Umožňuje spouštět procesy s minimem nutných práv a snižuje dopad kompromitace. Správa probíhá nástroji setcap/getcap a přes ambient capabilities v systemd.

Mandatory Access Control: SELinux a AppArmor

  • SELinux: politicky řízený kontext (typ, role, doména) odděluje procesy a zdroje; režimy enforcing, permissive, disabled; užitečný audit a booleans pro ladění.
  • AppArmor: profilový přístup s pravidly založenými na cestách; jednodušší implementace, vhodný pro per-aplikace omezení.
  • Princip: i když POSIX práva dovolí přístup, MAC může dále omezit; obrana do hloubky a prevence laterální eskalace oprávnění.

Network přístupy a vzdálené přihlášení

  • SSH: preferovat autentizaci klíči, povolit PubkeyAuthentication yes, omezit PermitRootLogin prohibit-password nebo no, nastavit restriktivní AllowUsers/AllowGroups.
  • Omezení portů a služeb: firewalld, nftables a tcpwrappers (na zastaralých systémech) pro řízení dosahu.
  • 2FA/MFA: TOTP/U2F pro kritické účty; security keys a FIDO2 zvyšují odolnost proti phishingu.

Systemd a správa oprávnění služeb

  • Drop-in restrikce: parametry User=, Group=, UMask=, CapabilityBoundingSet=, NoNewPrivileges=yes a PrivateTmp=true pro sandboxing služeb.
  • Mount a namespace omezení: ProtectSystem=, ProtectHome=, ReadWritePaths=, RestrictSUIDSGID=, RestrictAddressFamilies=.
  • Řízení zdrojů: CPUQuota=, MemoryMax=, IOReadBandwidthMax= a cgroups pro izolaci.

Kontejnery a bezpečnost namespace

  • User namespaces: mapování UID/GID v kontejnerech na neprivilegované UID hostitele snižuje riziko container escape.
  • Seccomp: filtrování systémových volání; minimalizace povolených syscallů ke snížení útočné plochy.
  • Podpůrné vrstvy: AppArmor/SELinux profily pro běh kontejnerů, rootless runtime, omezení capability.

Integrační scénáře s adresářovými službami

  • LDAP/AD/FreeIPA: centralizovaná správa identity a politik; SSSD pro cache a offline režim; mapování skupin na role.
  • Kerberos: jednotné přihlášení (SSO) s robustní kryptografií; správa lístků TGT a jejich životnosti; delegace pravomocí.
  • Automount a homed: dynamické připojování domovských adresářů; vhodné pro desktop i clustery.

Audit a forenzní připravenost

  • auditd a ausearch: pravidla pro sledování citlivých akcí (změny v /etc/shadow, sudo, SELinux zamítnutí), korelace s SIEM systémy.
  • logind a journald: záznam přihlášení, relací a neúspěšných pokusů; správa rotace a retenčních politik.
  • Integrita: IMA/EVM pro ověřování integrity binárních souborů a konfigurací; detekce neautorizovaných změn.

Best practices pro účty a oprávnění

  • Princip nejmenších nutných oprávnění (PoLP) a separace povinností.
  • Zákaz přímého přihlášení root, využívání sudo s granularitou a auditním záznamem.
  • Vynucování MFA pro privilegované účty a vzdálené přístupy.
  • Pravidelné hardening: aktualizace, CIS/OS-hardening profily, kontrola umask a citlivých world-writable míst.
  • Pravidelné recertifikace přístupů a revize členství ve skupinách; automatizace deprovisioningu.
  • Pro služby používat oddělené servisní účty bez login shellu a s omezenými právy.

Modelování oprávnění pro aplikace a data

  • Datové domény: rozdělení úložišť na oblasti s rozdílnou klasifikací (veřejné, interní, citlivé) a mapování na skupiny/ACL.
  • Workflow žádostí: standardizovaný proces pro dočasné a trvalé přístupy, schvalování a evidenci důvodů.
  • Šifrování: data-at-rest (LUKS, fscrypt) a data-in-transit (TLS/IPsec), správa klíčů (KMS, TPM).

Typické chyby a jak se jim vyhnout

  • Příliš široká členství ve skupinách (např. všichni v sudo); neomezené použití NOPASSWD v souboru sudoers.
  • Neaktuální účty bývalých zaměstnanců; chybějící expirace a deaktivace účtů.
  • Nesprávné nastavení umask umožňující world-readable přístup k citlivým datům; absence ACL u sdílených projektových adresářů.
  • Spouštění služeb jako root bez oprávněného důvodu; nevyužití capabilities a sandboxingu.
  • Ignorování auditních chyb a SELinux zamítnutí bez analýzy příčiny.

Závěr: bezpečná a provozně udržitelná identita v Linuxu

Efektivní správa uživatelů a oprávnění kombinuje správnou identitu, disciplinovaná oprávnění, audit a automatizaci. Využitím POSIX práv, ACL, sudo, capabilities a MAC sestavíte obranu do hloubky, která splní bezpečnostní i provozní požadavky – od serverů přes kontejnery až po pracovní stanice.