Linux Shell – Benutzer und Gruppen verwalten

Um die, beim letzten Mal beschriebenen Zugriffsrechte auf Dateien und Ordner unter Linux auch wirklich voll auszunutzen, ist es manchmal nötig die eigentlichen Benutzer und Benutzer-Gruppen des Systems zu verwalten.

Möchte man Änderungen vornehmen, die über den eigenen Benutzer hinaus gehen, benötigt man Root-Rechte. Daher ist hier wieder mit entsprechender Umsicht zu arbeiten.
Zunächst widme ich mich den Shell-Befehlen zu diesem Thema, später gehe ich noch auf die Dateien selbst ein, in denen die Benutzer und Gruppen gespeichert sind.

Die hier beschriebenen Befehle gehören zum Linux Grundsystem und sind Distributions-Übergreifend. Wer lieber die grafischen Tools seiner Distribution nutzen möchte der sollte auf den jeweiligen Support Seiten nach Hilfe suchen. Darauf werde ich hier nicht weiter eingehen.

Wozu Benutzer-Gruppen bei Linux verwendet werden
Wer den letzten Artikel gelesen hat, der weiß schon, dass Gruppen unter Linux zum Verwalten von Dateirechten verwendet werden. Im Prinzip ist das die einzige Funktion von Gruppen. Allerdings hat das Ganze noch einen Nebeneffekt, der als eine weitere Funktion genutzt wird.
Wer sich die Gruppen mal ansieht, die auf dem eigenen System angelegt sind, der wird feststellen das es viel mehr davon gibt als man vielleicht annehmen möchte. So gibt es z.B. eine Gruppe “cdrom”, “floppy” oder “dailout”. Diese Gruppen erlauben den Zugriff auf bestimmte Funktionen des Systems. Das wird erreicht, indem die für die jeweilige Funktion benötigten Dateien diesen Gruppen zugeteilt werden. Um sie dann nutzen zu können muss man Mitglied der jeweiligen Gruppe sein.
Auch Anwendungen wie VirtualBox oder MySQL nutzen dieses System und den Zugriff auf ihre Dateien zu verwalten. So muss man z.B. Mitglied der Gruppe “vboxusers” sein, um mit VirtualBox eine VM starten zu können.

Der Grund, warum solche Programme eigene Benutzer-Gruppen benötigen liegt darin, dass die Programmdateien außerhalb des Home-Verzeichnisses der Benutzer liegen. Normalerweise hat ein Benutzer auf diese Bereiche des Dateisystems keine Schreibrechte (größtenteils nicht mal Leserechte). Durch die Gruppen kann dieses Recht aber gewährt werden, ohne dadurch den Rest des Systems einer Gefahr auszusetzen.
Denn die Sicherheit von Linux beruht unter anderem auf die Trennung von System- und Benutzer-Daten und der Einschränkung der Rechte der Benutzer.

Informationen über einen Benutzer anzeigen mit “id”
Um festzustellen von welchen Gruppen man Mitglied ist führt man den Befehl “id” aus. Hier werden die eigene Benutzer-ID (uid) und Gruppen-ID (gid) angezeigt. Darauf folgen alle Gruppen bei denen man Mitglied ist, jeweils mit Name und ID.
Jeder Benutzer hat eine Hauptgruppe, angegeben in der gid. Meist gehören die normalen Benutzer zu der gruppe “users”. Bei Ubuntu hat jeder Benutzer seine eigene Gruppe, die den Benutzernamen trägt.
Möchte man Informationen über einen anderen Benutzer des Systems, so hängt man den Namen an den Befehl an:
“id <benutzer>”
Der Befehl verfügt noch über weitere Optionen die man sich mit “–help” anzeigen lassen kann.

Alle Gruppen eines Benutzers auflisten mit “groups”
Wird wie “id” verwendet, zeigt aber nur die Gruppen an bei denen der Benutzer Mitglied ist. Es werden nur die Namen angezeigt, ohne Gruppen-ID’s. Der Effekt ist der gleiche wie bei “id -Gn”.

Das Passwort ändern und weitere Optionen mit “passwd”
Durch Eingabe von “passwd” ohne weitere Optionen kann der aktuelle Benutzer das eigene Passwort ändern. Auch das Passwort eines anderen Benutzers lässt sich ändern, indem man den Benutzernamen hinten anstellt. Allerdings benötigt man dafür entsprechende Rechte.
Mit “passwd -S” wird der Status das Passworts angezeigt. Also wann es erstellt wurde, wann es abläuft und so weiter.
Das Passwort kann mit “passwd -d” auch gelöscht werden, was eine Eingabe überflüssig macht. Diese Option sollte aber für Benutzer die am System arbeiten niemals in Betracht gezogen werden.
Des weiteren lassen sich Benutzerkonten mit “passwd -l” sperren und mit “passwd -u” wieder entsperren.
Um einen Benutzer zu zwingen sein Passwort beim nächsten Anmelden selbst zu ändern nutzt man “passwd -e”. Damit läuft das Passwort ab, unabhängig davon ob vorher ein Ablaufdatum angegeben war oder nicht. (Also auch ein Passwort das nie abläuft, ist damit abgelaufen)

