Das Linux-System ist viel sicherer als jedes seiner Gegenstücke. Eine Möglichkeit, Sicherheit in Linux zu implementieren, besteht in der Benutzerverwaltungspolitik und den Benutzerberechtigungen, und normale Benutzer sind nicht berechtigt, Systemoperationen durchzuführen.
Wenn ein normaler Benutzer systemweite Änderungen vornehmen muss, muss er entweder den Befehl ‚su‚ oder ‚sudo‚ verwenden.

HINWEIS – Dieser Artikel ist eher auf Ubuntu-basierte Distributionen anwendbar, gilt aber auch für die meisten beliebten Linux-Distributionen.
‘su’ gegen ‘sudo’
‘su‘ zwingt Sie, Ihr root-Passwort mit anderen Benutzern zu teilen, während ‘sudo‘ es ermöglicht, Systembefehle ohne root-Passwort auszuführen. ‘sudo‘ ermöglicht es Ihnen, Ihr eigenes Passwort zur Ausführung von Systembefehlen zu verwenden, delegiert also Systemverantwortung ohne root-Passwort.
Was ist ‘sudo’?
‘sudo‘ ist ein Root-Binary setuid, das Root-Befehle im Auftrag autorisierter Benutzer ausführt und die Benutzer müssen ihr eigenes Passwort eingeben, um den Systembefehl gefolgt von ‘sudo‘ auszuführen.
Wer kann ‘sudo’ ausführen?
Wir können ‘/usr/sbin/visudo‘ ausführen, um die Liste der Benutzer hinzuzufügen/entfernen, die ‘sudo‘ ausführen können.
$ sudo /usr/sbin/visudo
A screen shot of ‘/usr/sbin/visudo‘ file, looks something like this:
Die sudo Liste sieht standardmäßig wie der folgende String aus:
root ALL=(ALL) ALL
Hinweis: Sie müssen root sein, um die Datei /usr/sbin/visudo zu bearbeiten.
Sudo-Zugriff erteilen
In vielen Situationen, der Systemadministrator, besonders wenn er neu in diesem Bereich ist, findet den String „root ALL=(ALL) ALL“ als Vorlage und gewährt anderen uneingeschränkten Zugriff, was potenziell sehr schädlich sein kann.
Die Bearbeitung der Datei ‚/usr/sbin/visudo‘ auf ein Format wie das folgende Muster umzustellen, kann wirklich sehr gefährlich sein, es sei denn, Sie vertrauen allen aufgelisteten Benutzern vollständig.
root ALL=(ALL) ALL adam ALL=(ALL) ALL tom ALL=(ALL) ALL mark ALL=(ALL) ALL
Parameter von sudo
A properly configured ‘sudo‘ is very flexible and number of commands that needs to be run may be precisely configured.
Die Syntax der konfigurierten ‚sudo‚-Zeile lautet wie folgt:
User_name Machine_name=(Effective_user) command
Die obige Syntax kann in vier Teile unterteilt werden:
- Benutzername: Dies ist der Name des ‚sudo‚-Benutzers.
- Rechnername: Dies ist der Hostname, in dem der ‚sudo‚-Befehl gültig ist. Nützlich, wenn Sie viele Hostrechner haben.
- (Effektiver Benutzer): Der ‚Effektive Benutzer‘, der berechtigt ist, die Befehle auszuführen. Diese Spalte ermöglicht es Ihnen, Benutzern das Ausführen von Systembefehlen zu erlauben.
- Befehl: Befehl oder eine Reihe von Befehlen, die der Benutzer ausführen darf.
Vorgeschlagene Lektüre: 10 nützliche Sudoers-Konfigurationen für das Einstellen von ’sudo‘ in Linux
Einige Situationen und die entsprechenden ‚sudo‚ Befehlszeilen:
Q1. Sie haben einen Benutzer mark, der ein Datenbankadministrator ist. Sie sollen ihm nur Zugriff auf den Datenbankserver (beta.database_server.com) geben, aber nicht auf einen anderen Host.
Für die obige Situation kann die ’sudo‘ Befehlszeile wie folgt geschrieben werden:
mark beta.database_server.com=(ALL) ALL
Q2. Sie haben einen Benutzer ‚tom‚, der Befehle als Benutzer außer root auf dem gleichen Datenbankserver ausführen soll, wie zuvor erklärt.
Für die obige Situation kann die ’sudo‘ Befehlszeile wie folgt geschrieben werden:
mark beta.database_server.com=(tom) ALL
Q3. Sie haben einen Sudo-Benutzer ‚cat‚, der nur den Befehl ‚dog‚ ausführen soll.
Um die obige Situation umzusetzen, können wir ’sudo‘ wie folgt schreiben:
mark beta.database_server.com=(cat) dog
Q4. Was ist, wenn dem Benutzer mehrere Befehle gewährt werden müssen?
Wenn die Anzahl der vom Benutzer auszuführenden Befehle unter 10 liegt, können wir alle Befehle hintereinander platzieren, mit Leerzeichen dazwischen, wie unten gezeigt:
mark beta.database_server.com=(cat) /usr/bin/command1 /usr/sbin/command2 /usr/sbin/command3 ...
Wenn diese Befehlsliste so umfangreich ist, dass es buchstäblich nicht möglich ist, jeden Befehl manuell einzugeben, müssen wir Aliase verwenden. Aliase! Ja, das Linux-Dienstprogramm, bei dem ein langer Befehl oder eine Liste von Befehlen als kleines und einfaches Stichwort bezeichnet werden kann.
A few alias Examples, which can be used in place of entry in ‘sudo‘ configuration file.
User_Alias ADMINS=tom,jerry,adam user_Alias WEBMASTER=henry,mark
WEBMASTERS WEBSERVERS=(www) APACHE Cmnd_Alias PROC=/bin/kill,/bin/killall, /usr/bin/top
Es ist möglich, eine Systemgruppen anstelle von Benutzern anzugeben, die dieser Gruppe angehören, indem einfach ‚%‘ wie unten angegeben angehängt wird:
%apacheadmin WEBSERVERS=(www) APACHE
Q5. Wie führt man einen ‚sudo‘-Befehl ohne Eingabe des Passworts aus?
Wir können einen ‚sudo‘-Befehl ohne Eingabe des Passworts ausführen, indem wir das Flag ‚NOPASSWD‘ verwenden.
adam ALL=(ALL) NOPASSWD: PROCS
Hier kann der Benutzer ‚adam‘ alle unter „PROCS“ aliased Befehle ausführen, ohne ein Passwort einzugeben.
Vorgeschlagene Lektüre: Lass Sudo dich beleidigen, wenn du ein falsches Passwort eingibst
„sudo“ bietet Ihnen eine robuste und sichere Umgebung mit viel Flexibilität im Vergleich zu ‚su‘. Außerdem ist die Konfiguration von „sudo“ einfach. Einige Linux-Distributionen haben „sudo“ standardmäßig aktiviert, während die meisten Distributionen von heute Sie dazu auffordern, es als Sicherheitsmaßnahme zu aktivieren.
Um einen Benutzer (bob) zu sudo hinzuzufügen, führen Sie einfach den folgenden Befehl als Root aus.
adduser bob sudo
Das war’s erstmal. Ich werde bald mit einem weiteren interessanten Artikel zurück sein. Bleibt dran und bleibt mit Tecmint verbunden. Vergesst nicht, uns euer wertvolles Feedback in den Kommentaren zu geben.
Source:
https://www.tecmint.com/su-vs-sudo-and-how-to-configure-sudo-in-linux/