Haben Sie sich jemals in einer Situation befunden, in der Sie eine Aufgabe auf einem Linux-System ausführen mussten, jedoch mit einer frustrierenden Zugriffsverweigerung konfrontiert wurden? Nun, sagen Sie auf Wiedersehen zu diesen Sorgen und begrüßen Sie die Welt der speziellen Berechtigungen in Linux!
Dieses Tutorial ist Ihr Ticket, um die Feinheiten der speziellen Berechtigungen in Linux – Klebriger Bit, Set User ID (SUID) und Set Group ID (SGID) – zu beherrschen. Diese speziellen Berechtigungen bieten ein höheres Maß an Sicherheitskontrolle.
Lesen Sie weiter und verwalten Sie Ihre Dateien sicher mit Präzision und Vertrauen!
Voraussetzungen
Bevor Sie in die Details der speziellen Berechtigungen in Linux einsteigen, stellen Sie sicher, dass Sie einen Linux-Computer haben. Dieses Tutorial verwendet Ubuntu 22.04 LTS (Jammy Jellyfish) für praktische Demonstrationen.
Ausführen von Dateien mit speziellen Berechtigungen in Linux (SUID)
Linux-Dateiberechtigungen bestimmen in der Regel die Fähigkeit eines Benutzers, eine Datei basierend auf seinen eigenen Berechtigungen und denen seiner Gruppe zu lesen, zu schreiben oder auszuführen. Es gibt jedoch Situationen, in denen ein Benutzer eine Datei mit den Berechtigungen des Dateieigentümers anstelle seiner eigenen ausführen muss.
Beispielsweise nehmen Sie ein Programm, das nur von Root-Benutzern ausgeführt werden kann, aber ein normaler Benutzer muss es für eine spezifische Aufgabe ausführen. In solchen Fällen wird SUID unbezahlbar.
Um zu sehen, wie SUID-Berechtigungen festgelegt werden, befolgen Sie diese Schritte:
1. Öffnen Sie das Terminal und führen Sie die folgenden Befehle aus, um einen Benutzer (useradd
) namens A-Benutzer
(beliebig) zu erstellen und ihm ein Passwort (passwd
) zu geben.

2. Führen Sie anschließend den folgenden stat
-Befehl aus, um die vorhandenen Berechtigungen des cat
-Befehls anzuzeigen.
Machen Sie sich die Zugriffsberechtigungen unten zur späteren Vergleichung notwendig:
- 0755 – Erlaubt die Ausführung der Datei mit den Berechtigungen ihres Besitzers und gewährt Nicht-Privilegierten erhöhte Berechtigungen beim Ausführen der Datei.
- -rwxr-xr-x – Setzt die Berechtigung für den Besitzer zum Lesen, Schreiben und Ausführen der Datei (rwx), während Gruppenmitglieder und andere Benutzer die Datei lesen und ausführen können (r-x und r-x).

cat
command3. Führen Sie nun den untenstehenden chmod
-Befehl aus, der keine Ausgabe liefert, aber das SUID-Bit auf den cat
-Befehl setzt.
Dieser Befehl ermöglicht es dem cat
-Befehl, mit den Berechtigungen des Dateibesitzers anstelle der Berechtigungen des Benutzers, der den Befehl ausführt, ausgeführt zu werden.
? Beachten Sie, dass die Verwendung von SUID mit Vorsicht erfolgen sollte, da dies potenziell Sicherheitsrisiken mit sich bringen kann, wenn es nicht ordnungsgemäß implementiert wird. Stellen Sie sicher, dass Sie SUID nur auf vertrauenswürdige Befehle und Dateien anwenden.
4. Nachdem Sie das SUID-Bit festgelegt haben, führen Sie den folgenden stat
-Befehl aus, um das SUID-Bit zu überprüfen, indem Sie die Berechtigungen des cat
-Befehls erneut überprüfen.
Bei Erfolg sehen Sie das Folgende, wo Sie einen Vergleich mit den Informationen durchführen, die Sie in Schritt zwei notiert haben:
- 0755 geändert auf 4755, wobei die Zahl 4 das SUID-Bit repräsentiert.
- -rwxr-xr-x geändert auf -rwsr-xr-x, wobei s den Ausführungsberechtigungsbereich des Benutzers repräsentiert (x) entsprechend.

