• Keine Ergebnisse gefunden

ICT-Infrastruktur für Bildungsaufgaben

N/A
N/A
Protected

Academic year: 2021

Aktie "ICT-Infrastruktur für Bildungsaufgaben"

Copied!
6
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

ICT-Infrastruktur für Bildungsaufgaben

4. Benutzerverwaltung

Thomas Leitner <thomas.leitner@univie.ac.at>

Fakultät für Mathematik, Universität Wien Sommersemester 2013

Letzte Änderung: 2013-09-20 20:46:17 +0200

Inhalt

Allgemeines

Merkmale von Benutzer und Gruppen Lokale Benutzer und Gruppen PAM und NSS

Befehle für die Benutzer- und Gruppenverwaltung

Allgemeines 1

Unter Linux gibt es ein einfaches Benutzer- bzw. Berechtigungskonzept:

Es gibt einen speziellen Benutzer, üblicherweise root genannt, der alles darf.

Daneben gibt es noch viele „normale“ Benutzer, die grundsätzlich die gleichen Rechte haben.

Ein Benutzer ist auch immer einer oder mehreren Gruppen zugeordnet, die bestimmte Rechte hat.

Allerdings gibt es eine Vielzahl an Möglichkeiten, wie man bestimmten Benutzern mehr erlauben kann:

durch Zuordnung zu bestimmten Gruppen über den sudo-Befehl

durch Zuordnung sogenannter Fähigkeiten (Capabilities; seit Linux 2.2)

Wichtig ist auch immer der Unterschied Authentifikation (wer bin ich?) und Autorisation (was darf ich)!

Allgemeines 2

Wie generell bei der Systemadministration ist es auch bei der Benutzerverwaltung wichtig, möglichst alles zu automatisieren:

Anlegen von Benutzern (kann in manchen Umgebungen aus vielen Schritten bestehen, z.B. Anlegen eines Benutzerkontos in einem LDAP-Verzeichnis, Erstellen des Home-Verzeichnisses und eines Windows-Profil-Verzeichnisses auf einem Dateiserver, Eintragen des Benutzers in Mailing-Listen, …)

Löschen von Benutzern (Benutzerkonto und sämtliche Daten löschen; zur Sicherheit ein Backup der Daten machen) Regelmäßiges Entfernen von „Karteileichen“ aus dem System

Benutzer 1

Jeder Benutzer besitzt bestimmte Merkmale:

Name: Ein eindeutiger Loginname für den Benutzer.

UID (User ID): Eine eindeutige Nummer für den Benutzer (>=0).

GID (Group ID): Die Nummer der primären Gruppe des Benutzers.

GECOS-Feld: Enthält den realen Namen sowie eventuell zusätzliche Informationen über den Benutzer (z.B. Raumnummer, Telefonnummer). Der Name stammt von frühen Unix-Maschinen mit dem Namen GECOS (General Comprehensive Operating System), die dieses Feld für zusätzliche Informationen benutzten.

Home-Verzeichnis: Das Verzeichnis, in dem der Benutzer alle seine Daten abspeichern kann bzw. in dem seine Konfigurationsdateien liegen (üblicherweise

/home/BENUTZER_NAME

).

Login-Shell: Der Pfad des Programms, das beim Einloggen des Benutzers ausgeführt werden soll.

Benutzer 2

Der Loginname darf nur aus Kleinbuchstaben, Ziffern und dem Unterstrich bestehen und muss mit einem Buchstaben beginnen.

Die Loginnamen dienen lediglich der Darstellung gegenüber Benutzern des Systems, intern (auf Prozess- oder Dateisystemebene) werden immer die numerischen Werte (UID, GID) verwendet.

Die Anzahl der möglichen UIDs/GIDs seit Linux 2.6 ist 4294967296 (i.e. 2^32).

Der spezielle Benutzer, root, muss die UID 0 haben (ist natürlich standardmäßig der Fall).

