Notice: Undefined index: string in /var/www/stefan/howtux.de/htdocs/article.php on line 49

Notice: Undefined index: settings in /var/www/stefan/howtux.de/htdocs/article.php on line 61
Home / Benutzerverwaltung / Als anderer Benutzer arbeiten mit su und sudo

Als anderer Benutzer arbeiten mit su und sudo

Kategorie: BenutzerverwaltungErstellt: 02.10.2007 - 23:58 Geändert: 30.10.2007 - 11:01
Autor: Stefan Abu Salah
0Generell ist es sehr ratsam unter Linux alle Aufgaben, welche ein normaler Benutzer erledigen kann, auch als solcher auszuführen und nur genau dann wenn Systemverwalterrechte benötigt werden "mal eben" root zu werden. Der große Vorteil an dieser Herangehensweise ist, dass man es Viren, Trojanern und anderer Schadsoftware schwer macht die Kontrolle über das System zu bekommen und sich dort einzunisten. Man muss sich darüber im Klaren sein, dass sämmtliche Anwendungen mit Systemverwalterrechten laufen, welche ich als root starte, hierzu gehört z.B. auch ein evtl. gestarteter Webbrowser oder ein eMail-Programm. Auf diese Weise schafft man Angreifern eine mächtige Schnittstelle zum System.
Natürlich muss es möglich sein administrative Aufgaben am System durchzuführen, ohne dieses Risiko in Kauf nehmen zu müssen. Hierzu bietet Linux Tools an, welche das Wechseln des Benutzeraccounts und damit auch der Rechte, ermöglichen.

su


Möchte man nun eine Aufgabe erledigen, welche Systemverwalterrechte benötigt, so kann man sich mit dem Programm su (substitute user identity) temporär diese Rechte holen. Natürlich bleiben alle bisher gestarteten Anwendungen und Shells hiervon unberührt.
Gibt man als Benutzer eines Systems den Befehl su ohne weiteren Parameter an, so verlangt die Shell nach dem Passwort des Systemverwalters. Sofern man dieses korrekt eingibt erhält man eine root-Shell. Innerhalb dieser root-Shell ist es nun mit root-Rechten möglich alle denkbaren Änderungen am System durchzuführen oder Programme zu starten. Hat man alle administrativen Aufgaben erledigt, kann man einfach den "gefährlichen Bereich" wieder verlassen indem man die root-Shell mit dem Kommando exit verlässt.
Beispiel: Benutzerwechsel mit su

stefan@troubadix/home/stefan$ su
Password:
root@london:/home/stefan# exit
stefan@troubadix/home/stefan$

Ein Minuszeichen (-) hinter su veranlasst das Starten der Sitzung in einer Login-Shell. Somit landet man hiernach in dem Homeverzeichnis des neuen Benutzers.


Mit su kann man jedoch nicht nur root werden. Es ist möglich sich eine Sitzung unter jeder anderer Benutzeridentität zu schaffen, solange man das jeweilige Passwort kennt. Der Benutzer root braucht für den Wechsel in die "Haut" eines anderen Benutzers das Benutzerpasswort nicht zu kennen. Dies würde ohnehin dem Gedanken von geheimen Passwörtern widersprechen. Außerdem verliert root auf diese Weise seine Systemverwalterrechte und damit die große Macht am System.
Beispiel: Benutzerwechsel mit su

stefan@troubadix/home/stefan$ su -
Password:
root@london:~# su - markus
markus@troubadix/home/markus$

Häufig führt das Starten von Programmen unter grafischen Umgebungen (KDE,Gnome,...) aus einer root-Shell heraus zu Fehlermeldungen, sobald diese Programme auf die Grafische Oberfläche zugreifen wollen, z.B. um ein Programmfenster zu öffnen. Dies liegt an der Architektur des X-Servers unter UNIX/Linux. Generell ist es nur dem Besitzer der X-Session erlaubt auf seinen X-Server zuzugreifen. Es ist jedoch möglich dieses Recht anderen Benutzern zu erteilen (siehe: xhost,...).


Einige Optionen von su:
-, -l, --login
mache die Shell zur Loginshell
-c, --commmand=KOMMANDO
gib ein einzelnes KOMMANDO an die Shell



sudo


