Benutzer und -Gruppen unter Linux

Eine Anmerkung zum Tutorial: Wir ermutigen unsere Benutzer, Tutorials auszuprobieren, aber sie werden nicht vollständig von unserem Team unterstützt – wir können nicht immer Unterstützung bieten, wenn etwas schief läuft. Prüfe unbedingt, mit welchem Betriebssystem und welcher Version es getestet wurde, bevor du weitermachst.

Wenn du neu bei Linux/Unix bist, dann kann das Konzept der Berechtigungen verwirrend sein. Diese Anleitung erklärt dir, was Berechtigungen sind, wie sie funktionieren und wie man sie verwaltet. Anhand einiger Beispiele wird veranschaulicht, wie Berechtigungen für Benutzer und Gruppen gesetzt und geändert werden können.

Was sind Benutzer- und Gruppenberechtigungen?

Linux/Unix-Betriebssysteme haben die Eigenschaft, ähnlich wie andere Betriebssysteme multitaskingfähig zu sein. Der Hauptunterschied von Linux zu anderen Betriebssystemen ist jedoch die Fähigkeit, mehrere Benutzer zu haben. Linux wurde entwickelt, um mehr als einem Benutzer den gleichzeitigen Zugriff auf das System zu ermöglichen. Damit dieses Mehrbenutzer-Design richtig funktioniert, muss es eine Methode geben, um die Benutzer voreinander zu schützen. An dieser Stelle kommen die Berechtigungen ins Spiel.

Lese-, Schreib- und Ausführungsberechtigungen

  • Lesen – eine lesbare Berechtigung erlaubt es, den Inhalt der Datei zu betrachten. Eine Leseberechtigung auf ein Verzeichnis erlaubt es dir, den Inhalt eines Verzeichnisses aufzulisten.
  • Schreiben – eine Schreibberechtigung für eine Datei erlaubt es dir, den Inhalt dieser Datei zu ändern. Für ein Verzeichnis erlaubt das Schreibrecht dir, den Inhalt eines Verzeichnisses zu bearbeiten (z.B. Dateien hinzufügen/löschen).
  • Ausführen – Erlaubt dir die Berechtigung zum Ausführen der Datei und die Ausführung eines Programms oder Skripts. Für ein Verzeichnis erlaubt die Ausführungsberechtigung, daß du in ein anderes Verzeichnis wechseln und es zu deinem aktuellen Arbeitsverzeichnis machen kannst. Benutzer haben normalerweise eine Standardgruppe, aber sie können zu mehreren zusätzlichen Gruppen gehören.

Anzeigen von Dateiberechtigungen

Um die Berechtigungen für eine Datei oder ein Verzeichnis anzuzeigen, gebe den Befehl ls -l in das Terminal ein. Bitte ersetze die Informationen in < > durch den tatsächlichen Datei- oder Verzeichnisnamen. Unten sieht man eine Beispielausgabe für den Befehl ls:

-rw-r--r-- 1 root root 1031 Nov 18 09:22 /etc/passwd

Die ersten zehn Stellen zeigen die Zugriffsberechtigungen an. Der erste Bindestrich (-) gibt den Dateityp an (d für Verzeichnis, s für spezielle Datei und – für eine normale Datei). Die nächsten drei Stellen (rw-) definieren die Berechtigung des Besitzers der Datei. In diesem Beispiel hat der Dateibesitzer nur Lese- und Schreibrechte. Die nächsten drei Stellen (r-) sind die Berechtigungen für die Mitglieder der gleichen Gruppe wie der Dateibesitzer (in diesem Beispiel nur Leserechte). Die letzten drei Stellen (r-) zeigen die Berechtigungen für alle anderen Benutzer an und in diesem Beispiel ist die Datei nur lesbar.

Das Arbeiten mit Benutzern, Gruppen und Verzeichnissen

In den folgenden Abschnitten werden die Befehle zum Erstellen, Löschen und Ändern von Benutzerkonten erläutert. Gruppen werden ebenso behandelt wie Befehle zum Erstellen und Löschen von Verzeichnissen. Du wirst mit den Befehlen und Erklärungen versorgt, die für die Arbeit mit Benutzern, Gruppen und Verzeichnissen benötigt werden.