(2)

Das Home-Verzeichnis eines Benutzers muss nicht unbedingt existieren. Als Ersatz wird dann das Root-Verzeichnis (/) verwendet. Da ein normaler Benutzer nicht die Berechtigung hat, im Root-Verzeichnis Dateien anzulegen/zu verändern, funktionieren dann aber einige Sachen nicht richtig (z.B. funktioniert das Einloggen auf der graphischen Oberfläche nicht).

Die Informationen im GECOS-Feld werden von einigen Applikationen ausgewertet (z.B. vom Programm finger), sind aber nicht direkt für das System wichtig.

Gruppen

Wie Benutzer haben auch Gruppen bestimmte Merkmale:

Name: Ein eindeutiger Gruppenname.

GID: Eine eindeutige Nummer für die Gruppe.

Gruppenmitglieder: Eine Liste der Benutzer, die in dieser Gruppe Mitglied sein sollen.

Jeder Benutzer hat eine primäre Gruppe: Das ist die Gruppe, die direkt bei den Merkmalen des Benutzers angegeben ist.

Zusätzlich kann ein Benutzer Mitglied in beliebigen anderen Gruppen sein, das sind dann die sekundären Gruppen des Benutzers. Temporär kann ein Benutzer mittels des Befehls

newgrp

seine primäre Gruppe ändern.

Die primäre Gruppe wird z.B. beim Anlegen von neuen Dateien oder beim Starten von Prozessen verwendet (jeder Datei/jedem Prozess ist ja sowohl eine UID als auch eine GID zugeordnet, um Berechtigungen zu prüfen).

Lokale Benutzer/Gruppen

Wenn man nichts anderes einstellt, werden Benutzer und Gruppen lokal am System definiert. Dazu werden die folgenden Dateien verwendet:

/etc/passwd

: Benutzerdaten

/etc/group

: Gruppendaten

/etc/shadow

: Passwörter und Passwortrichtlinien für Benutzer

/etc/gshadow

: Passwörter für Gruppen

Wichtig: Diese Dateien sollten nur mit den Befehlen vipw bzw. vigr editiert werden, um Datenkorruption vorzubeugen. Schleicht sich nämlich ein Fehler ein, so kann es sein, dass man nicht mehr einloggen kann!

Lokale Benutzer - /etc/passwd 1

In der Passwortdatei

/etc/passwd

sind die Benutzer mit ihren Merkmalen gespeichert. Diese Datei muss von allen Benutzer gelesen werden können. Im Gegensatz zu ihrem Namen sollte das Passwort in der Passwortdatei nicht gespeichert werden!

Jede Zeile beschreibt einen Benutzter, die einzelnen Werte sind mit Doppelpunkten von einander getrennt.

Eine typische Zeile sieht zum Beispiel so aus (

man 5 passwd

):

root:x:0:0:root:/root:/bin/bash / | \ \ \ \ \

Benutzername | \ GID GECOS \ Login-Shell Passwort UID Home-Verzeichnis Lokale Benutzer - /etc/passwd 2

Es sind also alle oben genannten Merkmale eines Benutzers vorhanden und zusätzlich noch ein Passwort-Feld. Folgende Werte darf das Passwort-Feld besitzen:

Kein Wert: Der Benutzer kann sich ohne Passwort einloggen. Allerdings kann es sein, dass manche Applikationen dann den Zugriff vollständig verbieten. D.h. man sollte hier immer etwas eintragen!

x

: Steht im Passwort-Feld ein kleines „x“, dann bedeutet das, dass das verschlüsselte Passwort in der Datei

/etc/shadow

zu finden ist. In diesem Fall muss es eine entsprechende Zeile in dieser Datei geben!

Jeder andere Wert wird als verschlüsseltes Passwort interpretiert.

Lokale Passwörter - /etc/shadow 1

Da die Passwortdatei

