Aus Linux-Magazin 05/2021

Aus dem Alltag eines Sysadmin: Benutzer und Gruppen

Diesmal spürt Charly den drei häufigsten Fragen rund um Gruppen nach: Welche gibt es, wie viele Mitglieder haben sie, und wer gehört zu welcher?

Dass jeder Benutzer auf einem Linux-System auch Mitglied mindestens einer Benutzergruppe ist, wissen die meisten. Wir wollen heute den drei häufigsten Fragen rund um Gruppen nachspüren: Welche gibt es, wie viele und welche Mitglieder haben Sie, und zu welchen Gruppen gehört ein bestimmter Benutzer?

Zuerst möchten wir wissen, welche Gruppen es auf unserem System gibt. Dazu führen mehrere Wege nach Rom. Einen davon bietet das Kommando »groups« ohne weitere Parameter, einen weiteren eröffnet »compgen -g«. Auch »getent group« (Listing 1, Zeile 1) und »cat /etc/group« liefern das gleiche Ergebnis, mit einigen Zusatzinformationen, darunter das Gruppenkennwort. Hier steht meist ein »x«, was bedeutet, dass »/etc/gshadow« sich darum kümmert. Darauf folgen die numerische Gruppen-ID und eine durch Kommas getrennte Liste der Mitglieder.

Als Nächstes gilt es herauszufinden, welche Mitglieder eine Gruppe hat. Im Prinzip sind wir damit schon fertig, denn die beiden Kommandos »getent group« und »cat /etc/group« liefern diese Information nebenbei gleich mit.

Listing 1

Benutzer und Gruppen

$ getent group
root:x:0:
daemon:x:1:
sys:x:3:
admin:x:4:syslog,charly
[...]
$ sudo apt install libuser
$ sudo libuser-lid -g adm
  syslog(uid=104)
  charly(uid=1000)
$ groups charly
charly : charly adm cdrom sudo dip plugdev lxd lpadmin sambashare
$ id charly
uid=1000(charly) gid=1000(charly) groups=1000(charly),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare)
$ grep charly /etc/group | awk -F: '{ print $1 }'
adm
cdrom
sudo
dip
plugdev
lxd
charly
lpadmin
sambashare
$ grep charly /etc/group | cut -f1 -d:
[...]

Oft benötigt man die Daten aber, um sie in einem Programm weiterzuverarbeiten. Da wäre es gut, wenn man die Zeichenketten nicht per Awk oder Cut auseinander basteln müsste. Eine Liste mit einem Benutzernamen pro Zeile ließe sich viel einfacher handhaben. Um eine solche zu generieren, installiere ich zunächst das Paket libuser (Zeile 7). Jetzt steht mir das Kommando »libuser-lid« zur Verfügung, das ich allerdings mit »sudo« aufrufen muss (Zeile 8). In der Ausgabe des Kommandos taucht auch die numerische Benutzer-ID mit auf. Das lässt sich auf Wunsch mit dem Parameter »-n« abstellen.

Zum Schluss geht die Fahrt rückwärts: Jetzt möchte ich wissen, in welchen Gruppen ein bestimmter Benutzer Mitglied ist, etwa charly. Das klappt schnell und einfach mit dem Kommando »groups charly« (Zeile 11). Darf es etwas mehr Information sein, führt das Kommando »id charly« (Zeile 13) zum Ziel. Auch diese Ausgabe zeigt die numerischen IDs an.

Hier wäre ebenfalls eine Liste das Objekt der Begierde, mit einem Gruppennamen pro Zeile. Dafür kenne ich kein natives Kommando, aber Awk hilft zuverlässig (Zeile 15) und liefert die gewünschte Aufstellung. Erscheint Ihnen die Awk-Syntax zu sperrig, greifen Sie stattdessen einfach zu Cut (Zeile 25) und erhalten ein identisches Ergebnis. Viele Wege führen hier zum Ziel. (jlu)

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 1 HeftseitePreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben