Wie die Verwendung von SUID, SGID und Sticky Bit unter Linux

0
1764
Fatmawati Achmad Zaenuri/Shutterstock

SUID -, SGID-und Sticky-Bits sind leistungsfähige spezielle Berechtigungen Sie können festlegen, für ausführbare Dateien und Verzeichnisse unter Linux. Wir teilen die Vorteile und die möglichen Nachteile der Verwendung von Ihnen.

Sie sind Bereits im Einsatz

Sicherheit in einem multiuser-Betriebssystem stellt einige ungelöste Rätsel. Nehmen Sie die (scheinbar) basic Konzept der Passwörter, zum Beispiel. Sie müssen alle gespeichert werden, so dass jedes mal, wenn jemand sich anmeldet, kann das system vergleichen, das Passwort, tippt er auf die gespeicherte Kopie. Offensichtlich, denn die Passwörter sind der Schlüssel zu dem Königreich, das Sie geschützt werden muss.

Auf Linux, gespeicherte Passwörter geschützt sind, haben zwei Möglichkeiten: Sie sind verschlüsselt, und nur jemand mit root-rechten die Datei zugreifen können, enthält die Passwörter. Das klingt gut, aber es stellt ein Dilemma: Wenn man nur mit root-rechten kann der Zugriff auf gespeicherte Passwörter, wie diejenigen, die nicht haben Zugriff auf Ihre Passwörter ändern?

Erhebt Ihr Status

In der Regel, Linux-Befehle und Programme ausführen, mit dem gleichen Satz von Berechtigungen, wie die person, die startet das Programm. Als root läuft der passwd-Befehl, um ein Kennwort zu ändern, läuft es mit root-Berechtigungen. Das bedeutet, dass der passwd-Befehl können frei auf die gespeicherten Passwörter in der Datei /etc/shadow.

Was ideal wäre ist ein System, in dem jeder auf dem system starten könnte das passwd-Programm, aber haben Sie das passwd Programm behalten root-rechten auszuführen. Dies würde die jeden befähigen zu ändern Sie Ihr eigenes Passwort.

Das oben beschriebene Szenario ist genau das, was das Set-User-ID-bit (SUID) tut. Es führt Programme und Befehle mit den Berechtigungen für den Eigentümer der Datei, anstatt die Berechtigungen der person, die startet das Programm.

Sie Erhebt den Status des Programms

Es ist ein weiteres Dilemma, obwohl. Die person muss verhindert werden, von der Einmischung in das Passwort einer anderen Person. Linux beinhaltet die SUID-Schema, das erlaubt, die Anwendungen ausführen, die mit einer Reihe von vorübergehend ausgeliehen Berechtigungen—aber das ist nur die Hälfte der security-Geschichte.

Der Kontrollmechanismus, der verhindert, dass jemand von der Arbeit mit einer anderen person, die das Kennwort enthalten ist, innerhalb der passwd-Programm, nicht das Betriebssystem und das SUID-Schema.

Programme, die mit erhöhten Berechtigungen ausführen kann, die ein Sicherheitsrisiko darstellen, wenn Sie nicht mit einem “security-by-design” – Mentalität. Das bedeutet, dass die Sicherheit ist die erste Sache, die Sie betrachten, und dann bauen Sie auf, dass. Nicht schreiben Sie Ihre Programm, und versuchen Sie dann, um ihm einen Mantel der Sicherheit hinterher.

Der größte Vorteil von open-source-software ist, kann man sich den source-code selbst oder beziehen Sie sich auf Vertrauenswürdige peer-reviews von ihm. In den source-code für das passwd-Programm, gibt es Prüfungen, so dass Sie sehen können, ob die person, die das Programm root ist. Verschiedene Fähigkeiten sind erlaubt, wenn jemand root (oder jemand mit sudo).

Dies ist der code, der erkennt, ob jemand root ist.

Der folgende Code ist ein Beispiel, in dem das berücksichtigt wird. Da root ändern können jedes Kennwort, das Programm nicht die Mühe mit den Kontrollen, es führt in der Regel zu sehen, welche Passwörter die person verfügt über die Berechtigung ändern. So, für root, es überspringt diese Prüfungen und beendet die überprüfung der Funktion.