Erstellen und Löschen von Benutzerkonten

Um einen neuen Standardbenutzer anzulegen, verwendet man den Befehl useradd, der Syntax lautet wie folgt:

useradd <name>

Der Befehl useradd verwendet eine Vielzahl von Variablen, von denen einige in der folgenden Tabelle dargestellt sind:

OptionBeschreibungBeispiel
-d <home_dir>home_dir wird als Wert für das Login-Verzeichnis verwendetuseradd <name> -d /home/<user’s home>
-e <date>das Datum, an dem das Konto abläuftuseradd <name>** -e <YYYY-MM-DD>
-f <inactive>die Anzahl der Tage vor Ablauf des Kontosuseradd <name> -f <0 or -1>
-s <shell>setzt den Standard-Shelltypuseradd <name> -s /bin/<shell>

Du musst ein Passwort für den neuen Benutzer festlegen, indem du den Befehl passwd verwendest. Hinweis: Zum Ändern eines Benutzer-Passwortes benötigt man root-Rechte.

Die Syntax lautet wie folgt:

passwd <username>

Der Benutzer kann sein Passwort jederzeit mit dem passwd-Befehl mit der Syntax ändern. Nachfolgend ein Beispiel:

$ passwd
Changing password for mustermann.
(current) UNIX password:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

Es gibt eine weitere Möglichkeit, Benutzerkonten zu erstellen, die für Erstadministratoren einfacher sein könnte. Möglicherweise muss jedoch ein neues Paket installiert werden. Der Installationsbefehl für Debian/Ubuntu lautet wie folgt:

apt-get install adduser

Der adduser-Befehl erstellt automatisch ein Home-Verzeichnis und setzt die Standard-Gruppe, Shell, etc. Um einen neuen Standardbenutzer mit dem adduser-Kommando anzulegen, lautet der Syntax wie folgt:

adduser <name>

Sobald der Befehl eingegeben wird, erhält man eine Reihe von Aufforderungen; die meisten dieser Informationen sind optional. Dennoch solltest du mindestens den Benutzernamen (in diesem Beispiel ist der Benutzername mustermann) und natürlich ein Passwort festlegen.

root@localhost:~# adduser mustermann
  Adding user `mustermann' ...
  Adding new group `mustermann' (1001) ...
  Adding new user `mustermann' (1001) with group `mustermann' ...
  Creating home directory `/home/mustermann' ...
  Copying files from `/etc/skel' ...
  Enter new UNIX password:
  Retype new UNIX password:
  passwd: password updated successfully
  Changing the user information for mustermann
  Enter the new value, or press ENTER for the default
      Full Name []: Sven Mustermann
      Room Number []: 111
      Work Phone []: 555-555-555
      Home Phone []:
      Other []:
  Is the information correct? [Y/n] Y

Es ist wichtig zu beachten, dass die Sicherheit immer sehr ernst genommen werden sollte. Daher wird dringend empfohlen, für jedes Konto eindeutige Passwörter zu verwenden. Gib dein Passwort niemals an andere Benutzer weiter.

Um ein Benutzerkonto zu entfernen, gib den folgenden Befehl ein:

userdel <name>

Durch den obigen Befehl wird nur das Konto des Benutzers gelöscht. Die Dateien und das Home-Verzeichnis werden nicht gelöscht.

Um den Benutzer, seinen Homeordner und seine Dateien zu entfernen, benutze diesen Befehl:

userdel -r <name>

Sudo verstehen lernen

Root ist der Super-User und hat die Fähigkeit, alles auf einem System zu tun. Deshalb wird zum Schutz vor möglichen Schäden sudo anstelle von root verwendet. Sudo erlaubt Benutzern und Gruppen Zugriff auf Befehle, die sie normalerweise nicht benutzen könnten. Sudo erlaubt es einem Benutzer, Administrationsrechte zu haben, ohne sich als root anzumelden. Ein Beispiel für den Befehl sudo lautet wie folgt:

sudo apt-get install <package>

Bevor du sudo verwendest, musst du es möglicherweise zuerst installieren, falls es nicht Teil deiner Distribution ist. Der Befehl für Debian lautet wie folgt:

apt-get install sudo

Für CentOS lautet der Befehl wie folgt:

yum install sudo

Um einem Benutzer die sudo-Fähigkeit zu ermöglichen, muss sein Name in die sudoers-Datei aufgenommen werden. Diese Datei ist sehr wichtig und sollte nicht direkt mit einem Texteditor bearbeitet werden. Wenn die sudoers-Datei falsch bearbeitet wird, kann dies dazu führen, dass der Zugriff auf das System gesperrt wird.

Daher sollte der visudo-Befehl zum Bearbeiten der sudoers-Datei verwendet werden. Dazu ist es notwendig, sich als root in der Kommandozeile anzumelden und den Befehl visudo einzugeben.

Unten ist der Teil der sudoers-Datei, der die Benutzer mit sudo-Zugriff zeigt.

Der folgende sudoers-Auszug erlaubt den aufgeführten Benutzern, jeden beliebigen Befehl mit sudo auszuführen, wodurch der Benutzer die volle Kontrolle über ein System erhält. Bitte keine Benutzer zu sudoers hinzufügen, wenn sie nicht vertrauenswürdig sind. Du kannst optional einschränken, was Benutzer mit sudo tun können; siehe die sudoers(5) Manpage für diese eingeschränkte Verwendungssyntax.
# User privilege specification
root        ALL=(ALL:ALL) ALL
mustermann  ALL=(ALL:ALL) ALL
claus       ALL=(ALL:ALL) ALL
jens        ALL=(ALL:ALL) ALL

Nachdem du deinem Benutzerkonto sudo-Privilegien gegeben hast, speichere die sudoers-Datei und logge dich als root aus. Danach meldest du dich als dein Benutzer an und prüfst die Privilegien als dein Benutzer mit sudo-Zugriff. Wenn ein neuer Benutzer sudo-Zugriff benötigt, kannst du nun die sudoers-Datei mit deinem eigenen Login mit folgendem Befehl bearbeiten:

sudo visudo

Arbeiten mit Gruppen

Linux benutzt Gruppen als eine Möglichkeit, Benutzer zu organisieren. Gruppen organisieren Sammlungen von Accounts, hauptsächlich als Sicherheitsmaßnahme. Die Kontrolle der Gruppenmitgliedschaft wird durch die Datei /etc/group verwaltet, die eine Liste der Gruppen und ihrer Mitglieder anzeigt.

Jeder Benutzer hat eine Standard- oder Primärgruppe. Wenn sich ein Benutzer anmeldet, wird die Gruppenmitgliedschaft für seine Primärgruppe festgelegt. Dies bedeutet, dass wenn ein Benutzer ein Programm startet oder eine Datei erstellt, wird sowohl die Datei als auch das laufende Programm mit der aktuellen Gruppenmitgliedschaft des Benutzers verknüpft.

Ein Benutzer kann auf andere Dateien in anderen Gruppen zugreifen, solange er ebenfalls Mitglied dieser Gruppe ist und die Zugriffsrechte festgelegt sind. Um Programme auszuführen oder eine Datei in einer anderen Gruppe zu erstellen, muss der Benutzer den Befehl newgrp ausführen, um die aktuelle Gruppe zu wechseln. Ein Beispiel für den Befehl newgrp ist wie folgt:

newgrp <lounge>

Wenn der Benutzer, der den oben genannten Befehl eingibt, ein Mitglied der Lounge-Gruppe in der Datei /etc/group ist, ändert sich die aktuelle Gruppenzugehörigkeit. Es ist wichtig zu beachten, dass alle erstellten Dateien nun mit der Loungegruppe und nicht mehr mit der primären Gruppe des Benutzers verknüpft werden. Benutzer können ihre Gruppe auch mit dem Befehl chgrp ändern.

Die Syntax für den chgrp-Befehl lautet wie folgt:

chgrp <newgroup>

Erstellen und Entfernen von Verzeichnissen

Um ein Verzeichnis zu erstellen, benutze den folgenden Befehl:

mkdir <directory name>

Um ein Verzeichnis zu erstellen und gleichzeitig die Berechtigungen zu setzen, verwendet man die folgende Option und Syntax:

mkdir -m a=rwx <directory name>

Die Option -m ist die Abkürzung für mode, und a=rwx bedeutet, dass alle Benutzer Lese-, Schreib- und Ausführungsrechte auf das Verzeichnis haben. Um eine vollständige Liste aller Optionen für den Befehl mkdir zu sehen, gibt man in der Kommandozeile man mkdir ein.

man mkdir

Um eine Datei zu entfernen, verwendet man folgenden Befehl:

rm <file>

Um ein Verzeichnis zu entfernen:

rm -r <directory name>

Es ist wichtig zu beachten, dass wenn man ein Verzeichnis entfernt, werden auch alle darin enthaltenen Dateien gelöscht.

Ändern von Verzeichnis- und Dateiberechtigungen

Um Dateiberechtigungen und Besitz von Dateien und Verzeichnissen anzuzeigen, verwendet man den Befehl ls -al. Die Option a ist für die Anzeige versteckter Dateien oder aller Dateien, und die Option l ist für die lange Auflistung. Die Ausgabe wird ähnlich wie die folgende sein:

drwxr-xr-x 2 user user 4096 Jan  9 10:11 documents
-rw-r--r-- 1 user user  675 Jan  7 12:05 .profile
drwxr-xr-x 4 user user 4096 Jan  7 14:55 public

Das erste Feld mit den zehn Buchstaben und Bindestrichen zeigt die Berechtigungen der Datei oder des Verzeichnisses an. Das zweite Feld (mit der einfachen Zahl) gibt die Anzahl der im Verzeichnis enthaltenen Dateien oder Verzeichnisse an. Das nächste Feld zeigt den Besitzer, gefolgt vom Gruppennamen, der Größe, dem Datum und der Zeit des letzten Zugriffs und schließlich den Namen der Datei.

Wenn man zum Beispiel das erste Feld aus der obigen Ausgabe verwendet, sehen die Details wie folgt aus:

`drwxr-xr-x` are the permissions
`2` is the number of files or directories
`user` is the owner
`user` is the group
`4096` is the size
`Jan  9 10:11` is the date/time of last access
`documents` is the directory
Da ein Verzeichnis selbst eine Datei ist, wird jedes Verzeichnis immer 4096 als seine Größe anzeigen. Dies spiegelt nicht die Größe des Inhalts des Verzeichnisses wieder.

Der Chmod-Befehl

Der Befehl chmod ist die Abkürzung für den Change-Modus. Chmod wird verwendet, um die Rechte auf Dateien und Verzeichnisse zu ändern. Der Befehl chmod kann entweder mit Buchstaben oder Zahlen (auch bekannt als oktal) verwendet werden, um die Berechtigungen zu setzen. Die Buchstaben, die mit chmod verwendet werden, sind in der folgenden Tabelle aufgeführt:

BuchstabeBerechtigung
rlesen
wschreiben
xausführen
XAusführen (nur wenn Datei ein Verzeichnis ist)
sBenutzer- oder Gruppen-ID bei der Ausführung setzen
tProgrammtext auf Auslagerungsgerät speichern
uAktuelle Rechte, die die Datei für den Besitzer hat
gAktuelle Berechtigungen, die die Datei für Benutzer in der gleichen Gruppe hat
oAktuelle Berechtigungen, die die Datei für andere Personen hat, die nicht in der Gruppe sind

Es ist wichtig, daran zu denken, dass das erste Zeichen der ersten Spalte einer Dateiauflistung anzeigt, ob es sich um ein Verzeichnis oder eine Datei handelt. Die anderen neun Zeichen sind die Berechtigungen für die Datei/das Verzeichnis. Die ersten drei Zeichen sind für den Benutzer, die nächsten drei für die Gruppe und die letzten drei für die anderen. Das Beispiel drwxrw-r- ist wie folgt aufgeschlüsselt:

d ist ein Verzeichnis
rwx der Benutzer hat Lese-, Schreib- und Ausführungsrechte
rw- die Gruppe hat Lese- und Schreibrechte
r– alle anderen haben nur Leserechte

