Sudo und die Sache mit den Nutzerrechten

Bastelecke > Linux > Sudo

Zwar habe ich in einem vorherigen Kapitel bereits aufgezeigt wie es möglich ist einen Nutzeraccount zu erstellen, aber vielleicht fragt sich nun der Eine oder Andere wozu das ganze. Warum nicht einfach als root-User weiter arbeiten? Und wer ist überhaupt dieser root?

Unter Windows ist wohl eher "Administrator" ein Begriff. Es ist der Nutzeraccount im System, der grundsätzlich alles darf, der alles sieht und der das System nach Belieben verändern kann.

Wird in Linux eine Datei im Dateisystem gespeichert, so wird neben den Nutzdaten auch gespeichert wem diese Datei gehört und wer darauf zugreifen darf. Wer sie bearbeiten darf und wer darin enthaltenen Programmcode ausführen kann. Auch Programme, die im System ausgeführt werden, werden immer unter einem Benutzeraccount ausgeführt und sie haben somit die gleichen Rechte im System, wie der Nutzer selbst.

Und was spricht nun dagegen immer als root zu arbeiten, insbesondere wenn der Rechner nur von einem selbst genutzt wird? Es stellt aus mehrfacher Sicht eine Sicherheitslücke dar. Angefangen damit das wenn nun jemand aus dem Internet in den Rechner eindringen will, ist es für ihn am sinnvollsten zu versuchen das Passwort des root-Users zu erraten. Einerseits weiß man da ja schon den Nutzernamen und andererseits hat man eben da sämtliche Rechte. Das ist auch der Grund weshalb auf vielen Systemen eben dieser Nutzer für SSH-Zugriffe gesperrt ist, oder es sein sollte.

Lädt man sich nun versehentlich Schadcode runter, hat auch dieser Schadcode direkt kompletten Systemzugriff, da er eben mit root-Rechten ausgeführt wird. Der typische Verschlüsselungstrojaner hätte somit direkt alle erforderlichen Rechte um das gesamte System zu verschlüsseln.

Die konsequente Nutzung eines normalen Nutzeraccounts, und das Vermeiden des root-Nutzers selbst, ist einer von vielen Gründen dafür das Malware unter Linux sogut wie nie vorkommt, und wenn doch dann kaum nennenswerten Schaden anrichten kann. Zumindest in homogenen Linux-Systemen. Mittlerweile hat sich Microsoft da für sein Windows einiges von abgekupfert. Auch hier haben wir heute nur noch einen normalen Nutzeraccount und werden bei jeder Programminstallation gefragt ob wir dem Installer Adminstratorrechte zuweisen möchten. Das war hier nicht immer so. Diese Nutzerebene wurde erst mit Windows NT eingeführt und kam dann erst mit der Zusammenführung von Windows98 und NT4 in Windows2000 beim Heimnutzer an. Ganz im Gegensatz zu Linux, wo die Benutzerebene bereits seit der ersten Stunde fundamentaler Bestandteil des Betriebsystems ist.

Bei einer Debian-Installation wird bereits während der Installation ein Nutzeraccount angelegt. Ist das nicht der Fall, da wir ein vorinstalliertes Debian auf einem gemieteten V-Server übernehmen, oder uns ein Template in Proxmox installieren, müssen wir uns den Nutzeraccount erst noch selbst anlegen.

Um nun den Rechner aus eben diesen Nutzeraccount heraus administrieren zu können, um Programme zu installieren oder Konfigurationsdateien ändern zu können, kommt nun sudo ins Spiel.

Mit dem Programm Sudo lassen sich Programme unter einem anderen Nutzer ausführen, als der der gerade angemeldet ist. Sollte Sudo noch nicht installiert sein, müssen wir dieses zunächst nachholen. Gebt hierzu also in eurem root-Account folgende zwei Befehle ein:

apt update && apt upgrade -y

apt install sudo -y

Anschließend müssen wir unseren neuen Nutzeraccount noch dazu berechtigen Sudo zu verwenden. Geht hierzu also ins Sammelverzeichnis für die Konfigurationsdateien:

cd /etc

Und bearbeitet die sudo Konfiguration:

vim sudoers

(Solltet ihr VIM noch nicht kennen, lest bitte hier weiter: VIM Texteditor)

In dieser Datei sucht ihr nun folgenden Abschnitt:

# User privilege specification
root    ALL=(ALL:ALL) ALL

Und erweitert diese "Liste" mit euerem Nutzernamen in einer weiteren Zeile:

<euer_Nutzername>       ALL=(ALL:ALL) ALL

Jetzt noch speichern und beenden mit ":wq!" , danach können wir uns ausloggen:

logout

Und mit unseren eigenen Nutzer anmelden um dort fortzufahren.

 

Verwendung von Sudo

Wollen wir nun einen Befehl, unter unseren normalen Nutzeraccount, mit Administratorrechten ausführen, verwenden wir hierzu sudo. Um das System auf den aktuellen Stand zu bringen, schreiben wir von jetzt an also:

sudo apt update && sudo apt upgrade -y

Von jetzt an gehe ich davon aus das ihr unter eurem normalen Nutzeraccount arbeitet. Also werde ich bei weiteren Anleitungen auch dazu über gehen, sämtliche Befehle, die mit root-Rechten ausgeführt werden müssen, auch mit sudo zu schreiben. Arbeitet ihr weiter als root, könnt ihr die Befehle auch weiterhin ohne Sudo eingeben. Ich möchte aber aus Sicherheitsgründen dringend davon abraten.