Wie lösche ich die Berechtigung "s" für ein Verzeichnis unter Linux?

24

Ich habe ein Verzeichnis, das mit der Berechtigungsmaske angezeigt wird drwsrwsr-x. Beim Versuch die Berechtigungen auf 755das S zurückzusetzen bleibt noch.

Was ist das "s" und warum kann ich die Berechtigungen nicht auf 775 ( drwxrwxr-x) zurücksetzen ?

Matt Elhotiby
quelle

Antworten:

25

Die s, die Sie an der Position "Ausführen" in der Benutzer- und Gruppenspalte sehen, sind die Bits SetUID (Benutzer-ID bei Ausführung festlegen) und SetGID (Gruppen-ID bei Ausführung festlegen).

Unix-Dateiberechtigungen sind eigentlich eine 4-stellige Oktalzahl SUGO

  • S steuert die Bits SetUID (4), SetGID (2) und "Sticky" (1)
  • U steuert Lese- (4) / Schreib- (2) / Ausführungs- (1) Bits für den Dateieigentümer
  • G steuert die Lese- / Schreib- / Ausführungsbits für die Dateigruppe
  • O steuert die Lese- / Schreib- / Ausführungsbits für alle anderen.

Mit chmod ug-s directory, oder können Sie die setuid-Bits aus Ihrem Verzeichnis entfernenchmod 0755 directory

Weitere Informationen finden Sie in der Manpage für chmodund auf dieser Wikipedia-Seite zum SetUID-Bit .

Hrvoje Špoljar
quelle
Es ist "sgid" (kein "u").
Bis auf weiteres angehalten.
"was ist der drwsrwsrwx?" <- erneut prüfen
Hrvoje Špoljar
6
chmod 0755ist nicht das setuid Bit löschen, zumindest nicht auf Linux. Ich teste derzeit auf anderen Systemen.
FUZxxl
1
POSIX gibt an, dass die Implementierung für andere Dateitypen als normale Dateien definiert ist, unabhängig davon, ob im chmodOktamalmodus die Bits setuid, setgid und vtx gelöscht werden.
FUZxxl
2
Um das setuid-Bit in einem Verzeichnis unter Linux zu löschen, verwenden Sie chmod 00755; siehe unix.stackexchange.com/q/393531/46851
Roger Lipscombe
23

Setuid und Setgid

setuid und setgid (Abkürzung für Set User ID bei der Ausführung und Set Group ID bei der Ausführung) sind Unix-Zugriffsrechte-Flags, mit denen Benutzer eine ausführbare Datei mit den Berechtigungen des Eigentümers oder der Gruppe der ausführbaren Datei ausführen können. Sie werden häufig verwendet, um Benutzern auf einem Computersystem das Ausführen von Programmen mit vorübergehend erhöhten Berechtigungen zu ermöglichen, um eine bestimmte Aufgabe auszuführen. Die angegebenen Rechte für Benutzer- oder Gruppen-IDs sind zwar nicht immer erhöht, mindestens jedoch spezifisch.

Um die Bits setuid und setgid numerisch zu entfernen, müssen Sie dem Bitmuster ein 0(zB: 0775wird 00775) voranstellen .

Führen Sie Folgendes aus, um setuid und setgid zu löschen:

chmod 00775 path

oder

chmod a-st path
ooshro
quelle
Die Datei ist im Verzeichnis nicht gespeichert
Hrvoje Špoljar
1
ein verzeichnis ist auch eine datei in einem unix-dateisystem, was laut ooshro völlig korrekt ist
lynxman 23.02.11
ja, es ist alles eine Datei, aber die Beschreibung passt nicht, da Sie nicht etwas ausführen, das wie drwxrwxr-x aussieht: |
Hrvoje Špoljar
In Unix ist die Inode das, was die Berechtigungen erhält.
Chris
2
GNU chmod löscht die Bytes setuid und setgid in Verzeichnissen nicht, wenn Sie es mit einem Oktamalmodus ausführen. POSIX erlaubt dieses Verhalten.
FUZxxl
2

Zur Antwort von ooshro hinzufügen ...

Wenn Sie suid- oder sgid-Berechtigungen für ein Verzeichnis verwenden, haben alle Dateien, die in diesem Verzeichnis erstellt wurden, denselben Eigentümer (if suid) oder dieselbe Gruppe (sgid) wie das betreffende Verzeichnis.

Ich benutze das für meine Heim-Samba-Freigabe. Das Basisverzeichnis gehört dem Benutzer nobody und der Gruppe olympia, und die Berechtigungen sind 2770. Sie müssen sich also in der Gruppe olympia befinden, um etwas unter diesem Verzeichnis zu lesen oder zu schreiben, und es stellt sicher, dass olympia die besitzende Gruppe von allem darunter ist . Ich habe auch Samba so konfiguriert, dass es eine Dirmaske von 2770 und eine Dateimaske von 660 verwendet, um die Berechtigungen den ganzen Weg in der Struktur korrekt zu halten.

baumgart
quelle