/etc/passwd

von allen Benutzer gelesen werden können soll, ist es nicht ratsam, darin die Passwörter zu speichern. Daher gibt es die Möglichkeit, beim Passwort-Feld ein „x“ einzugeben, was für das System bedeutet, dass das eigentlich Passwort in der Shadowdatei

/etc/shadow

gespeichert ist.

Diese Datei hat die gleiche Syntax wie

/etc/passwd

, die Felder haben aber eine andere Bedeutung. Hier wieder eine typische Zeile (siehe auch

man 5 shadow

):

root:*:15779:0:99999:7: : : | | | | | | | | \

| | | | | | | \ Reserviertes Feld

| | | | | | \ Ablaufdatum des Kontos

(3)

| | | | | | \ Ablaufdatum des Kontos

| | | | | \ Passwortänderungszeitraum nach Passwortablauf (Tage) | | | | \ Warnzeitraum vor Passwortablauf (Tage)

| | | \ Maximales Passwortalter (Tage) | | \ Minimales Passwortalter (Tage) | \ Datum der letzten Passwortänderung \ verschlüsseltes Passwort

Benutzername

Lokale Passwörter - /etc/shadow 2

Die Datumsangaben erfolgen immer als Anzahl der Tage seit 1. Jänner 1970.

Das Feld für das verschlüsselte Passwort kann folgende Werte enthalten:

Kein Wert: Gleicher Effekt wie leeres Passwort-Feld in

/etc/passwd

.

Verschlüsseltes Passwort: Erkennt man daran, dass der Wert mit

$ID$

anfängt (

ID

gibt den

Verschlüsselungsalgorithmus an).

!...

: Fängt das Passwort-Feld mit einem Rufzeichen an, so ist das Konto gesperrt.

Andere Werte (z.B.

*

) zeigen ein ungültiges Passwort an; der Benutzer kann also nicht mit einem Passwort einloggen (aber eventuell mit anderen Methoden).

Lokale Gruppen - /etc/group

In dieser Datei sind eie Gruppen mit ihren Merkmalen gespeichert. Wie bei den Benutzer wird pro Zeile eine Gruppe definiert.

Eine typische Zeile sieht so aus:

adm:x:4:thomas,admin / | | \

Gruppenname / \ Liste von Gruppenmitgliedern Passwort GID

In der Datei

/etc/gshadow

könnten verschlüsselte Passwörter für Gruppen gesetzt werden. Es ist allerdings sehr unüblich, Passwörter für Gruppen zu vergeben.

Authentifikation/Autorisation mit PAM 1

Die Authentifikation (und ein Teil der Autorisation) erfolgt unter Linux fast immer über PAM (Pluggable Authentication Modules for Linux, siehe auch

man 7 pam

).

Es gibt vier unterschiedliche Bereiche innerhalb vom PAM:

account: Methoden zur Überprüfung des Kontos (Ist das Passwort abgelaufen? Darf der Benutzer auf das Service zugreifen?)

auth: Methoden zur Authentifizierung des Benutzer (z.B. über ein Passwort, eine ID-Karte oder einen Fingerabdruckscanner) password: Methoden zur Änderung der Authentifikation (z.B. ändern des Passworts)

session: Methoden, die es erlauben, vor und nach Erteilung des Zugriffs bestimmte Dinge zu tun (z.B. Loggen, wenn sich ein Benutzer an- bzw. abmeldet)

Die Konfiguration erfolgt durch Dateien im Verzeichnis

/etc/pam.d/

. Unter Ubuntu sind die Standardeinstellungen in den Dateien

common-account

,

common-auth

,

common-password

und

common-session

zu finden.

Authentifikation/Autorisation mit PAM 2

Einige PAM-Module kurz im Überblick (eine Liste aller Module bekommt man über

apt-cache search libpam

):

pam_unix: Das Standard-Unix-Modul. Es erlaubt die Authentifikation und Autorisation über die Passwort- und über die Shadowdatei.