Mit der core-Linux-Befehle und-Dienstprogramme, können Sie sicher sein, Sie haben die Sicherheit, gebacken in Sie und dass der code überprüft wurde, viele Male. Natürlich gibt es immer die Gefahr von noch unbekannten exploits. Allerdings, patches oder updates sind schnell zu erscheinen, um Zähler neu erkannten Schwachstellen.

Es ist software von Drittanbietern—vor allem einer, der nicht open source—man muss sehr vorsichtig sein, über die Verwendung von SUID mit. Wir sagen nicht: tun Sie es nicht, aber wenn Sie das tun, werden Sie wollen, stellen Sie sicher, es wird nicht setzen Ihr system auf Gefahr. Sie wollen nicht elevate die Privilegien eines Programms, die nicht korrekt, sich selbst zu regieren, sich selbst und die person, die es.

Linux-Befehle Verwenden, SUID

Im folgenden werden einige der Linux-Befehle, die Verwendung des SUID-bit geben Sie den Befehl mit erhöhten Privilegien bei der Ausführung durch einen normalen Benutzer:

ls -l /bin/su
ls -l /bin/ping
ls -l /bin/mount
ls -l /bin/umount
ls -l /usr/bin/passwd

Hinweis: die Dateinamen sind rot markiert, der anzeigt, dass das SUID-bit gesetzt ist.

Die Berechtigungen auf eine Datei oder ein Verzeichnis sind in der Regel vertreten durch drei Gruppen von drei Zeichen: rwx. Diese stand für Lesen, schreiben und ausführen. Wenn die Buchstaben, die vorhanden sind, die Genehmigung erteilt worden ist. Wenn ein Bindestrich (-) statt eines Briefes vorhanden ist, obwohl die Genehmigung noch nicht gegeben.

Es gibt drei Gruppen, für die diese Berechtigungen (von Links nach rechts): diejenigen, die sich für den Eigentümer der Datei, für die Mitglieder der der Datei, die Gruppe, und für andere. Wenn das SUID-bit ist gesetzt auf eine Datei, ein “s” steht für den Besitzer die Berechtigung zum ausführen.

Wenn das SUID-bit ist gesetzt auf eine Datei, die nicht ausführbare Funktionen, die einen Großbuchstaben “S” kennzeichnet diese.

Werfen wir einen Blick auf ein Beispiel. Regelmäßige Nutzer dave Arten der passwd-Befehl:

passwd

Der passwd-Befehl fordert dave für seine neue Kennwort ein. Wir können mit dem Befehl ps zu sehen, die details der ablaufenden Prozesse.

Wir verwenden ps mit grep in einem anderen terminal-Fenster, und suchen Sie nach der passwd-Prozess. Wir werden auch die-e (jeder Prozess) und -f (full-format) Optionen mit ps.

Wir geben Sie den folgenden Befehl ein:

ps -e -f | grep passwd

Zwei Linien sind gemeldet, von denen die zweite ist die grep-Prozess suchen-Befehle mit der Zeichenfolge “passwd” enthalten. Es ist die erste Zeile, die uns interessiert, obwohl, weil, dass ist der, den man für die passwd-Prozess dave ins Leben gerufen.

Wir können sehen, dass der passwd-Prozess ausgeführt wird, der gleiche ist, wie es wäre, wenn die Wurzel hatte Sie ins Leben gerufen.

Das setzen der SUID-Bit

Es ist einfach zum ändern der SUID-bit mit chmod. Die u+s-Symbol-Modus setzt das SUID-bit und das US-Symbol-Modus löscht das SUID-bit.

Um zu illustrieren, werden einige Konzepte des SUID-bit, haben wir ein kleines Programm namens htg. Es ist in das root-Verzeichnis des dave-Benutzer, und es muss auch nicht das SUID-bit gesetzt. Wenn es ausgeführt wird, zeigt es die Reale und effektive user-id (UID).

