2012-05-28 10 views
5

tengo que usar sudo ejecutar mi programa:¿Cómo ejecuto un comando como el usuario original de un programa sudo'd?

sudo ./my_program 

Estoy tratando de ejecutar git clone de mi programa, sino que trata de utilizar claves SSH del usuario raíz en lugar de la mía. ¿Hay alguna manera de ejecutar este comando único como el usuario que originalmente invocó mi programa?

supongo que puedo hacer:

su - original_user -c "git --version" 

Pero, ¿cómo puedo averiguar el nombre de usuario del usuario original? ¿O hay otra solución elegante esto?

Respuesta

3

El manual sudo muestra que $SUDO_USER debe darle el nombre de usuario del usuario original y $SUDO_UID proporciona el UID del usuario original.

+0

Y '$ SUDO_UID' el UID del usuario original. –

0

Tuve este problema con Samba en un NAS al crear archivos desde una aplicación web.

En este caso, recuperé los procesos en ejecución y determiné qué usuario ejecutaba samba. Después de aislar ese nombre, tenía la cuenta de usuario correcta. ¿Tal vez esto también funcionará para su situación?

En este caso, imagino que necesita filtrar a través de la salida ps y buscar el nombre de su programa. Vea si eso funciona probándolo en bash.

+0

Lo siento, es al revés. Use ** ps -u ** para determinar los usuarios activos, y evalúe el valor bajo ** comando ** para determinar qué proceso iniciaron. – Digitalis

Cuestiones relacionadas