pam_env: Setzen/Löschen von Umgebungsvariablen (verwendet die Datei

/etc/security/pam_env.conf

zur

Konfiguration).

pam_limits: Aktiviert Beschränkungen in Bezug auf Systemressourcen (z.B. CPU-Zeit; verwendet die Datei

/etc/security/limits.conf

zur Konfiguration).

pam_group: Dynamisches Zuweisung von Gruppen zu Benutzern (verwendet die Datei

/etc/security/group.conf

zur Konfiguration).

pam_cap: Zuweisen von „Fähigkeiten“ (verwendet die Datei

/etc/security/capabilities.conf

zur

Konfiguration).

(4)

pam_ldap: Authentifikation über einen LDAP-Verzeichnis-Server (z.B. OpenLDAP oder Microsoft Active Directory). Dieses Modul sollte man immer gemeinsam mit dem nss_ldap-Modul für den Name Service Switch verwenden.

Name Service Switch (NSS)

Der Name Service Switch (NSS) dient unter Linux dazu, verschiedene Quellen für Namensdienste zu konfigurieren. Unter Namensdienste fallen zum Beispiel Benutzerdaten, Gruppendaten, Passwortdaten und Host-Namen.

Konfiguriert wird der NSS über die Datei

/etc/nsswitch.conf

. Hier ein Ausschnitt aus dieser:

passwd: compat group: compat shadow: compat

hosts: files dns mdns4

In den ersten drei Zeilen wird für die Dienste passwd, group und shadow (i.e. Benutzer-, Gruppen- und Passwortdaten) das compat-Modul verwendet (d.h. die Daten werden von den oben besprochenen Dateien gelesen werden).

Die Auflösung der Host-Namen erfolgt zuerst durch die lokale Datei

/etc/hosts

, dann über das DNS-System und zum Schluss über einen Multicast DNS-Klienten.

Eine Auflistung aller vorhandenen Module bekommt man über

apt-cache search libnss

.

Allgemeine Befehle - getent

Allgemeine Befehle - id, groups

Befehle für Benutzerverwaltung - useradd

getent - Zeigt Datensätze aus einer Administrationsdatenbank an.

Die folgenden, über NSS konfigurierbaren Datenbanken können ausgelesen werden:

passwd

,

group

,

hosts

,

services

,

protocols

und

networks

.

Der Befehl ist besonders nützlich, wenn nicht nur lokale (d.h. am System definierte) Daten vorhanden sind, sondern auch externe Daten (z.B. aus einem LDAP-Verzeichnis).

$ getent passwd | head -n 3 root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh

$ getent group root root:x:0:

$ getent hosts

127.0.0.1 localhost 127.0.1.1 praxis

127.0.0.1 ip6-localhost ip6-loopback

»

»

»

id - Zeigt Benutzer- und Gruppeninformationen an.

Verwendet den aktuellen Benutzer oder den via Parameter angegebenen.

$ id

uid=1000(praxis) gid=1000(praxis) Gruppen=1000(praxis),4(adm),24(cdrom),27(sudo), 30(dip),46(plugdev),111(lpadmin),112(sambashare)

$ id root

uid=0(root) gid=0(root) Gruppen=0(root) groups - Zeigt die Gruppen eines Benutzers an.

Verwendet den aktuellen Benutzer oder den via Parameter angegebenen.

$ groups

praxis adm cdrom sudo dip plugdev lpadmin sambashare

$ groups root praxis root : root

praxis : praxis adm cdrom sudo dip plugdev lpadmin sambashare

»

»

»

»

useradd - Legt ein neues Benutzerkonto an.

Standardwerte für einige Optionen sind in

/etc/default/useradd

und

/etc/login.defs

hinterlegt.

Optionen:

-d Home-Verzeichnis

→ Home-Verzeichnis

-m