Die Reale UID der person gehört, die lanciert das Programm. Die effektive ID ist das Konto, das Programm verhält sich, als ob es eingeführt worden war, durch.

Wir geben Sie den folgenden:

ls -lh htg
./htg

Wenn wir laufen, wird die lokale Kopie des Programms, sehen wir die realen und effektiven IDs festgelegt dave. Also, es verhält sich genauso wie ein normales Programm sollte.

Wir kopieren es in die /usr/local/bin-Verzeichnis, sodass andere Benutzer es verwenden können.

Wir geben die folgende, mit chmod setzen Sie das SUID bit, und dann überprüfen, ob es gesetzt wurde:

sudo cp htg /usr/local/bin
sudo chmod u+s /usr/local/bin/htg
ls -hl /usr/local/bin/htg

So, das Programm ist kopiert, und das SUID-bit gesetzt ist. Wir werden es wieder laufen, aber dieses mal wir werden führen Sie die Kopie in /usr/local/bin Ordner:

htg

Obwohl dave startete das Programm, die effektive ID des root-Benutzers. Also, wenn mary startet das Programm, das gleiche passiert, wie unten dargestellt:

htg

Die real ID ist Maria, und die effektive ID ist root. Das Programm läuft mit den Berechtigungen des root-Benutzers.

RELATED: Wie Verwenden Sie das chmod-Kommando unter Linux

Das SGID-Bit

Das Set Group ID (SGID) Bits ist sehr ähnlich wie das SUID-bit. Wenn das SGID-bit ist gesetzt auf eine ausführbare Datei, die effektive Gruppe auf die Gruppe der Datei. Der Prozess läuft mit den Berechtigungen der Mitglieder von der Datei, die Gruppe, anstatt die Berechtigungen der person, die es gestartet hat.

Wir gezwickt unserer htg-Programm, so zeigt es die effektive Gruppe zu sein. Ändern wir die Gruppe der htg-Programm auf den Benutzer mary ‘ s “default” – Gruppe, Maria. Wir werden auch die USA und g+s symbolische Modi mit chown entfernen Sie das SUID-bit und setzen Sie das SGID.

Dazu geben wir die folgenden:

sudo chown root:mary /usr/local/bin/htg
sudo chmod uns,g+s /usr/local/bin/htg
ls -lh /usr/local/bin/htg

Sie können sehen, das SGID-bit-gekennzeichnet durch das “s” in der Gruppe Berechtigungen. Beachten Sie auch, die Gruppe wird von Maria und der name der Datei ist nun gelb markiert.

Bevor wir das Programm ausführen, lassen Sie uns festzustellen, welche Gruppen dave und mary gehören. Wir werden den id-Befehl mit der-G – (Gruppen) – option zum drucken aller Gruppen-IDs. Dann werden wir laufen die htg-Programm wie dave.

Wir geben Sie die folgenden Befehle:

id -G dave
id -G Maria
htg

Die ID der Standard-Gruppe für Maria ist 1001, und die wirksame Gruppe der htg-Programm ist 1001. Also, obwohl es wurde von dave, es läuft mit den Berechtigungen der Mitglieder in der Maria-Gruppe. Es ist das gleiche, als wenn dave hatte sich die Maria-Gruppe.

Jetzt wenden wir das SGID-bit auf einem Verzeichnis. Zunächst erstellen wir ein Verzeichnis namens “Arbeit” und dann die Gruppe “freak.” Wir werden dann festlegen, das SGID-bit auf das Verzeichnis.

Wenn wir verwenden Sie ls, um überprüfen Sie die Einstellungen des Verzeichnisses, verwenden wir auch die -d (directory) – option, so sehen wir die details des Verzeichnisses aus, nicht dessen Inhalt.

Wir geben Sie die folgenden Befehle:

sudo mkdir Arbeit
sudo chown dave:geek Arbeit
sudo chmod g+s funktioniert
ls -lh -d-arbeiten

Das SGID-bit-und “geek” – Gruppe. Diese haben Einfluss auf alle Elemente angelegt, die im Werk-Verzeichnis.