Bitte beachtet, dass der Bindestrich (-) bedeutet, dass die Berechtigungen entfernt werden. Daher wurden bei der Gruppe „all others“, r- bedeutet nur Leserechte, die Schreib- und Ausführungsrechte entfernt.

Umgekehrt ist das Pluszeichen (+) gleichbedeutend mit der Erteilung von Berechtigungen: chmod u+r,g+x

Das obige Beispiel lässt sich wie folgt erklären:

u steht für Anwender
r steht für Lesen
g steht für Gruppe
x steht für Ausführen

Mit anderen Worten, der Benutzer bekam das Leserecht und die Gruppe das Ausführungsrecht für die Datei. Wenn man mehrere Berechtigungen für ein Set setzt, ist ein Komma zwischen den Sets erforderlich.

Chmod-Oktalformat

Um das Oktalformat zu verwenden, muss man die Berechtigungen für jeden Teil der Datei oder des Verzeichnisses berechnen. Die ersten zehn oben genannten Zeichen entsprechen einer vierstelligen Zahl im Oktalformat. Die Ausführungsberechtigung ist gleich der Zahl eins (1), die Schreibberechtigung ist gleich der Zahl zwei (2) und die Leseberechtigung ist gleich der Zahl vier (4). Wenn du also das Oktalformat verwendest, musst du für jeden Teil der Berechtigung eine Zahl zwischen 0 und 7 berechnen. Zur Verdeutlichung ist unten eine Tabelle angegeben.

Obwohl das Oktalformat schwer zu verstehen scheint, ist es einfach zu benutzen, wenn man erst einmal das Wesentliche verstanden hat. Das Setzen von Berechtigungen mit r, w und x kann jedoch einfacher sein. Im Folgenden sind Beispiele dafür aufgeführt, wie man sowohl Buchstaben als auch das Oktalformat verwendet, um Berechtigungen für eine Datei oder ein Verzeichnis festzulegen.

chmod <octal or letters> <file/directory name>
chmod go-rwx Work (Der Gruppe und anderen die rwx-Berechtigung verweigern)

Die Ausgabe von ls -al nach dem obigen chmod-Befehl würde wie folgt aussehen:

dr-------- 2 user user 4096 Dec 17 14:38 Work

Octal Format: 

chmod 444 Work

Die Ausgabe von ls -al nach dem obigen chmod-Befehl würde wie folgt aussehen:

dr--r--r-- 2 user user 4096 Dec 17 14:38 Work

Zusätzliche Dateiberechtigungen

Zusätzlich zu den am häufigsten verwendeten Lese-/Schreib-/Ausführungsrechten gibt es einige zusätzliche Modi, die nützlich sein könnten, insbesondere der +t-Modus (sticky bit) und der +s-Modus (setuid bit). Diese Funktionen beschreiben das Verhalten von Dateien und ausführbaren Dateien in Mehrbenutzersituationen.

Wenn es auf eine Datei oder ein Verzeichnis gesetzt wird, bedeutet das Sticky-Bit oder der +t-Modus, dass nur der Eigentümer (oder Root) die Datei löschen kann, unabhängig davon, welche Benutzer über die Gruppenzugehörigkeit oder den Eigentümer Schreibzugriff auf diese Datei/ dieses Verzeichnis haben. Dies ist nützlich, wenn eine Datei oder ein Verzeichnis einer Gruppe gehört, über die mehrere Benutzer Schreibzugriff auf eine bestimmte Menge von Dateien haben.

Um das Sticky-Bit in einer Datei namens /root/sticky.txt zu setzen, gibt man folgenden Befehl ein:

chmod +t /root/sticky.txt

Um das „Sticky Bit“ aus einer Datei zu entfernen, benutzt man den Befehl chmod -t. Beachte bitte, um das Sticky Bit zu ändern, musst du entweder root oder der Besitzer der Datei sein. Der Benutzer root kann Dateien unabhängig vom Status des Sticky Bits löschen.