→ Home-Verzeichnis anlegen, Daten von Skeleton-Verzeichnis kopieren

-k Verzeichnis

→ Verzeichnis als Skeleton-Verzeichnis verwenden

-g GID

→ primäre Gruppe (GID oder Name)

-G Gruppe[,Gruppe...]

→ sekundäre Gruppen

-e Ablaufdatum

→ Ablaufdatum des Kontos

»

»

(5)

Unter Ubuntu (Debian) gibt es auch das Programm adduser, das ein freundlicheres Frontend für useradd und verwandte Befehle ist.

Befehle für Benutzerverwaltung - usermod

Befehle für Benutzerverwaltung - userdel

Befehle für Benutzerverwaltung - chsh, chfn

Befehle für Benutzerverwaltung - chage

-e Ablaufdatum

→ Ablaufdatum des Kontos

-s Shell

→ Login-Shell

$ useradd -d /home/leitnert -k /etc/skel_lehrer -m -g lehrer leitnert

$ getent passwd leitnert

leitnert:x:1001:1002::/home/leitnert:/bin/sh

»

usermod - Modifiziert ein Benutzerkonto.

Optionen:

-L

→ Benutzerpasswort sperren

-U

→ Benutzerpasswort entsperren

-g GID

→ primäre Gruppe ändern

-G Gruppe[,Gruppe...]

→ sekundäre Gruppen setzen

-l NeuerName

→ Benutzernamen ändern

-u UID

→ UID ändern (Dateien im Home-Verzeichnis bekommen die neue UID automatisch gesetzt)

-s Shell

→ Login-Shell ändern.

Aufpassen beim Ändern des Namens und der UID: Der Benutzer sollte nicht eingeloggt sein!

$ getent passwd leitnert

leitnert:x:1001:1002::/home/leitnert:/bin/sh

$ usermod -s /bin/bash -g adm leitnert

$ getent passwd leitnert

leitnert:x:1001:4::/home/leitnert:/bin/bash

»

»

»

userdel - Löscht ein Benutzerkonto.

Optionen:

-r

→ lösche das Home-Verzeichnis des Benutzers.

$ find /home/leitnert /home/leitnert

$ userdel -r leitnert

$ getent passwd leitnert

$ find /home/leitnert

find: "/home/leitnert": Datei oder Verzeichnis nicht gefunden

»

»

chsh - Ändert die Login-Shell.

Kann ein Benutzer selbst ausführen.

Die Datei

/etc/shells

wird konsultiert und nur die darin aufgelisteten Programme kann ein Benutzer als Login-Shell setzen.

Vor dem Ändern muss man sich authentifizieren.

chfn - Ändert die Informationen im GECOS-Feld.

Kann ein Benutzer selbst ausführen.

Vor dem Ändern muss man sich authentifizieren.

Was genau der Benutzer ändern darf, ist über den Schlüssel CHFN_RESTRICT in der Datei

/etc/login.defs

festgelegt.

»

»

»

»

»

»

chage - Ändert Passwortablaufinformation oder zeigt sie an.

Alle zusätzlichen Informationen, die in der Shadowdatei gespeichert werden, können geändert werden.

Optionen (Auszug):

-d Datum

→ Ändert das Datum der letzten Passwortänderung

-E Datum

→ Ändert das Ablaufdatum

-l

→ Zeigt die Passwortablaufinformationen an Ein normaler Benutzer kann nur die Option

-l

verwenden.

$ chage -l praxis

Last password change : Mär 17, 2013 Password expires : never

Password inactive : never

Account expires : Mär 20, 2013 Minimum number of days between password change : 0

»

»

»

»

(6)

Befehle für Benutzerverwaltung - passwd

Befehle für Gruppenverwaltung - groupadd, groupmod, groupdel

Copyright und Lizenz

Copyright: Thomas Leitner thomas.leitner@univie.ac.at Lizenz: Creative Commons CC BY-NC-SA