Wir geben Sie den folgenden, um geben Sie das Arbeitsverzeichnis erstellen Sie ein Verzeichnis namens “demo”, und überprüfen Sie seine Eigenschaften:

cd-Arbeit
mkdir demo
ls -lh -d-demo

Das SGID-bit-und “geek” – Gruppe sind, werden automatisch auf den “demo” – Verzeichnis.

Lassen Sie uns geben Sie den folgenden, um erstellen Sie eine Datei mit dem Befehl touch und überprüfen Sie seine Eigenschaften:

touch useful.sh
ls -lh useful.sh

Die Gruppe der neuen Datei wird automatisch auf “freak.”

RELATED: Wie Nutzen Sie das chown-Kommando auf Linux

Das Sticky Bit

Das sticky bit bekommt seinen Namen von seiner historischen Zweck. Wenn es auf eine ausführbare Datei, ist es gekennzeichnet werden, um das Betriebssystem, das den text Teile der ausführbaren Datei gehalten werden soll, im Tausch, macht Ihr re-use schneller. Auf Linux, das sticky-bit nur auf eine Verzeichnis—Einstellung, die es auf eine Datei, würde keinen Sinn machen.

Wenn Sie das sticky bit auf einem Verzeichnis, die Menschen können nur Dateien löschen, die Ihnen gehören in diesem Verzeichnis. Sie können keine Dateien löschen, die gehören zu jemand anderem, egal, welche Kombination von Datei-Zugriffsrechte auf die Dateien.

Dies ermöglicht Ihnen, ein Verzeichnis zu erstellen, dass jeder—und die Prozesse, die Sie starten können, verwenden Sie als freigegebene Datei-Speicherung. Die Dateien sind geschützt, weil, wieder, niemand löschen kann jemand anderes die Dateien.

Erstellen wir nun ein Verzeichnis namens “gemeinsam.” Wir werden das o+t Symbol-Modus mit dem Befehl chmod gesetzt sticky-bit auf das Verzeichnis. Wir werden dann sehen die Berechtigungen auf das Verzeichnis, sowie das /tmp-und /var/tmp-Verzeichnisse.

Wir geben Sie die folgenden Befehle:

mkdir shared
sudo chmod o+t shared
ls -lh -d shared
ls -lh -d /tmp
ls -lh -d /var/tmp

Wenn das sticky bit gesetzt ist, wird das executable-bit für die “anderen” set-Datei Berechtigungen auf “t”. Der name der Datei ist ebenfalls in blau hervorgehoben.

Die /tmp und /var/tmp-Ordner sind zwei Beispiele für Verzeichnisse alle Datei Berechtigungen für Eigentümer, Gruppe und andere (das ist, warum Sie grün markiert). Sie sind als freigegebene Speicherorte für temporäre Dateien.

Mit diesen Berechtigungen, jeder, sollte, theoretisch, in der Lage sein, etwas zu tun. Aber das sticky bit überschreibt Sie, und niemand kann Sie löschen eine Datei, die nicht zu ihm gehören.

Erinnerungen

Das folgende ist eine kurze Checkliste, was wir oben beschrieben wird für zukünftige Referenz:

  • SUID funktioniert nur auf Dateien.
  • Sie können sich bewerben, SGID-Verzeichnisse und-Dateien.
  • Sie können nur das sticky-bit auf Verzeichnisse.
  • Wenn das “s”, “g” oder “t” – anzeigen erscheinen in Großbuchstaben, das Ausführungs-bit (x) noch nicht gesetzt wurde.

LESEN SIE WEITER

  • › Wie Installieren und Verwenden der Microsoft Edge auf Android
  • › So Aktivieren Sie DNS Über HTTPS im Firefox
  • › Windows 10: Neues Startmenü Kann Töten, Live-Kacheln für Immer
  • › Wie setzen Sie Ihr Windows-PIN, Wenn Sie Es Vergessen
  • › Wie Sie Hintergrund-Apps Laufen, Wenn Microsoft Rand Geschlossen Ist