Nombre de usuario antes de sudo


8

Obtuve un script que requiere sudo, pero el script debe establecer parámetros de acuerdo con el usuario original, como:

chown "${USER}:${USER}" dir

Si lo configuro en sudo, solo termino con chmod root:root, lo que no ayuda.

Entonces, ¿cómo puedo obtener el nombre de usuario antes de sudo?

Respuestas:


11

La variable de entorno SUDO_USER debería funcionar como un reemplazo para USER.

Dado que está configurando la propiedad como USUARIO: USUARIO ¿Asumo que siempre hay un grupo con el mismo nombre que el usuario? Una solución más estricta podría ser utilizar SUDO_UID y SUDO_GID.

Dos posibles soluciones serían:

chown "${SUDO_USER}:${SUDO_USER}" dir

o

chown "${SUDO_UID}:${SUDO_GID}" dir

Respuesta agradable, con la solución Y algunas informaciones adicionales.
— e-satis

Usar el UID / GID es la mejor solución, ya que es posible tener múltiples UID con el mismo nombre de usuario.
— duffbeer703

4

Puedes usar la SUDO_USERvariable:

sudo bash -c 'echo $SUDO_USER'

Desde la página de manual de sudo :

sudo utiliza las siguientes variables de entorno. La política de seguridad tiene control sobre el contenido real del entorno del comando. [...]

SUDO_UID Establezca el ID de usuario del usuario que invocó sudo.

SUDO_USER Establezca el nombre de usuario del usuario que invocó sudo.


Pero, ¿por qué sudo echo $SUDO_USERno produce nada?
— Robert

1

SUDO_USER puede ser sobrescrito por el usuario.

 $ SUDO_USER='lala' sudo SUDO_USER='test' printenv | grep USER
 USER=root
 SUDO_USER=test
 USERNAME=root

Debería usar 'who am i' o 'logname' para obtener el nombre de usuario original

toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' logname             
toto
toto:~$ SUDO_USER='lala' sudo SUDO_USER='test' who am i
toto   pts/4        Jan 23 15:13 (:0.0)

Viniendo de /programming/4598001/how-do-you-find-the-original-user-through-multiple-sudo-and-su-commands


Después de ejecutar 'sudo su -' las variables de entorno no están disponibles, pero lognamey who am iel trabajo.
— RickMeasham

Tienes razón, no es posible confiar en la variable de entorno.
— cladmi

Se encontró en algún host que SUDO_USER no se puede sobrescribir: sudo: sorry, you are not allowed to set the following environment variables: SUDO_USER por lo tanto, aún puede ser seguro, aún así debe verificar esto.
— cladmi

Es porque mi comando está configurado como "NOPASSWD", por lo que depende de la configuración de su sudoers a través de "NOSETENV".
— cladmi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.