Všichni uživatelé v systému Linux musí být členy alespoň jedné skupiny. Tato skupina je známá jako primární skupina. Pokud uživatel nemá primární skupinu, nemůže se přihlásit. Kromě primární skupiny mohou být uživatelé také členy dalších skupin. Nastavení primární skupiny je uloženo v souboru/etc/passwd . Název primární skupiny je uveden ve 4. poli tohoto souboru. Nastavení ostatních (sekundárních) skupin jsou uložena v "/etc/group" soubor. Tento tutoriál vysvětluje různé způsoby, jak najít a vypsat všechny skupiny a vypsat seznam členů skupiny v operačních systémech Linux a Unix.
Seznam všech skupin v Linuxu
Před uvedením všech uživatelů patřících do skupiny nejprve najdeme seznam dostupných skupin pomocí "compgen" příkaz. Compgen je vestavěný BASH k manipulaci s programovatelnými dokončovacími zařízeními.
Chcete-li zobrazit seznam všech dostupných skupin v systému Linux, spusťte "compgen" pomocí -g možnost jako níže:
$ compgen -g
Ukázkový výstup:
root
daemon
bin
sys
adm
tty
disk
lp
news
uucp
man
proxy
.
.
.
nova
rdma
libvirt
libvirt-qemu
libvirt-dnsmasq
cockpit-ws
cockpit-wsinstance
libvirtdbus
root
nogroup
Vypište všechny skupiny v Linuxu pomocí příkazu compgen
Seznam všech skupin můžete získat také pomocí "getent" příkaz:
$ getent group
Ukázkový výstup:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sk
tty:x:5:syslog
disk:x:6:sk
lp:x:7:
mail:x:8:
news:x:9:
.
.
.
nova:x:134:
rdma:x:135:
libvirt:x:136:sk,libvirtdbus
libvirt-qemu:x:64055:libvirt-qemu
libvirt-dnsmasq:x:137:
cockpit-ws:x:138:
cockpit-wsinstance:x:139:
libvirtdbus:x:998:
root:x:0:
nogroup:x:65534:
Vypište všechny skupiny v Linuxu pomocí příkazu getent
První pole v souboru "/etc/group" je název skupiny. Můžeme tedy použít "awk" nebo "vystřihnout" příkazy vytisknou pouze první pole, které obsahuje název skupiny, jak je uvedeno níže:
$ getent group | awk -F: '{ print $1}'
$ getent group | cut -d: -f1
Pokud chcete zobrazit skupiny stránku po stránce, použijte „více“ nebo „méně“ příkaz jako níže:
$ more /etc/group
$ less /etc/group
Nyní se podívejme na členy skupiny.
Seznam členů skupiny v Linuxu
Existuje několik způsobů, jak najít členy skupiny v Linuxu. Metody, které jsme zde použili k identifikaci členů skupiny, jsou uvedeny níže:
- pomocí souboru „/etc/group“,
- pomocí příkazu „getent“,
- pomocí příkazu „groupmems“,
- pomocí příkazu "members",
- pomocí příkazu "lid".
1. Seznam členů skupiny pomocí /etc/group file
Po vytvoření skupiny se informace o skupině uloží do "/etc/group" soubor. Pojďme se podívat na obsah tohoto souboru pomocí "cat" příkaz:
$ cat /etc/group
Ukázkový výstup:
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sk
tty:x:5:syslog
disk:x:6:sk
lp:x:7:
mail:x:8:
news:x:9:
.
.
.
systemd-coredump:x:999:
nova:x:134:
rdma:x:135:
libvirt:x:136:sk,libvirtdbus
libvirt-qemu:x:64055:libvirt-qemu
libvirt-dnsmasq:x:137:
cockpit-ws:x:138:
cockpit-wsinstance:x:139:
libvirtdbus:x:998:
Zobrazení informací o skupinách Linux
Jak jsem již zmínil, první pole v "/etc/group" je vyhrazeno pro název skupiny. Jak můžete vidět ve výše uvedeném výstupu, systém Linux může obsahovat několik skupin.
Chcete-li zobrazit členy konkrétní skupiny v počítači se systémem Linux, použijte "grep" příkaz k filtrování podrobností skupiny ze souboru "/etc/group" jako níže:
$ grep '^sudo' /etc/group
Nebo,
$ grep -w sudo /etc/group
Výše uvedené příkazy zobrazí uživatele patřící do skupiny s názvem "sudo" .
sudo:x:27:sk
Seznam členů skupiny v Linuxu pomocí příkazu grep
Jak vidíte ve výše uvedeném výstupu, skupina "sudo" obsahuje pouze jednoho člena s názvem "sk".
2. Zobrazte členy skupiny pomocí příkazu „getent“
"gettent" příkaz zobrazí položky z databází podporovaných knihovnami Name Service Switch, které jsou konfigurovány v "/etc/nsswitch.conf" soubor.
Chcete-li najít členy dané skupiny v Linuxu pomocí příkazu "getent", spusťte:
$ getent group sudo
Tento příkaz zobrazí členy skupiny "sudo".
Najděte členy skupiny v Linuxu pomocí příkazu getent
Jednou významnou výhodou příkazu getent je, že nejen uvádí místní uživatele, ale všechny uživatele ve všech nakonfigurovaných backendech userdb, například LDAP, na daném systému.
3. Tisk uživatelů ve skupině pomocí příkazu "groupmems"
"groupmems" umožňuje uživateli spravovat vlastní seznam členství ve skupině bez oprávnění superuživatele. Je součástí balíčku shadow utils.
Chcete-li vytisknout členy skupiny pomocí příkazu "groupmems", spusťte:
$ sudo groupmems -g sudo -l
Vytiskněte členy skupiny pomocí příkazu groupmems v Linuxu
Tento příkaz má dvě nevýhody. Zabývá se pouze skupinami v souboru "/etc/group", ale ne těmi v LDAP nebo jiných uživatelských databázích. Při pokusu o otevření "/etc/gshadow" také vyžaduje oprávnění superuživatele soubor.
4. Zobrazte členy skupiny pomocí příkazu "členové"
Jak název výslovně napovídá, příkazy "members" v podstatě zobrazují členy skupiny v Linuxu. Příkaz "members" není ve výchozím nastavení k dispozici ve většině distribucí Linuxu. Musíte jej nainstalovat pomocí správce balíčků vaší distribuce. Například na systémech založených na Debianu jej můžete nainstalovat pomocí příkazu:
$ sudo apt install members
Po instalaci můžete zobrazit členy dané skupiny v Linuxu pomocí příkazu "members" jako níže:
$ members sudo
Zobrazte členy skupiny pomocí příkazu members v Linuxu
Ve výchozím nastavení příkaz "členové" zobrazuje všechny uživatele. Použijte -p nebo -s pro zobrazení pouze členů primární skupiny nebo sekundární skupiny.
5. Seznam všech uživatelů patřících do skupiny pomocí příkazu "libuser-lid"
"libuser-lid" příkaz používaný k zobrazení informací o skupinách obsahujících uživatelské jméno nebo uživatelích obsažených v názvu skupiny.
Příkaz "libuser-lid" také není standardně dostupný v mnoha distribucích Linuxu. "libuser" poskytuje tento příkaz, takže jej musíte nainstalovat pomocí správce balíčků vaší distribuce. Například na Debianu, Ubuntu nainstalujte balíček "libuser" pomocí příkazu:
$ sudo apt install libuser
Chcete-li vypsat všechny uživatele ve skupině, spusťte:
$ sudo libuser-lid -g sudo
Upozorňujeme, že tento příkaz vyžaduje superuživatele oprávnění ke spuštění.
Ukázkový výstup:
sk(uid=1000)
Vypište všechny uživatele ve skupině v Linuxu pomocí příkazu libuser-lid
Další podrobnosti naleznete na stránkách manuálu příslušného příkazu.
To je prozatím vše. Toto je několik různých metod, jak najít seznam uživatelů ve skupině v Linuxu. Doufám, že to pomůže.
Související čtení:
- Jak zjistit, do kterých skupin uživatel v Linuxu patří
- Jak vypsat seznam všech uživatelů v systému Linux