root werden:
<div id='tutorialrahmen'>
Was wird gemacht?: Dargestellt wird, was die Rolle des root beinhaltet und wie man sie einnimmt.
Zielgruppe: (ambitionierte) Anfänger bis Fortgeschrittene
</div>
Das Kleingedruckte am Anfang
Auch wenn viele die Benutzer-Rolle root
mit der Rolle eines Administrators (Mitglied derGruppe admin
oder, unter anderen Systemen, der Gruppe wheel
), und diese leider häufig wiederum mit der Person, die das Passwort kennt, verwechseln, so ist ist doch ein gewaltiger Unterschied zwischen diesen Rollen. Kein vernünftiger Bankdirektor würde nachts den Schlüssel zum Safe fröhlich aller Welt zeigen, während er sich in eher dubiosen Gegenden aufhält. Dass manche den root-Account aktivieren und dann auch noch damit surfen oder nur mal schnell eine Datei runterladen steht dem in nichts nach! Man sieht das Ergebnis jeden Tag unter Windows...
Was hier propagiert wird, ist eine Realisierung des sogenannten Rollen-basierten Zugangs zur Systemverwaltung, der vor allem für wichtige Systeme unerlässlich ist; wie weit man das auf seinem Rechner, der vielleicht noch nicht mal am Netz hängt, umsetzt, ist eine ganz andere Sache. Daher in Kurzfassung: Den root
account muss man nicht aktivieren.
Wer Lust hat, die Angriffe von Skript-Kiddies sich mit anzusehen, kann mittels HenWen bzw. Snort sich alle Verbindungen ins und vom Netz untersuchen lassen.
Die meisten Wörterbuchangriffe fallen aber auch schon im secure.log auf: Mittels
sudo grep root /var/log/secure.log
kann man sich alle Versuche von root sich anzumelden ausgeben lassen. Eine Zeile
... com.apple.SecurityServer: authinternal failed to authenticate user root
spricht meist Bände. ...
Im Terminal
Es gibt zwei Standard-Möglichkeiten innerhalb des Terminals eine root shell zu erhalten, in der man gänzlich ohne Einschränkungen und Sicherungen arbeiten kann.
Die sudo
-Variante
Mittels eines Voranstellens von sudo
, kann man einen Befehl mit den Rechten eines anderen Benutzers ausführen. Wer hier welche Befehle mit welchen Rechten ausführen darf wird in der so genannten sudoers
-Liste (/etc/sudoers
) geregelt, von der man aber unter Mac OS X die Finger lassen sollte. Sollte man dennoch das Bedürfniss haben was zu ändern, muss dies mit dem Befehl visudo
machen. In einem Standard Mac OS X System dürfen root
und Administratoren (Gruppe admin
) alles, als jeder Benutzer und überall, d.h. auch auf jedem untergeordneten Rechner (root ALL=(ALL) ALL
und %admin ALL=(ALL) ALL
.) Man muss den ersten solchen Befehl in einer kurzen Zeitspanne mit seinem Passwort allerdings bestätigen. Im Umkehrschluss dürfen die anderen nur mit ihren eigenen Rechten agieren.
Ein Administrator kann somit durch sudo bash
eine bash
Shell starten. Alle Programme die in dieser gestartet werden haben keinerlei Einschränkungen der Rechte. Allgemein sollte man aber
mittels sudo -s
eine Standard-Shell bevorzugen. Unter Mac OS X 10.3 üblicherweise ebenfalls die bash
(echo $SHELL
). Analog gingen natürlich auch sudo open -a ...
. Den Möglichkeiten sind nur Vernunftsgrenzen gesetzt.
Die su
-Variante
Der Befehl "su <username>
" erlaubt es, sich in einer Kommandozeilenumgebung eine andere Identität zu geben. Gibt man keinen Usernamen an, d.h. su
, so erhält man volle root
-Rechte, sofern root
sich einloggen kann. (su
steht fuer Substitute User).
Für root
gibt es keine Enschränkungen bzgl. des Gebrauchs von su
. Somit erhält root
mit su
eine root
-shell ohne Passwortabfrage; mittels su <username>
kann er jede beliebiege Identität annehmen.
Um mit su
zu root
zu werden muss man root
kein Passwort setzen. Im Allgeimeinen sollte man das auch unterlassen. Jeder äußere Angreifer schießt auf den root
-account; um einen Administrator-Account zu knacken, muss man diesen nämlich erst einmal kennen.
Mittels su
kann man eine root
-Shell erhalten, sofern root
sich einloggen kann. Dann gehen aber auf allen anderen Diensten, die aktiviert wurden, root
Zugriffe: ssh root@localhost
, ftp root@localhost
, AFP, ...
Die sudo su
-Variante
Nach dem oben gesagten, kann sich nun jeder überlegen, daß mittels der Kombination
sudo su
jeder Administrator eine root
-shell erhalten kann, die er mit seinem eigenen Passwort bestätigen muß. Mittels
sudo su <username>
kann jeder Administrator jede andere Identität annehmen.
Innerhalb des Finders
Werden irgendwelche Updates fällig, so fragt der Finder nach dem Namen und dem Passwort eines Administrators. In einer schönen Verpackung läuft hier genau das Pendant zu sudo
ab. Da so ziemlich alle relevanten Programme diese Verkapselung beherschen, reicht es, wenn man auch einen Administrator-account hat. Man muss also noch nicht einmal als Administrator angemeldet sein!
Will man aber dennoch ein Programm mit den Rechten von root
starten, so kann man zum Beispiel mittels
sudo open -a /Applications/TextEdit.app
in einem Terminal-Fenster eine Anwendung, hier TextEdit, starten, die mit allen Rechten läuft. Da Mac OS X nur eine grafische Schnittstelle kennt, werden diese Programme ausserdem immer dem aktiven Benutzer angezeigt.
Wer jetzt noch immer nicht überzeugt ist und weiß was er tut, kann zum Beispiel mittels des Programms NetInfoManager aus den Dienstprogramme root
ein Passwort und damit die Möglichkeit zum Einloggen geben: Unter "Sicherheit" kann man ein Root-Kennwort vergeben, welches sich von Eurem eigenen Kennwort unterscheiden sollte! Dort kann man root
auch wieder deaktivieren.
Allgemein, wird ein account dadurch aktiviert/deaktiviert, dass er ein gültiges/ungültiges Passwort erhält. Üblicherweise stellt man ein '*' dem hash-code des Passworts in der shadow Liste voran. Das geht natürlich auch mittels nicl
.
Links
- Die Homepage der
sudo
Programmierer: http://www.courtesan.com/sudo/ - Nicht Mac OS X spezifische Informationen in WikiPedia zu
sudo
: http://de.wikipedia.org/wiki/Sudo - Nicht Mac OS X spezifische Informationen in WikiPedia zu
root
: http://de.wikipedia.org/wiki/Superuser