Einen Benutzer anlegen oder zu einer Gruppe zuordnen mit “adduser”
Mit diesem Befehl lässt sich ein neuer Benutzer anlegen. Man benötigt Root-Rechte für alle Befehle die etwas an den Benutzern oder Gruppen ändern. Wird “adduser” ohne weitere Optionen ausgeführt fragt der Befehl die nötigen Daten ab.
Um einen Benutzer einer Gruppe zuzuordnen nutzt man “adduser <benutzer> <gruppe>”. Sowohl der Benutzer als auch die Gruppe müssen schon existieren.

Einen Benutzer löschen oder aus einer Gruppe entfernen mit “deluser”
Dieser Befehl kann auf mehrere Arten eingesetzt werden. Um einen Benutzer zu löschen gibt man “deluser <benutzer>” ein. Entsteht durch das Löschen des Benutzers eine leere Gruppe, so wird auch diese gelöscht. Um das Home-Verzeichnis des Benutzers gleich mit zu löschen nutzt man die Option “–remove-home”.
Um einen Benutzer aus einer Gruppe zu entfernen führt man “deluser <benutzer> <gruppe>” aus. Weder der Benutzer noch die Gruppe werden dabei gelöscht, nur die Zuordnung wird aufgelöst.

Eine Gruppe erstellen oder löschen
Um eine Benutzer-Gruppe zu erstellen nutzt man entweder “addgroup <gruppe>” oder den schon vorher beschriebenen Befehl “adduser –group <gruppe>”.
Ganz ähnlich verhält es sich mit dem Löschen von Gruppen. Hier kann man entweder “delgroup <gruppe>” oder “deluser –group <gruppe>” bemühen, das Ergebnis ist das Gleiche.

Bestimmen ob sich ein Benutzer am System anmelden kann
Oftmals legt man Benutzer an, die dem System bekannt sein müssen, die sich jedoch nicht direkt auf dem Rechner anmelden sollen. Zum Beispiel FTP Benutzer oder für SAMBA Freigaben.
Diese Benutzer sind meist auf anderen Systemen vollwertige Benutzer, auf dem eigenen System benötigt man aber nur den Benutzernamen und das Passwort.
Jeder Benutzer verfügt über ein Standard Login-Shell. Diese ist, zusammen mit den anderen Benutzer-Informationen in der Datei “/etc/passwd” festgelegt. Zeigt der Eintrag der Login-Shell des Benutzers auf eine gültige Shell-Anwendung kann sich der Benutzer anmelden. Ein Beispiel hierfür ist “/bin/bash”.
Möchte man jedoch verhindern das sich ein Benutzer anmelden kann, setzt man den Wert auf “/bin/false”.
Das kann man entweder direkt in der Datei “/etc/passwd” machen. (Aber Achtung, den Rest der Datei sollte man unberührt lassen.)
Oder man nutzt den Befehl “chsh <benutzer>”. (change shell)

Wer darf root-Rechte nutzen (über sudo) ?
Hier beziehe ich mich speziell auf Ubuntu. Im Zweifelsfalls bitte in der Doku der eigenen Distribution nachlesen, wie es dort geregelt wird.

Wenn ein Benutzer angelegt ist kann er sich im Normalfall auf dem System anmelden und sich in seinem Home-Verzeichnis austoben. Wenn es aber ans System geht stößt er an seine Grenzen. Unter Suse Linux kann jeder Benutzer der das Root-Passwort kennt, mit “su” Root-Rechte erhalten, bis er diesen Modus verlässt. Ebenfalls kann man mit “sudo” einzelne Befehle als root ausführen, wieder mit dem Passwort des Root-Benutzers.

Bei Ubuntu Linux gibt es keinen root, und somit auch kein Root-Passwort. Wer hier “sudo” ausführt gibt sein eigenes User-Passwort an. Damit aber nicht jeder User unter “sudo” arbeiten kann, wird der Zugriff auf diesen Befehlt über eine sudoers table geregelt.
Diese befindet sich unter “/etc/sudoers” und ist mit extremer Vorsicht zu behandeln, wie alle Systemdateien.
Ich werde hier nicht tiefer auf diese Datei eingehen, eine gute Anleitung dafür gibt es unter:
http://wiki.ubuntuusers.de/sudo/Konfiguration

Kurz gefasst würde ich empfehlen eine Admin-Gruppe anzulegen, und diese in der sudoers einzutragen.
Danach können die gewünschten Benutzer einfach mit “adduser <user> admin” sudo-Rechte erteilt werden.
(wenn die Admin-Gruppe “admin” heißt)

This entry was posted in Linux, Ubuntu and tagged , , , , , , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s