SUID und SGID in Linux erklärt mit Beispielen
On Oktober 1, 2021 by adminStellen Sie sich eine Situation vor, in der Sie ein Skript oder eine ausführbare Datei haben, die immer von einem bestimmten Benutzer ausgeführt werden muss, einfach weil dieser Benutzer die richtigen Zugriffsrechte für die vom Skript durchgeführten Aktionen hat. Sie möchten auch, dass andere Benutzer dieses Skript ausführen können, aber letztendlich muss es von dem ursprünglichen Benutzer des Skripts ausgeführt werden (da nur dieser Benutzer die erforderlichen Berechtigungen für die durchgeführten Aktionen hat).
Standardmäßig werden Linux-Anwendungen und -Programme mit genau denselben Berechtigungen des Benutzers ausgeführt, der sie ausführt. Aus diesem Grund brauchen wir eine gute Lösung für die oben beschriebene Situation (d.h.: Alle Benutzer sollten in der Lage sein, ein Programm, das einem bestimmten Benutzer gehört, so auszuführen, als ob der Besitzer es selbst ausführen würde).
Hier kommt SUID ins Spiel. SUID ist nichts anderes als ein spezielles Berechtigungsbit, das in Linux vorhanden ist und das dies mit viel Leichtigkeit erreicht.
Wenn Sie der Besitzer einer ausführbaren Datei sind, werden andere Benutzer mit Hilfe der gesetzten SUID-Berechtigung die ausführbare Datei mit Ihrer Erlaubnis ausführen und nicht mit der ihren.
SUID wird normalerweise in Linux verwendet, um während der Ausführung vorübergehend erhöhte Rechte zu gewähren. Diese Erhöhung der Berechtigungen ist nicht dauerhaft. Es handelt sich um eine vorübergehende Erhöhung der Rechte, die nur während der Ausführung des Programms/Skripts gilt.
Beispiele für ausführbare Dateien in Linux mit gesetztem SUID-Berechtigungsbit
Lassen Sie uns dies anhand eines Beispiels verstehen. Aus der obigen Liste der ausführbaren Dateien ist /usr/bin/passwd etwas, das von allen Benutzern im System ausgeführt werden sollte (weil alle Benutzer in der Lage sein sollten, ihr eigenes Passwort zu ändern). Wenn Sie nicht wissen, wie Passwörter in Linux funktionieren, empfehle ich Ihnen, den folgenden Artikel zu lesen.
Lesen Sie: Wie Passwörter in Linux funktionieren
Um das Passwort eines Benutzers zu ändern, muss der Benutzer die Datei /etc/passwd, /etc/shadow in Linux bearbeiten. Dies ist jedoch nur für den Benutzer root erlaubt. Das ist der Grund, warum das SUID-Bit auf die Datei /usr/bin/passwd angewendet wird. Da root der Eigentümer dieser Datei ist und SUID auf diese Datei gesetzt ist, wird jeder Benutzer, der den Befehl /usr/bin/passwd ausführt, diesen als root-Benutzer ausführen. Sehen wir uns das einmal praktisch an.
Unten sehen Sie den Befehl passwd, der vom Benutzer sarath ausgeführt wird. Sehen wir uns an, ob der passwd-Befehl als Root-Benutzer ausgeführt wird.
$ passwdChanging password for user sarath.Changing password for sarath.(current) UNIX password:
Öffnen wir ein anderes Terminal und rufen ps aux commad auf, um zu sehen, ob der passwd-Befehl mit dem Root-Benutzer ausgeführt wird. Dies kann wie unten gezeigt geschehen.
$ ps aux | grep passwdroot 24531 0.0 0.0 156928 1664 pts/0 S+ 07:24 0:00 passwd
Sie können deutlich sehen, dass der passwd-Befehl mit dem Root-Benutzer ausgeführt wird (sichtbar im ersten Feld der obigen Ausgabe). Ähnlich wie der Befehl passwd wird jeder Befehl aus der zuvor gezeigten Liste der SUID-angewendeten Dateien immer mit der Berechtigung des Eigentümers der Datei ausgeführt, unabhängig davon, welcher Benutzer ihn ausführt.
Beachten Sie auch die Tatsache, dass sogar der Ping-Befehl SUID ist (siehe die anfängliche Liste oben), da die Ausführung von PING mehrere Netzwerkoperationen erfordert, die nur von root ausgeführt werden können.
Wie konfiguriert man SUID in Linux?
Die Konfiguration von SUID für Ihre benötigten Dateien/Skripte ist nur einen CHMOD-Befehl entfernt.
$ chmod u+s /path/to/file/or/executable
Ersetzen Sie „/path/to/file/or/executable“ in dem obigen Befehl durch den absoluten Pfad des Skripts, für das Sie SUID benötigen. Dies kann auch mit der numerischen Methode von chmod erreicht werden.
$ chmod 4755 /path/to/file/or/executable
Die erste „4“ in „4755“ bedeutet SUID. Ein weiteres Beispiel für eine numerische Methode ist unten dargestellt.
$ chmod 4750 /path/to/file/or/executable
Bei der numerischen Methode wird den anderen für die Datei benötigten Berechtigungen einfach die 4 vorangestellt.
Wie kann man überprüfen, ob SUID auf eine Datei angewandt wird oder nicht?
Sie können überprüfen, ob SUID auf eine Datei angewandt wird oder nicht, indem Sie den Befehl ls wie unten gezeigt verwenden.
root@ip-10-12-2-217:# cd /usr/binroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwsr-xr-x 1 root root 47032 Jul 15 2015 passwd
Der Befehl ls -l sollte Ihnen zeigen, ob SUID auf eine Datei angewendet wird oder nicht. Schauen Sie einfach auf das erste Feld der Ausgabe von ls -l. Das s in -rwsr-xr-x steht für das SUID-Bit. In einigen Fällen sehen Sie ein großes S anstelle des kleinen s, das wir oben gesehen haben. Das große S zeigt an, dass für die Datei bzw. das Skript keine Ausführungserlaubnis besteht.
root@ip-10-12-2-217:/usr/bin# chmod -x passwdroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwSr--r-- 1 root root 47032 Jul 15 2015 passwd
Aus der obigen Ausgabe ist klar ersichtlich, dass das Entfernen der Ausführungserlaubnis für die Datei /usr/bin/passwd die Ausgabe von ls -l in ein großes S verwandelt hat. Wird die Ausführungserlaubnis für diese Datei wieder hinzugefügt, erscheint ein kleines s, wie unten gezeigt.
root@ip-10-12-2-217:/usr/bin# chmod +x passwdroot@ip-10-12-2-217:/usr/bin# ls -l passwd-rwsr-xr-x 1 root root 47032 Jul 15 2015 passwd
Wie findet man alle Dateien, bei denen das SUID-Bit in Linux aktiviert ist?
Sie können den folgenden find-Befehl verwenden, um alle Dateien im System zu suchen, bei denen das SUID-Bit aktiviert ist. Wenn Sie den Befehl find noch nicht kennen, empfehle ich Ihnen, den folgenden Artikel zu lesen.
Lesen: Find-Befehl in Linux mit Beispielen
root@ip-10-12-2-217:~# find / -perm -4000 -exec ls -l {} \;
Ersetzen Sie das erste / im obigen Befehl durch den gewünschten Ort, um alle SUID-Dateien an diesem Ort zu finden. Um zum Beispiel alle Dateien mit SUID in /usr/bin zu finden, führen Sie den folgenden Befehl aus.
Bitte denken Sie daran, dass das SUID-Bit bei Verzeichnissen in Linux ignoriert wird.
SGID ist SUID sehr ähnlich. Der einzige Unterschied besteht darin, dass das Skript/die Datei, für das/die SGID konfiguriert wurde, mit den gleichen Rechten des Gruppenbesitzers ausgeführt wird.
Wenn Sie SGID auf Verzeichnissen einrichten, werden alle Dateien oder Verzeichnisse, die innerhalb dieses Verzeichnisses erstellt werden, der gleichen gemeinsamen Gruppe gehören (Gruppenbesitzer des Verzeichnisses, in dem SGID konfiguriert ist).
Beispiele für SGID-Dateien in Linux
Wie konfiguriert man SGID in Linux?
Ähnlich wie SUID kann SGID mit dem Befehl chmod wie folgt konfiguriert werden.
root@localhost:~# chmod g+s /path/to/file
Ersetzen Sie „/pfad/zu/datei“ im obigen Befehl durch den absoluten Pfad des Skripts, für das Sie ein SGID-Bit benötigen. Dies kann auch mit der numerischen Methode von chmod erreicht werden (siehe unten).
root@localhost:~# chmod 2755 /path/to/file
Wie kann man überprüfen, ob SGID auf eine Datei oder ein Skript angewendet wird?
Ähnlich wie bei SUID können Sie den Befehl ls -l für eine Datei/ein Verzeichnis ausführen, um herauszufinden, ob SGID aktiviert ist oder nicht. Das unten gezeigte Beispiel zeigt dasselbe.
root@ip-10-12-2-217:# cd /usr/binroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-sr-x 1 root shadow 54968 Jul 15 2015 chage
Der kleine s-Teil des ersten Feldes in der about-Ausgabe (-rwxr-sr-x) zeigt das SGID-Bit an. Ähnlich wie bei SUID, wenn Sie keine Ausführungsberechtigung für die Gruppe haben, wird es ein großes S statt eines kleinen sein, wie unten gezeigt.
root@ip-10-12-2-217:/usr/bin# chmod g-x chageroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-Sr-x 1 root shadow 54968 Jul 15 2015 chage
Und wenn Sie die Ausführungsberechtigung für die Gruppe aktivieren, wird es ein kleines s sein (unten gezeigt.)
root@ip-10-12-2-217:/usr/bin# chmod g+x chageroot@ip-10-12-2-217:/usr/bin# ls -l chage-rwxr-sr-x 1 root shadow 54968 Jul 15 2015 chage
Schreibe einen Kommentar