Frage

Ich mag einen Server schreiben, und führt im Auftrag von nicht vertrauenswürdigen Parteien Code erhält.

Um dies sicherer ich der Code als Benutzer ausgeführt werden soll zu machen, die ausschließlich für die Ausführung von Code erstellt und dann gelöscht.

Wie kann ich einen Nicht-Root-Benutzer die Berechtigung erteilen, zu erstellen, ausgeben und andere Benutzer entfernen?

War es hilfreich?

Lösung

Die einzige Möglichkeit, dies möglicherweise tun könnte mit einem Proxy-Programm, das setuid root ist (dh chown root my-Proxy-Prozess;. Chmod 47nn my-Proxy-Prozess Und das setuid-Proxy-Programm kümmert Sicherheitsüberlegungen der Handhabung, setuid'ing an den Benutzer mit dem Namen, etc.

Allerdings ist die Sicherheitsprobleme mit diesem sollten ziemlich klar sein. Eine Möglichkeit, es beschränkt sein könnte, ist Ihr nicht-priveliged Prozess, um sicherzustellen, läuft mit einem Benutzer in einer Namensgruppe. Dann chown Thet Proxy-Befehl mit root: myprivategroup und chown als 4710, so dass nur Benutzer, die Mitglieder myprivategroup sind, können sie ausführen

.

Dies ist wahrscheinlich so sicher, wie es sein kann. Die Hauptsache ist dafür, dass der Proxy-Prozess ist gut und sicher und gesperrt, so dass nur relevanter Benutzer kann über eine Gruppenmitgliedschaft führen.

Wenn es irgendwelche anderen Einschränkungen Sie wissen, können vom Benutzer bereitgestellte Verfahren angewendet werden, dann könnte der Proxy-Programm bestätigen, dass das Verfahren auf diese Regeln verleiht. Beachten Sie, dass während dies ein Notbehelf sein kann, ist es nicht über die Grenzen der Technologie für jemanden wäre ein „schlechtes“ Programm zu fertigen, die die Tests bestehen.

Für zusätzliche Sicherheit (empfohlen), verwenden Sie einen Sandkasten oder chroot-Gefängnis wie mark4o erwähnt.

Andere Tipps

Vielleicht können Sie Berechtigungen erteilen zu Nicht-Root-Benutzer mit sudo und / etc / sudoers, aber auf diese Weise scheint nicht sicher und nicht linear. Ich weiß nicht, was Sie brauchen, aber vielleicht können Sie einige Benutzer im Voraus erstellen und dann die sie verwenden.

Sie wollen eine Art von Sandbox verwenden oder Virtualisierung ; mindestens ein chroot Umgebung bei Minimum. Siehe auch Sandbox in Linux .

Dies ist ein Problem, da Sie nicht su Skript vie ohne das Terminal verwenden kann (wahrscheinlich ein Sicherheitsmerkmal). Ich bin sicher, dass Sie Ihren Weg durch diese hacken, aber es war wahrscheinlich aus gutem Grund getan.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top