Polecenie id: sprawdzanie UID i grup, whoami, groups i grupy dodatkowe
Na serwerze z Linuksem UID i grupy bieżącego konta sprawdza się poleceniem id; gdy potrzebna jest tylko nazwa konta, używa się whoami, a gdy tylko nazwy grup — groups. Po uruchomieniu kolejno trzech poleceń na serwerach AlmaLinux 9 i Debian 12 i porównaniu wyników okazało się, że id -un i whoami wypisały tę samą nazwę konta, a groups wypisało listę grup z id z samymi nazwami.
Poniższe wyniki pochodzą z serwera AlmaLinux 9.8 z konta root i z serwera Debian 12 ze zwykłego konta. Nazwę i numery konta logowania oraz grupy dodatkowe zastąpiono wartościami przykładowymi (user1, 1000, adm, systemd-journal).
1️⃣ Podstawowe użycie polecenia id
Uruchomienie id bez opcji wypisuje w jednym wierszu informacje o koncie, które uruchomiło bieżącą powłokę. Na koncie root wszystkie trzy pola miały wartość 0(root).
iduid=0(root) gid=0(root) groups=0(root)Pole uid to numer i nazwa konta, a pole gid to numer i nazwa grupy podstawowej (primary group). Pole groups to wszystkie grupy, do których należy konto, z grupą podstawową na początku.
Po wpisaniu nazwy konta za id wypisywane są informacje o tym koncie. Sprawdzenie zwykłego konta user1, które ma grupy dodatkowe, pokazało w polu groups po grupie podstawowej user1 grupy adm i systemd-journal. Te grupy, do których konto należy poza grupą podstawową, to grupy dodatkowe (supplementary group).
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)Wiele kont ma ten sam numer UID i gid, więc łatwo uznać obie liczby za tę samą wartość, ale konto adm, które jest na serwerze domyślnie, miało UID 3 i numer grupy podstawowej 4. Konto operator miało root jako grupę podstawową.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)Po wpisaniu kilku kont wypisywane jest jedno w każdym wierszu.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)Po wpisaniu konta, które nie istnieje, pojawia się błąd [no such user], a kod wyjścia wynosił 1.
id no-such-user9id: 'no-such-user9': no such userecho $?1Kod wyjścia po wpisaniu istniejącego konta to 0, więc w skrypcie można go użyć jako warunku sprawdzającego, czy konto istnieje.
2️⃣ Opcje polecenia id
Żeby przekazać do skryptu tylko jeden numer z całego wyniku, opcją wybiera się jedno pole. -u wypisuje UID, -g numer grupy podstawowej, a -G wszystkie numery grup, do których należy konto.
id -u0id -u daemon2id -G user11000 4 190Z dodatkiem -n zamiast numerów pojawiają się nazwy. Sprawdzenie grup user1 przez [id -Gn] zamieniło trzy numery na trzy nazwy.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n i -r stosuje się razem z jedną z opcji -u, -g i -G. Wpisanie samego -n dało poniższy błąd.
id -nid: cannot print only names or real IDs in default format-r wypisuje rzeczywisty (real) ID zamiast efektywnego (effective) ID. Uruchomienie [id -ur] w powłoce konta root wypisało 0. Wpisanie razem dwóch lub więcej opcji wybierających numer, na przykład -u i -g, daje błąd [cannot print "only" of more than one choice]. Opcje zebrano poniżej.
| Opcja | Kopiuj | Opis |
|---|---|---|
| -u--user | Wypisuje numer UID | |
| -g--group | Wypisuje numer grupy podstawowej | |
| -G--groups | Wypisuje wszystkie numery grup, do których należy konto | |
| -n--name | Razem z -u, -g lub -G wypisuje nazwę zamiast numeru | |
| -r--real | Razem z -u, -g lub -G wypisuje rzeczywisty (real) ID zamiast efektywnego ID |
| Opcja | Kopiuj | Opis |
|---|---|---|
| -Z--context | Wypisuje tylko kontekst bezpieczeństwa procesu | |
| -z--zero | Rozdziela elementy wyniku znakami NUL zamiast spacji; niedostępne w formacie domyślnym | |
| -a | Przyjmowana tylko dla zgodności z innymi wersjami id i ignorowana | |
| --help | Wypisuje pomoc | |
| --version | Wypisanie wersji |
🔲 Symulator polecenia id
Symulator poniżej zaczyna od konta user1, które ma grupy dodatkowe. Po dodaniu grupy wheel chipem [🖊 Other window] można porównać [id] i [id user1], a chipem [🔁 Log in again] sprawdzić grupy nowej powłoki.
3️⃣ Polecenie whoami i id -un
Gdy potrzebna jest tylko nazwa konta bieżącej powłoki, uruchamia się whoami. Strona man opisuje whoami jako to samo polecenie co [id -un]. Na koncie root oba polecenia wypisały root.
whoamirootid -unrootTakże na zwykłym koncie na serwerze Debian 12 oba polecenia wypisały tę samą nazwę konta.
whoamiuser1id -unuser1whoami wypisuje nazwę konta odpowiadającą bieżącemu efektywnemu (effective) UID. To polecenie sprawdza tylko bieżące konto, więc dopisanie za nim nazwy konta daje błąd.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.Nazwę lub numer innego konta sprawdza się, wpisując to konto za id.
id -un user1user1Po wpisaniu -u zamiast -un w tym samym miejscu pojawia się numer UID zamiast nazwy konta.
4️⃣ Polecenie groups i grupy dodatkowe
groups wypisuje w jednym wierszu same nazwy grup. Bez nazwy konta pojawiają się grupy bieżącej powłoki, a na koncie root był to sam root.
groupsrootPo wpisaniu nazwy konta pojawia się nazwa konta, a po dwukropku grupy. Po wpisaniu kilku kont wypisane zostało jedno w każdym wierszu.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemonGrupa podstawowa i grupy dodatkowe są zapisywane w różnych miejscach. Grupy dodatkowe są zapisane jako członkowie w czwartym polu bazy danych grup (/etc/group), a grupa podstawowa jako numer w czwartym polu informacji o koncie (/etc/passwd).
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinGrupa user1, grupa podstawowa konta user1, miała czwarte pole puste, a w grupie dodatkowej adm konto user1 było zapisane jako członek. Liczba 2 w czwartym polu wiersza konta daemon to numer grupy podstawowej.
Do dodania konta do grupy dodatkowej służy polecenie usermod w postaci [usermod -aG grupa konto]. Przy samym -G bez -a konto wypada z dotychczasowych grup dodatkowych, których nie wpisano na liście, dlatego -a wpisuje się razem z nim.
groups uruchomione bez nazwy konta wypisuje grupy bieżącego procesu powłoki. Strona man wyjaśnia, że po zmianie bazy danych grup ta wartość może różnić się od bazy danych.
Dlatego zaraz po zmianie grup sprawdza się grupy w bazie danych przez [groups konto] lub [id konto], a żeby zmiana objęła powłokę, trzeba zalogować się ponownie. Poleceniem zmieniającym bieżący ID grupy bez wylogowania jest newgrp.
🔢 FAQ & polecane treści
Tworzenie kont
Linux: polecenie useradd & polecenie passwd
Polecenia, które tworzą nowe konto użytkownika i ustawiają hasło tego konta.
Usuwanie konta
[Linux] Polecenie userdel: usuwanie kont użytkowników
Polecenie, które usuwa nieużywane konto użytkownika i porządkuje też jego folder domowy.
Ważność hasła
Polecenie chage w Linuksie
Polecenie, które sprawdza i zmienia okres ważności oraz datę wygaśnięcia hasła konta użytkownika.
ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.