root

Aus Mikiwiki
Version vom 11. Juli 2014, 18:11 Uhr von Michi (Diskussion | Beiträge) (→‎Fragen und Antworten)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

root ist der Benutzername desjenigen Benutzers (auch "superuser" genannt) mit den maximalen Systemverwalterrechten bei einem Unix-Betriebssystem. Das Benutzerkonto des Benutzers "root" wird auch "root account" genannt.

In unixoiden Betriebssystemen wird jedes Benutzerkonto mit einer Zahl assoziiert; der sogenannten "User ID / UID". Das erste Benutzerkonto auf jedem System hat die UID 0 und besitzt historisch bedingt alle Rechte über die Ressourcen des Systems. Da dieses Konto für die Installation des Rechners notwendig ist und daher alle Dateien und Verzeichnisse aus diesem Benutzerkonto hervorgehen, kann hier von einer "Wurzel" (engl. root) gesprochen werden. Nach dem Beenden der Installation kann dieses Konto zur Verwaltung (Administration) des Systems verwendet werden.

Der Benutzer mit den root-Rechten hat als einziger Benutzer auf einem Unix-Rechner uneingeschränkte Rechte, die sich insbesondere bei Dateiverwaltung (Zugriffsrechte usw.) und Benutzung von Systemressourcen (Arbeitsspeicher, Geräte) auszeichnet. Eine besondere Position wird dem Benutzer "root" auch bei der Verwaltung des Kernels sowie der Prozesskontrolle eingeräumt: So kann dieser Benutzer sämtliche Prozesse nach Belieben verändern und damit beispielsweise den Rechner neu starten. Bei einem Kernel, der dynamisch ladbare Kernelmodule unterstützt, kann der Benutzer "root" indirekt mit dem Kernel-Space auf nächster Ebene agieren.

Sollte ein böswilliger Cracker das Passwort des Benutzers "root" herausfinden, so ist dieser daher vollständig kompromittiert. Um im Anschluss an einen erfolgreichen Angriff die eigene Anwesenheit vor dem Systemadministrator zu verbergen, nutzen Angreifer sogenannte Rootkits.

Üblicherweise unterscheidet sich die Eingabeaufforderung des Benutzers "root" von der anderer Benutzer durch eine abschliessende Raute ("#"), statt einem Dollarzeichen ("$"). Man spricht in diesem Falle von einem root-Prompt.

Fragen und Antworten

Test, ob der aktuelle Benutzer "root" ist

# Deduce the effective user id:
#   1. POSIX-style, the id program
#   2. the old whoami program
#   3. last gasp, check if we have write permission on /dev
#
euid=$(id|sed -e 's/.*uid=[0-9]*(\([^)]*\)).*/\1/')
test -z "$euid" && \
  euid=$((whoami) 2>/dev/null) test -z "$euid" && \
  test -w /dev && \
  euid=root if [ "$euid" != "root" ]; then
    echo "Sorry, but you must run this script as the super-user!"
    exit 1
  fi

Aufruf eines Skripts ohne Rechte als Benutzer "root"

Angenommen es gibt im Verzeichnis "/tmp" ein Skript namens "test.sh", ohne jegliche Rechte, egal wem es gehört.

root@abc:/tmp# ls -al test.sh
---------- 1 mik mik 38 Jul 11 19:54 test.sh

Das Skript hat folgenden Inhalt:

#!/bin/bash
echo "Aufruf ist erfolgt"

Mit folgenden beiden Befehlen kann das Skript auch als Benutzer "root" nicht aufgerufen werden:

root@abc:/tmp# /tmp/test.sh
bash: /tmp/test.sh: Keine Berechtigung
root@abc:/tmp# ./test.sh
bash: ./test.sh: Keine Berechtigung

Mit den folgenden Befehlen kann Benutzer "root" es aber durchaus aufrufen. Ein vorheriges Berechtigen mit chmod kann man sich also sparen. "sh" ist meist ohnehin bloss ein Link auf "bash". Der Punkt (".") ist in der Bash ein Synonym für "source":

root@abc:/tmp# sh test.sh
Aufruf ist erfolgt
root@abc:/tmp# bash test.sh
Aufruf ist erfolgt
root@abc:/tmp# source /tmp/test.sh
Aufruf ist erfolgt
root@abc:/tmp# source ./test.sh
Aufruf ist erfolgt
root@abc:/tmp# source test.sh
Aufruf ist erfolgt
root@abc:/tmp# . /tmp/test.sh
Aufruf ist erfolgt
root@abc:/tmp# . test.sh
Aufruf ist erfolgt
root@abc:/tmp# . ./test.sh
Aufruf ist erfolgt

All das gilt natürlich nur für den superuser "root", der sich also nicht selber entmachten kann.

Weblinks

Herausgeber Sprache Webseitentitel Anmerkungen
Wikipedia ger Root-Accountwbm Enzyklopädischer Artikel