5. Führen Sie den folgenden cat
-Befehl aus, um die Berechtigung des aktuell angemeldeten Benutzers für den Zugriff auf die /etc/shadow
-Datei zu testen. Diese Datei ist eine kritische Systemdatei, die verschlüsselte Benutzerpasswörter und verwandte Informationen speichert, auf die nur ein Root-Benutzer zugreifen kann.
Standardmäßig ermöglicht der cat
-Befehl das Anzeigen des Inhalts einer Datei in Linux. Dieses Verhalten trifft jedoch nicht immer auf jede Datei zu.
Die unten stehende Meldung erscheint, da der aktuelle Benutzer keine Berechtigung zum Zugriff auf die Datei hat.

6. Führen Sie nun jeden Befehl unten aus, um (su
) zum neuen Benutzer (A-Benutzer
) zu wechseln und versuchen Sie erneut, auf die Datei /etc/shadow
zuzugreifen.
Diesmal wird der cat
-Befehl mit den Berechtigungen des Dateibesitzers (normalerweise root) ausgeführt, anstatt mit den Berechtigungen des Benutzers, der den Befehl ausgeführt hat.
Da Sie A-Benutzer vorübergehend die Berechtigung zum Lesen des Inhalts dieser Datei erteilt haben, erhalten Sie eine Ausgabe wie die untenstehende.

7. Aus Sicherheitsgründen führen Sie die folgenden Befehle aus, um aus dem aktuellen Benutzer (A-Benutzer) auszusteigen und die Berechtigungen des cat
-Befehls auf ihren ursprünglichen Zustand zurückzusetzen.

cat
command8. Führen Sie abschließend den folgenden Befehl aus, um zu überprüfen, ob das SUID-Bit entfernt wurde.
Beachten Sie, dass das SUID-Bit 4 und s nicht mehr in den Zugriffsberechtigungen vorhanden sind.

Aktivieren von kollaborativen Arbeitsabläufen in Linux-Verzeichnissen (SGID)
Dateien mit speziellen Berechtigungen in Linux über SUID auszuführen, funktioniert zweifellos gut. Aber was ist, wenn Sie auf kollaborative Arbeitsabläufe abzielen, bei denen mehrere Benutzer an Projekten zusammenarbeiten? In der Regel müssen Sie sicherstellen, dass neu erstellte Dateien das Gruppenbesitzrecht des übergeordneten Verzeichnisses erben.
Wenn Sie mit diesem Szenario konfrontiert werden, erweist sich das SGID als Spielveränderer. Diese leistungsstarke Funktion vereinfacht die Verwaltung gemeinsamer Ressourcen und verbessert gruppenbasierte Arbeitsabläufe in Linux-Umgebungen.
Um zu sehen, wie SGID funktioniert, erstellen Sie eine Gruppe, fügen Benutzer hinzu, setzen SGID-Berechtigungen auf ein Verzeichnis und testen Sie dessen Funktionalität wie folgt:
1. Führen Sie die folgenden Befehle aus, um sich als Root-Benutzer anzumelden und eine neue Gruppe namens demo
(beliebig) zu erstellen. Diese Gruppe wird verwendet, um die SGID-Funktionalität zu testen.
Diese Befehle führen keine

2. Führen Sie anschließend die folgenden Befehle aus, um zwei Benutzer (userA
und userB
) zu erstellen, die Sie zur Simulation einer kooperativen Umgebung verwenden.

3. Nachdem Sie neue Benutzer erstellt haben, führen Sie die folgenden usermod
-Befehle aus, die keine Ausgabe auf dem Terminal erzeugen, aber die Benutzer (userA
und userB
) zur Gruppe demo
hinzufügen.
4. Führen Sie nun jeden der folgenden Befehle aus, um ein Verzeichnis (mkdir
) namens /demo-dir
(beliebig) zu erstellen, und setzen Sie die Benutzer- und Gruppenberechtigungen des Verzeichnisses auf userA
bzw. demo
.
? Bei erfolgreicher Ausführung erzeugen diese Befehle keine Ausgabe, was für dieses Tutorial gilt.
5. Führen Sie als nächstes den folgenden ls
-Befehl aus, um die Berechtigungen des Verzeichnisses /demo-dir
anzuzeigen.
Die Ausgabe unten bestätigt, dass der Benutzer des Verzeichnisses /demo-dir auf userA und die Gruppe auf demo gesetzt ist.

