Unterschied zwischen su und sudo und Konfiguration von sudo in Linux

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.

Linux: su v/s sudo

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:

  1. Benutzername: Dies ist der Name des ‚sudo‚-Benutzers.
  2. Rechnername: Dies ist der Hostname, in dem der ‚sudo‚-Befehl gültig ist. Nützlich, wenn Sie viele Hostrechner haben.
  3. (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.
  4. 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/