2012-05-28 6 views
5

Ich habe sudo verwenden mein Programm auszuführen:Wie führe ich einen Befehl als ursprünglicher Benutzer aus einem sudo'd Programm aus?

sudo ./my_program 

Ich versuche git clone von meinem Programm zu laufen, aber er versucht, die Root-Benutzer-SSH-Schlüssel anstelle von mir zu verwenden. Gibt es eine Möglichkeit, diesen einzelnen Befehl als Benutzer auszuführen, der ursprünglich mein Programm aufgerufen hat?

Ich denke, was ich tun kann:

su - original_user -c "git --version" 

Aber wie Figur, die ich den Benutzernamen des ursprünglichen Benutzers aus? Oder gibt es eine andere elegante Lösung?

Antwort

3

Das sudo Handbuch zeigt, dass $SUDO_USER Ihnen den Benutzernamen des ursprünglichen Benutzers geben sollte und $SUDO_UID gibt die ursprüngliche Benutzer-UID.

+0

Und '$ SUDO_UID' die UID des ursprünglichen Benutzers. –

0

Ich hatte dieses Problem mit Samba auf einem NAS beim Erstellen von Dateien aus einer Web-Anwendung.

In diesem Fall habe ich die laufenden Prozesse abgerufen und festgestellt, welcher Benutzer Samba ausgeführt hat. Nachdem ich diesen Namen isoliert hatte, hatte ich das korrekte Benutzerkonto. Vielleicht wird das auch für Ihre Situation funktionieren?

In diesem Fall stelle ich mir vor, Sie müssen durch die PS-Ausgabe filtern und suchen Sie den Namen Ihres Programms. Sehen Sie, ob das funktioniert, indem Sie es auf bash testen.

+0

Sorry, es ist andersherum. Verwenden Sie ** ps -u **, um die aktiven Benutzer zu ermitteln, und bewerten Sie den Wert unter ** command **, um festzustellen, welcher Prozess gestartet wurde. – Digitalis