6. Mit bestätigten Berechtigungen führen Sie den chmod
-Befehl unten aus, um das SGID-Bit im Verzeichnis /demo-dir/
wie folgt zu setzen:
g+s
– Set the SGID bit on the/demo-dir/
directory.o-rwx
– Remove all permissions (read, write, execute) for others.u+rwx
– Grant read, write, and execute permissions to the owner.g+rwx
– Grant read, write, and execute permissions to the group.
7. Sobald SGID gesetzt ist, führen Sie den folgenden Befehl aus, um die Berechtigungen des Verzeichnisses /demo-dir
zu überprüfen.
Bei Erfolg sehen Sie das SGID-Bit, dargestellt durch die Zahl 2
vor der oktalen Modus-Berechtigung und s
an der Stelle der Gruppenbesitzer-Ausführungsrechte (x
) (rws
).

8. Führen Sie anschließend jeden Befehl unten aus, um ein Verzeichnis /home
für userA
zu erstellen.
9. Führen Sie die folgenden Befehle aus, um zu userA
zu wechseln (su
) und eine Datei (touch
) namens textA.txt
(beliebig) im Verzeichnis /demo-dir
zu erstellen.
Diese Befehle geben keine Ausgabe aus (was für dieses Tutorial gilt), aber Sie überprüfen die Berechtigungen der Datei im nächsten Schritt.
10. Führen Sie den folgenden ls
-Befehl aus, um die Berechtigungen der Datei textA.txt
anzuzeigen.
Unten ist die Gruppenbesitzer der Datei textA.txt demo, die die primäre Gruppe des Erstellers, userA, ist. Mitglieder der Gruppe demo können die Datei lesen und ändern, während andere sie nur lesen können.
Um sicherzustellen, dass neue Dateien im Verzeichnis /demo-dir das Gruppenbesitz des Verzeichnisses erben, sollte ein SGID-Bit auf dem Verzeichnis gesetzt werden, wie in den folgenden Schritten beschrieben.

11. Jetzt die folgenden Befehle aufrufen, um aus dem aktuellen Benutzer (userA) auszusteigen und das SGID-Bit (chmod g+s
) im Verzeichnis /demo-dir
zu setzen.

12. Sobald das SGID gesetzt ist, den folgenden Befehl ausführen, um das hinzugefügte SGID-Bit im Verzeichnis /demo-dir
zu überprüfen.
Wie unten gezeigt, werden Sie feststellen, dass das SUID-Bit 2 hinzugefügt wurde und es ein s an der Stelle des Gruppenbesitzer-Ausführungsbereichs gibt. Diese Ausgabe bestätigt, dass das SGID-Bit erfolgreich auf das /demo-dir-Verzeichnis gesetzt wurde.

13. Als nächstes zurück zu userA
wechseln und eine weitere Datei namens testA.txt
(beliebig) im Verzeichnis /demo-dir
erstellen.
14. Nach der Erstellung den folgenden ls
-Befehl ausführen, um den Besitz der neuen Datei (testA.txt
) zu überprüfen.
Wenn der SGID wie erwartet funktioniert, zeigt die Ausgabe, dass während BenutzerA der Eigentümer ist, die Gruppenzugehörigkeit aufgrund des gesetzten SGID-Bits am Verzeichnis /demo-dir auf demo liegt.

15. Erstellen Sie jetzt ein /home
-Verzeichnis für BenutzerB
, um die SGID-Funktionalität weiter zu testen.
16. Wechseln Sie zu BenutzerB
und erstellen Sie eine Datei namens testB.txt
(beliebig) im gleichen Verzeichnis /demo-dir
.

17. Zeigen Sie (ls
) die Informationen zur neuen Datei (testB.txt
) an.
Überprüfen Sie das Eigentum der Datei testB.txt.

