Wie bringt man Linux dazu, Setuid-Verzeichnisse zu ehren?

8

Vor einiger Zeit schlug ein Benutzer in einem Kanal, in dem ich mich befand, während eines Gesprächs im IRC vor, dass jemand ein Verzeichnis einrichten sollte, damit es die Benutzer-ID für Dateien erbt, um ein Problem zu lösen, das jemand anderes hatte. Zu der Zeit sprach ich und sagte "Linux unterstützt keine Setuid-Verzeichnisse". Danach zeigte mir die Person, die den Rat gab, einen Pastebin ( http://codepad.org/4In62f13 ) seines Systems, in dem die in einem Verzeichnis festgelegte Berechtigung setuid berücksichtigt wurde.

Nur um zu erklären, wenn ich sage "Linux unterstützt keine Setuid-Verzeichnisse", meine ich, dass Sie "chmod u + s Verzeichnis" gehen können und es das Bit im Verzeichnis setzt. Linux (wie ich es verstanden habe) ignoriert dieses Bit (in Verzeichnissen).

Versuchen Sie, wie ich könnte, ich kann diesen Pastebin einfach nicht ganz replizieren. Jemand hat mir einmal vorgeschlagen, dass es möglich sein könnte, das Verhalten mit Selinux zu emulieren - und mit Regeln herumzuspielen, es ist möglich, eine UID für eine Datei zu erzwingen, aber nicht von einer Setuid-Verzeichnisberechtigung (die ich sehen kann). Das Lesen im Internet war ziemlich uninformativ - die meisten Orte behaupten, "Nein, Setuid in Verzeichnissen funktioniert nicht mit Linux", gelegentlich "es kann unter bestimmten Umständen durchgeführt werden" (wie zum Beispiel: http://arstechnica.com/). etc / linux / 2003 / linux.ars-12032003.html )

Ich erinnere mich nicht, wer die ursprüngliche Person war, aber das ursprüngliche System war ein Debian 6-System, und das Dateisystem, das es ausführte, war xfs gemountet mit "default, acl". Ich habe versucht, das zu replizieren, aber bisher kein Glück (bisher mit verschiedenen Versionen von Debian, Ubuntu, Fedora und Centos versucht)

Kann mir jemand sagen, was oder wie Sie ein System dazu bringen, setuid in einem Verzeichnis zu ehren?

Takigama
quelle
XFS hat sicherlich eine Mount-Option ( grpid|bsdgroupsoder nogrpid|sysvgroups), die bedeutet, dass Dateien in Verzeichnissen mit der Gruppe des Verzeichnisses und nicht mit der Gruppe des Besitzers erstellt werden. vielleicht damit spielen?
Zanchey

Antworten:

7

Setuid für Verzeichnisse verhält sich nicht wie setgid. Sofern die Shell-Ausgabe nicht von FreeBSD stammte, war jemand gelangweilt und hatte ein wenig Spaß auf Ihre Kosten.

Die für ein Verzeichnis festgelegte Berechtigung setuid wird auf UNIX- und Linux-Systemen ignoriert. [4] FreeBSD kann so konfiguriert werden, dass es analog zu setgid interpretiert wird, nämlich dass alle Dateien und Unterverzeichnisse dem Eigentümer des obersten Verzeichnisses gehören. [5]

In FreeBSD verhalten sich Verzeichnisse so, als ob ihr setgid-Bit immer gesetzt wäre, unabhängig von seinem tatsächlichen Wert. In open (2) heißt es: "Wenn eine neue Datei erstellt wird, erhält sie die Gruppe des Verzeichnisses, in dem sie enthalten ist."

http://en.wikipedia.org/wiki/Setuid#setuid_and_setgid_on_directories

Aaron Copley
quelle
Ich glaube, dass dies der Fall ist ... aber der Typ war sich ziemlich sicher, dass er sein Ziel erreicht hat ... Ich habe mich dann an die Debian-Foren gewandt, weil er Debian verwendet hat, und dies für eine Antwort erhalten: forums.debian.net /… Ich habe möglicherweise in einem weniger als ideellen Zustand gepostet und die kalte Schulter bekommen. Nach ungefähr einem Monat und ein wenig Recherche bin ich mir nicht sicher, ob es definitiv nicht möglich ist, aber ich kann nicht verstehen, warum Debian-Leute glauben, dass es möglich ist, ohne etwas zu modifizieren.
Takigama
Wenn er es erreichen würde, wäre er die beste Quelle dafür, wie es gemacht wurde. Ich habe das Thema selbst recherchiert und nichts aufgetaucht.
Aaron Copley
@AaronCopley: Haben Sie eine andere Quelle als Wikipedia für die Tatsache, dass die für ein Verzeichnis festgelegte Setuid-Berechtigung auf Linux-Systemen gespeichert ist?
Martin Thoma
Nein, aber Sie können es gerne ausprobieren und sich selbst davon überzeugen. :)
Aaron Copley
2

Teilantwort / Umgehung:

Ich habe versucht, das Gleiche zu tun, ich habe mich entschieden, nicht dagegen anzukämpfen und eine andere Methode auszuprobieren. Ich habe versucht, Zugriffssteuerungslisten zu erstellen, um Standardberechtigungen festzulegen. (Hinweis: Möglicherweise müssen Sie sie zuerst aktivieren.)

setfacl -R --set-file=- . <<EOF
# file: testdir/
# owner: testuser
# group: testgroup
user::rwx
group::rwx
group:normaluser:rwx
mask::rwx
other::r-x
default:group::rwx
default:group:normaluser:rwx
default:mask::rwx
default:other::r-x
EOF

Hier wird testuser verwendet, um Tests auszuführen, und der normale Benutzer kann die Ergebnisse löschen, ohne (jedes Mal) root zu verwenden.

Strg-Alt-Delor
quelle
Dadurch wird eine neue Gruppe hinzugefügt, aber die festgelegte Gruppen-ID funktioniert einwandfrei.
Strg-Alt-Delor
-2

Von RHEL man chmod

chmod behält die Bits set-user-ID und set-group-ID eines Verzeichnisses bei, sofern Sie nicht ausdrücklich etwas anderes angeben. Sie können die Bits mit symbolischen Modi wie u + s und gs setzen oder löschen, und Sie können die Bits mit einem numerischen Modus setzen (aber nicht löschen).

Wenn ich mich richtig erinnere, wird numerisch chmod 4711 ./dirdas gesetzte UID-Bit chmod 2711 ./dirhinzugefügt und das gesetzte GID-Bit 6711hinzugefügt, um die Vererbung von UID + GID gemäß der Demonstration in Pastebin festzulegen.

Per Manpage chmod u+s== chmod 4XXXund chmod g+s==chmod 2XXX

Oneiroi
quelle
1
Nein, ich verstehe, wie man sie anwendet, das ist nicht das Problem.
Takigama
(versehentlich die Eingabetaste drücken) Das Problem ist, was sie mit einem Verzeichnis machen. Ich war der Meinung, dass Setuid in Verzeichnissen nicht etwas war, was Linux zum Beispiel tat (Ubuntu 10.10-System): testuser @ boson: ~ $ ls -ald ~ drwsrwsrwx 3 testuser testuser 4096 2012-03-21 01:55 / home / testuser Dieses Verzeichnis hat sowohl setuid als auch setgid. Nun, als Benutzer tt @ boson: ~ $ touch ~ Testbenutzer / Datei t @ Boson: ~ $ ls -la! $ Ls -la ~ Testbenutzer / Datei -rw-r - r-- 1 t Testbenutzer 0 2012-03 -21 01:57 / home / testuser / file Beachten Sie, dass das Setuid-Bit im Verzeichnis keine Auswirkung hat (was ich erwarte). Wie bringt man ein Linux-System dazu, setuid in einem Verzeichnis zu verwenden?
Takigama
Sie können sie mit etwas wie =755oder unter 00755Verwendung der
Zahlen löschen