sudo (substitute user do, oft aber fälschlicherweise als 'super user do' bezeichnet) ist ein Befehl unter Unix und unixartigen Betriebssystemen wie GNU/Linux, der dazu benutzt wird, Prozesse mit den Rechten eines anderen Benutzers, beispielsweise des Superusers root, als denen des gerade angemeldeten Benutzers zu starten. Der dauerhafte Wechsel der Identität erfolgt durch sudo -s oder mit dem Befehl su.
Man benutzt sudo anstelle von su, um bestimmten Benutzern (unter Umständen) die Möglichkeit zu geben, z. B. bestimmte Programme mit Root-Rechten auszuführen, jedoch keine kompletten Root-Rechte vergeben zu müssen. Die Sicherheitsrichtlinien sind bei GNU Linux/*nix-artigen Systemen in der Datei /etc/sudoers gespeichert, die natürlich nur vom Superuser root editiert werden darf. [wikipedia]

/etc/sudoers


Welcher Benutzer welchen Befehl auf einem System mit sudo ausführen darf, steht in der Datei /etc/sudoers. Hier gibt es viele Möglichkeiten den Zugriff auf gewisse Programme (oder alle) zuzulassen. Die folgenden Beispiele zeigen einige hiervon:
Grundledegender Aufbau der Konfigurationsdatei sudoers:

user host = commands

Im Unterschied zu su verlangt sudo nicht nach dem root-Passwort, sondern nach dem eigenen Passwort.


Einfaches Beispiel:

# Benutzer stefan darf Benutzer hinzufügen und entfernen:
stefan localhost = /usr/sbin/adduser, /usr/sbin/deluser

Einfaches Beispiel für das Anwenden von sudo auf Gruppen:

# Alle Benutzer der Gruppe priv dürfen den Befehl ifconfig ausführen,
# und das ohne Eingabe eines Passwortes:
%priv ALL = NOPASSWD:/sbin/ifconfig

Aliase in der /etc/sudoers:

# Anlegen von Aliasen für User und Gruppen
User_Alias USER = stefan, markus, denis
User_Alias PASSWORDS = stefan
Cmnd_Alias USERCOMMANDS = /sbin/adduser, /sbin/deluser
Cmnd_Alias PASSWORDCOMMANDS = /usr/bin/passwd [a-zA-Z0-9_-]*, !/usr/bin/passwd root

USER localhost = USERCOMMANDS
PASSWORDS localhost = PASSWORDCOMMANDS

In der Datei /etc/sudoers wird festgelegt, welche User oder Gruppen bestimmte Programme mit welchen Rechten ausführen dürfen. Die Syntax ist ziemlich kompliziert, insbesondere, wenn man mehrere Programme erlauben will. Eine einfache Variante ist z.B. '%admin ALL = (ALL) NOPASSWD: ALL'. Dies bedeutet, dass die Mitglieder der Gruppe 'admin' ohne Eingabe ihres persönlichen Passworts alle Kommandos mit Root-Rechten ausführen dürfen. [wikipedia]
sudo am Beispiel von (K)Ubuntu:<br>

/etc/sudoers:
...
# User privilege specification
root ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
...


stefan@brian:~$ id
uid=1000(stefan) gid=1000(stefan) Gruppen=4(adm),...,109(lpadmin),111(scanner),113(admin),1000(stefan)
stefan@brian:~$ sudo bash
Password:
root@brian:~#

Man sollte als Systemverwalter besonders vorsichtig mit sudo umgehen. Stellen Sie sich einen normalen Benutzer vor, dem von root sudo-Rechte auf den Editor vi gegeben wurden.


Einige Optionen:
-l
Anzeigen der möglichen per sudo nutzbaren Befehle

-v
sudo merkt sich ein einmal eingegebenes Passwort gewöhnlich fünf Minuten,
um diese Zeitspanne zu verändern kann man die Option -v nutzen.



Notice: Undefined variable: urli in /var/www/stefan/howtux.de/htdocs/classes.php on line 240
Bookmark auf del.icio.usBookmark auf Mister WongBookmark auf BlinklistBookmark auf GoogleBookmark auf LinkarenaBookmark auf YiggBookmark auf FolkdBookmark auf Yahoo
Home / Benutzerverwaltung / Als anderer Benutzer arbeiten mit su und sudo
simplum