„Namensnennung-Keine kommerzielle Nutzung-Weitergabe unter gleichen Bedingungen 3.0 Österreich.“ - http://creativecommons.org/licenses/by-nc-sa/3.0/at/

Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

$ chage -d 2013-03-01 praxis

$ chage -l praxis | head -n 1

Last password change : Mär 01, 2013

passwd - Ändert das Passwort eines Benutzers.

Der Administrator kann ohne Wissen des Passworts das Passwort eines Benutzers ändern. Er muss sich auch nicht an die Passwortrichtlinien halten.

Ähnlich zum Befehl chage können auch Passwortablaufinformationen geändert werden.

$ passwd praxis

Ändern des Passworts für praxis.

(aktuelles) UNIX-Passwort: -->Aktuelles Passwort eingeben<--

Geben Sie ein neues UNIX-Passwort ein: -->Kurzes Passwort eingeben<-- Geben Sie das neue UNIX-Passwort erneut ein: -->Kurzes Passwort eingeben<-- Sie müssen ein längeres Passwort auswählen.

Geben Sie ein neues UNIX-Passwort ein: -->Langes Passwort eingeben<-- Geben Sie das neue UNIX-Passwort erneut ein: -->Langes Passwort eingeben<-- passwd: password updated successfully

$ passwd -l praxis

passwd: password expiry information changed.

$ passwd -S praxis

praxis L 03/01/2013 0 99999 7 -1

$ passwd -u praxis

passwd: password expiry information changed.

$ passwd -S praxis

praxis P 03/01/2013 0 99999 7 -1

»

»

»

groupadd - Legt eine neue Gruppe an.

Optionen:

-g GID

→ die GID der Gruppe.

$ groupadd lehrer

$ getent group lehrer lehrer:x:1002:

groupmod - Ändert Gruppeninformationen.

Optionen:

-g GID

→ ändert die GID,

-n Name

→ ändert den Gruppennamen.

$ groupmod -g 1515 -n teachers lehrer

$ getent group teachers teachers:x:1515:

groupdel - Löscht eine Gruppe.

$ groupdel teachers

$ groupdel praxis

groupdel: cannot remove the primary group of user 'praxis'

»

»

»

»

»

Referenzen

ÄHNLICHE DOKUMENTE

Password: leer: kein Pw, x: Pw steht in etc/shadow, sonst: verschlüsseltes Pw UID: Benutzernummer(Nichtnegative Zahl &lt; 64000, für normale Benutzer &gt; 100)

Nur dann können sie sicherstellen, dass es ein geteiltes Verständnis und eine gemeinsame Vision des Projekts gibt, wozu auch die geplante Nutzung der durch RCTs generierten Evidenz

Sicher ist: Für diese Länder ist der Trend zum Plurilateralismus vielleicht nicht ideal, aber immer noch besser, als wenn es nur eine stetig wachsende Zahl megaregionaler

Nicht berücksichtigt ist bei dieser Berechnung aller- dings, dass bereits nach zwei Dritteln dieser Zeit die Repair- mechanismen der Haut über- lastet sind und mit chronischen

Die Hälfte dieser Menschen wird neben der DR Kongo in Indien und Nigeria leben, Länder, welche aufgrund ihres Sozialproduktniveaus, wohl nicht mehr für multilaterale Hilfe

This raises questions about the (future) roles, mandates, and appropriate instruments in the governing bod- ies of the African Development Bank (AfDB), the Asian Development

Eine Regel besteht dabei aus einer oder mehreren Bedingungen und einem Ziel, das angibt, was mit einem passenden Paket gemacht werden soll.. Es gibt sehr viele Bedingungen, die

Damit ein Client weiß, wie der zu nutzende Server heißt, muss man in der Hauptkonfigurationsdatei im Block agent die Variable server auf die IP-Adresse (oder den DNS-Namen)