Das setuid Bit, oder +s, wenn es auf Dateien gesetzt ist, ermöglicht Benutzern mit Berechtigungen zum Ausführen einer bestimmten Datei die Möglichkeit, diese Datei mit den Berechtigungen des Dateieigentümers auszuführen. Wenn die Datei beispielsweise dem Root-Benutzer und der Lounge-Gruppe gehört, können Mitglieder der Lounge-Gruppe das Arbeitsprogramm so ausführen, als wären sie der Root-Benutzer. Dies kann in einigen Fällen ein potenzielles Sicherheitsrisiko darstellen, und ausführbare Dateien sollten ordnungsgemäß ausgewertet werden, bevor sie das +s-Flag erhalten. Um das +s-Bit auf einer Datei namens /usr/bin/work zu setzen, gebe den folgenden Befehl ein:

chmod g+s /usr/bin/work

Im Gegensatz zum +s-Modus für den Besitz einer Datei ist die Wirkung des +s-Modus auf ein Verzeichnis etwas anders. Dateien, die in +s-Verzeichnissen erstellt werden, erhalten den Besitz des Benutzers und der Gruppe dieses Verzeichnisses und nicht den Besitz des Benutzers, der die Datei erstellt hat, und ihrer Standardgruppe. Um die Option setguid (group id) auf ein Verzeichnis zu setzen, verwende den folgenden Befehl:

chmod g+s /var/doc-store/

Um die setuid (Benutzer-ID) für ein Verzeichnis namens /var/doc-store zu setzen, gebe den folgenden Befehl ein:

chmod u+s /var/doc-store/

Ändern des Dateieigentums

Standardmäßig sind alle Dateien „Eigentum“ des Benutzers, der sie erstellt und der Standardgruppe dieses Benutzers. Um den Eigentümer einer Datei zu ändern, verwende den Befehl chown im Format chown user:group /pfad/zur/ Datei. Im folgenden Beispiel wird der Eigentümer der Datei „list.html“ auf den Benutzer „mustermann“ in der Gruppe „lounge“ geändert:

chown mustermann:lounge list.html

Um den Eigentümer eines Verzeichnisses und aller darin enthaltenen Dateien zu ändern, verwende die rekursive Option mit dem -R-Flag. Im folgenden Beispiel änderst du den Besitzer von /srv/smb/leadership/ auf den Benutzer „mustermann“ in der Gruppe „lounge“:

chown -R mustermann:lounge /srv/smb/leadership/

Die Nutzung von Benutzern und Gruppen

In vielen Fällen werden Benutzerrechte verwendet, um dem System ohne direkte Interaktion mehr Sicherheit zu geben. Viele Betriebssysteme erstellen während des Installationsprozesses spezifische Systembenutzerkonten für verschiedene Pakete.

Die beste Praxis ist, jedem Benutzer einen eigenen Login für Ihr System zu geben. Dies schützt die Dateien jedes Benutzers vor allen anderen Benutzern. Darüber hinaus ermöglicht die Verwendung spezifischer Konten für Benutzer eine genauere Systemanmeldung, insbesondere in Kombination mit Tools wie sudo. Ich würde empfehlen, Situationen zu vermeiden, in denen mehr als eine Person das Passwort für ein Benutzerkonto kennt, um maximale Sicherheit zu gewährleisten.

Im Gegensatz dazu sind Gruppen nützlich, um mehreren unabhängigen Benutzerkonten die Zusammenarbeit und den Austausch von Dateien zu ermöglichen. Wenn du auf einem Rechner Gruppen für gemeinsame Aufgaben auf einer Aufgabenbasis erstellst (z.B. Web-Redakteure, Mitwirkende, Content-Einreicher, Support) und relevante Benutzer zu den entsprechenden Gruppen hinzufügst, können diese Benutzer alle den gleichen Satz von Dateien bearbeiten und ausführen, ohne diese Dateien mit der Welt zu teilen. Die Verwendung des Befehls chown mit den Dateiberechtigungen 770 und 740 würde helfen, dieses Ziel zu erreichen.

Mehr Informationen zum Thema

Du kannst die folgenden Ressourcen für zusätzliche Informationen zu diesem Thema verwenden. Obwohl diese in der Hoffnung bereitgestellt werden, dass sie nützlich sind, beachte bitte, dass ich nicht für die Richtigkeit oder Aktualität von extern gehosteten Materialien haften kann.

Image by guaxipo from Pixabay