Powrót do strony głównej

Linux użytkownicy UID GID grupy zarządzanie

Artykuł omawia identyfikację użytkowników według UID/GID w Linux, model dostępu, pliki /etc/passwd shadow group. Pokazano polecenia id getent useradd vipw do diagnostyki i zarządzania kontami.

Zarządzanie użytkownikami Linux: UID grupy useradd
Advertisement 728x90

Linux: identyfikatory użytkowników, grupy i zarządzanie kontami

Jądro Linux operuje numerycznymi identyfikatorami UID i GID. Imię użytkownika to tylko odzwierciedlenie dla wygody, przechowywane w pliku /etc/passwd. Procesy i pliki są powiązane z wartościami liczbowymi, dlatego zmiana nazwy bez zachowania UID skutkuje utratą dostępu do zasobów.

Sprawdź aktualnego użytkownika:

id
# uid=1001(deployer) gid=1001(deployer) groups=1001(deployer),27(sudo),998(docker)

id -u  # Tylko UID
whoami # Tylko nazwa
getent passwd deployer

getent działa z modułami NSS, w tym LDAP, w przeciwieństwie do bezpośredniego odczytu plików.

Google AdInline article slot

Model dostępu i właściciele

Każdy inode zawiera właściciela (UID) i grupę (GID). Jądro sprawdza uprawnienia według schematu: proces UID/GID → właściciel? → grupa? → inni. Pierwsze trafienie decyduje o dostępie.

Przykład:

ls -la /var/log/nginx/
# -rw-r----- 1 www-data adm 187234 Mar 26 10:41 access.log

Właścicielem jest www-data, grupa adm. Proces z UID www-data uzyska uprawnienia właściciela, ignorując grupę.

Google AdInline article slot

Zakresy UID:

  • 0: root
  • 1–999: systemowe (demony, bez logowania)
  • 1000+: zwykłe konta
  • 65534: nobody

Ustawia się je w pliku /etc/login.defs.

Użytkownicy systemowi używają /usr/sbin/nologin lub /bin/false do blokady logowania:

Google AdInline article slot
awk -F: '$3 < 1000 && $3 > 0 {print $1, $3, $7}' /etc/passwd

Grupy: dostęp zbiorowy

Podstawowa grupa (GID w /etc/passwd) — dla nowych plików. Dodatkowe (supplementary) — w /etc/group.

Sprawdzenie:

groups  # Bieżące
getent group docker  # Członkowie grupy
docker:x:998:deployer,ci

Grupy ułatwiają zarządzanie: dodaj użytkownika do docker — uzyska dostęp do socketa bez sudo.

Pliki konfiguracyjne

/etc/passwd (czytanie dla wszystkich):

deployer:x:1001:1001:Deploy Bot,,:/home/deployer:/bin/bash

Pola: nazwa użytkownika | hasło (x) | UID | GID | GECOS | katalog domowy | powłoka.

/etc/shadow (tylko root): hashe SHA-512 lub yescrypt, daty ważności.

deployer:$6$rounds=5000$xPwF...$kE9...hash...:19800:0:99999:7:::

/etc/group:

docker:x:998:deployer,ci-bot

Bezpieczne edytowanie:

vipw    # passwd z blokadą
vigr    # group
pwck    # Sprawdzenie

Tworzenie i konfiguracja użytkowników

useradd z kluczowymi opcjami:

| Klucz | Opis |

|------|-----------|

| -m | Katalog domowy |

| -s | Powłoka |

| -G | Dodatkowe grupy |

| -r | Systemowy |

| -u | UID |

Przykłady:

useradd -m -s /bin/bash -G sudo,docker ivan
useradd -r -s /usr/sbin/nologin ci-bot

passwd ivan  # Ustaw hasło
chpasswd <<< 'ivan:secret'
passwd -e ivan  # Zmiana przy logowaniu

useradd -m kopiuje zawartość /etc/skel, a następnie przypisuje właściciela katalogu domowego.

umask jest odejmowany od 0666 (pliki) / 0777 (katalogi). Domyślne: 0022.

Środowisko i szablony

/etc/skel — szablon dla nowych katalogów domowych: .bashrc, .profile.

Ustawienia globalne:

  • /etc/default/useradd: domyślne wartości useradd
  • /etc/profile.d/*.sh: zmienne środowiskowe dla logowań
  • /etc/login.defs: umask, zakresy UID

Co ważne:

  • UID określa dostęp, nie nazwę użytkownika.
  • Używaj getent, a nie cat /etc/passwd dla modułów NSS.
  • Grupy to główny mechanizm delegowania uprawnień.
  • Edytuj pliki konfiguracyjne wyłącznie przez vipw/vigr.
  • Konta systemowe: nologin, UID < 1000.

— Editorial Team

Advertisement 728x90

Czytaj dalej