Wie kann ich den Benutzer 'Y' nur in den Ordner 'A' schreiben, wenn das Skript 'X' ausgeführt wird?

402
khelll

Wie kann ich Benutzer Y nur in Ordner A schreiben, wenn Skript X ausgeführt wird ?

1

3 Antworten auf die Frage

4
dubiousjim

Ich glaube, dass dazu Programm X mit setuid-Berechtigungen und einem Benutzer-UA mit Schreibberechtigung für Ordner A gehören muss. Wenn X aufgerufen wird, wird es als UA ausgeführt, unabhängig davon, von welchem ​​Benutzer es aufgerufen wurde.

Die meisten Shells (vielleicht alle) lassen Skripte keine setuid-Berechtigungen haben, sie ignorieren dieses Berechtigungsbit nur, wenn X eine Binärdatei ist. Natürlich könnte x ein binärer Wrapper sein, der nur ein separates Skript X.sh ausführt.

Sie sollten X nicht als root setzen, wenn Sie nicht müssen. Sie könnten den Ordner A für einen Benutzer mit weniger Berechtigungen beschreibbar machen.

Alternativ können Sie den Ordner A für eine dedizierte Gruppe beschreibbar machen, dieser Gruppe X zuweisen und setgid für X anstelle von setuid verwenden.

2
Justin Smith

Dieses Problem tritt häufig bei Spielen auf - Nethack hat beispielsweise "Bones" -Dateien und eine Hiscore-Tabelle, die vom Spiel beschrieben werden können, aber nicht von einzelnen Benutzern, die kein Administrator sind. Dies geschieht durch die ausführbare Datei setgid.

http://nethack.wikia.com/wiki/Setgid hat einen Überblick über dieses System. Der Vorteil ist, dass ein Exploit von nethack Ihnen nur Gruppenspielprivilegien und nicht root-Privilegien verschafft.

0
Broam

Wie wäre es, wenn Skript x nach / usr / bin schreibt, aber als Benutzer z ist dies ein Benutzerkonto für diesen bestimmten Zweck?

Zugegeben, dies bedeutet, dass das Sticky-Bit verwendet wird, das seine eigenen Sicherheitsbedenken hat, aber Sie können den Benutzer z sperren (keine Anmeldungen, sehr eingeschränkte Berechtigungen über / usr / bin usw.).

Ich bin nicht der beste in Sachen Linux-Sicherheit, aber es war das einzige, was mir kurzfristig einfallen konnte.

Viele Anwendungen führen die Trennung der Berechtigungen aus - sie tun alles, was sie als unprivilegierte Benutzer tun können, und die ein oder zwei Operationen, für die root erforderlich ist, werden tatsächlich von einem separaten Prozess ausgeführt. (Alternativ: Beginnen Sie als Root, erledigen Sie die zwei Dingen, für die Root erforderlich ist, und geben Sie die Privilegien ab.)

Ihre andere Option ist Sudo.