Schutz von Dateien in Verzeichnissen (Sticky Bit)
Die Aktivierung von gemeinsamen Arbeitsabläufen in Linux-Verzeichnissen fördert Teamarbeit und nahtlose Zusammenarbeit. Wenn jedoch eine sichere Umgebung für die effektive Verwaltung von Dateien geschaffen werden muss, kommen die Berechtigungen des Sticky Bits ins Spiel.
Indem Sie das Sticky Bit setzen, geben Sie im Grunde genommen dem Dateibesitzer, Verzeichnisbesitzer oder Root-Benutzer die „Schlüssel zum Schloss“. Dadurch wird sichergestellt, dass nur sie die Befugnis haben, die Datei innerhalb des Verzeichnisses zu löschen oder umzubenennen, was einen zusätzlichen Schutz für sensible Daten bietet.
Um Sticky Bit-Berechtigungen festzulegen, müssen Sie zunächst ein freigegebenes Verzeichnis mit den folgenden Schritten erstellen:
1. Melden Sie sich als Benutzer root an und erstellen Sie ein (gemeinsames) Verzeichnis (mkdir
), in dem mehrere Benutzer Dateien erstellen können.
2. Führen Sie anschließend die unten stehenden Befehle aus, um die Berechtigungen des /shared-dir
-Verzeichnisses so zu ändern, dass jedem Schreibrechte gewährt werden.
Die erste Zahl (1
) in 1777
setzt das Sticky Bit, während der Rest (777
) das Verzeichnis für jeden lesbar, beschreibbar und ausführbar macht.
Die folgenden sind Funktionen oder Attribute des Sticky Bits in einem Linux-System:
Feature | Function |
Directory Protection | When the Sticky Bit is set on a directory, it allows only the owner of a file within that directory to delete or rename their own files. Other users, even if they have write permissions to the directory, cannot delete or rename files owned by other users. |
Shared Directories | The sticky bit is handy for directories that are shared among multiple users. For example, on a system with a /tmp directory used by all users to store temporary files, setting the Sticky Bit prevents users from accidentally or maliciously deleting files owned by other users. |
Im letzten Teil des Berechtigungsfeldes sehen Sie den Buchstaben ‚t‚, der darauf hinweist, dass das Sticky Bit auf das /shared-dir-Verzeichnis gesetzt ist.

3. Wechseln Sie zu BenutzerA
und erstellen Sie eine Datei namens DateiA.txt
(beliebig) im Verzeichnis /shared-dir
:
4. Melden Sie sich von BenutzerA ab, wechseln Sie zu BenutzerB
und erstellen Sie eine weitere Datei namens DateiB.txt
(beliebig) im selben /shared-dir
-Verzeichnis.
5. Jetzt beenden Sie BenutzerB
, wechseln zu BenutzerA
und versuchen, die Datei fileB.txt
von BenutzerB
zu löschen.
Sie erhalten eine Ausgabe wie unten dargestellt, da nur der Dateibesitzer Änderungen vornehmen oder die Datei löschen kann.

6. Führen Sie abschließend die folgende Befehlsliste (ls
) aus, um alle Dateien im freigegebenen Verzeichnis (/shared-dir
) aufzulisten.
Wenn die Berechtigungen für den Sticky Bit funktionieren, sehen Sie, dass die von BenutzerB erstellte Datei fileB.txt sicher und unversehrt ist und nicht gelöscht wurde.

Schlussfolgerung
Beim Abschluss dieser Erkundung spezieller Berechtigungen in Linux haben Sie ein robustes Set von Tools freigeschaltet: das SUID, SGID und Sticky Bit. Bewaffnet mit diesem Wissen können Sie jetzt den Zugriff feinabstimmen und Ihre Dateien präzise schützen.
Aber hören Sie hier nicht auf! Warum nicht versuchen, ein freigegebenes Verzeichnis mit SGID einzurichten und experimentieren, wie Dateien Gruppenbesitz erben? Die Linux-Welt liegt Ihnen zu Füßen, und mit jedem Unterfangen werden Sie die Kunst der Systemsicherung mit Finesse meistern!
Source:
https://adamtheautomator.com/special-permissions-in-linux/