Frage

Ich möchte ein benutzerprivilegierten (nicht root) Prozess neue Prozesse als Benutzer nobody zu starten. Ich habe gerade Aufruf setuid versucht, die mit -1 EPERM auf Ubuntu 8.04 fehlschlägt:

#include <sys/types.h>
#include <unistd.h>

int main() { 
       setuid(65534);
       while (1);
       return 0;
}

Wie soll ich tun dies statt?

War es hilfreich?

Lösung

Sie wird Hilfe benötigen und viel Vertrauen von Ihrem Systemadministrator. Normale Benutzer sind nicht in der Lage die ausführbare Datei ihrer Wahl im Namen von anderen Benutzern, Zeit ausgeführt werden.

können Sie Ihre Anwendung hinzufügen mit den richtigen Einstellungen /etc/sudoers und Sie werden es laufen können wie mit sudo -u nobody. Dies wird sowohl arbeiten für Skripts und ausführbare Binärdateien.

Eine weitere Möglichkeit besteht darin, dass sie chown nobody und chmod +s auf ausführbare Binärdatei zu tun und Sie werden in der Lage direkt auszuführen. Diese Aufgabe muss jedes Mal die ausführbare Datei Änderungen wiederholt werden.

Dies könnte auch für Skripte funktionieren, wenn Sie einen kleinen Helfer ausführbare erstellen werden, die einfach nicht exec("/home/you/bin/your-application"). Diese ausführbare Datei kann suid-niemand gemacht werden (siehe oben), und Sie können frei your-application ändern.

Andere Tipps

Soweit ich weiß, kann man nicht, es sei denn sie ist root oder sudo einem Benutzerwechsel zu ermöglichen, hast einzurichten. Oder Sie haben die ausführbare Datei das suid Bit auf sie eingerichtet haben, und von niemand gehört. Aber das erfordert Root-Zugriff zu.

Der ‚nobody‘ Benutzer ist noch ein Benutzer. Ich bin nicht sicher, was Ihre Argumentation ist, den Programmablauf wie niemand in mit, es ist keine zusätzliche Sicherheit Zugabe gehen werden. Du bist eher, sich auf andere Probleme zu öffnen.

Ich würde squadette Empfehlung der Verwendung einer Hilfsanwendung folgen.

calife ist eine Alternative zu sudo.

  

Calife ist kleines Programm, das ein UNIX-Systemadministrator ermöglichen root (oder ein anderer Benutzer) auf seine / ihre Maschinen werden, ohne das root-Passwort zu geben, aber seine / ihre eigenen.

lief ich über den setuid-Sandbox heute Projekt während LWN Lesen, das tut was ich suche für die richtige Art und Weise.

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