Pregunta

¿Cómo obtengo el $ USER correcto si ejecuto un script de shell con sudo?

Los ejecuto como scripts posteriores a la instalación en un paquete de instalación de Mac, donde se sudoden automáticamente, pero necesito hacer cosas con el nombre de usuario.

$ HOME es correcto, sin embargo. El método poco elegante sería extraer el nombre de la ruta de inicio, pero me pregunto si hay una forma natural de hacerlo.

No puedo influir en la forma en que se llaman los scripts, ya que es una llamada automática dentro del instalador.

¿Fue útil?

Solución

En mi sistema, la variable $ SUDO_USER se establece en el nombre de usuario de la persona que llama.

No debe extraer el nombre de usuario de la variable $ {HOME} directamente. Está siendo configurado y no calculado. Para extraer el nombre de usuario, puede echar un vistazo al archivo / etc / passwd , pero esto depende mucho del sistema, p. a veces hay que buscar en un directorio LDAP o las entradas se propagan a través de NIS ...

Otros consejos

Puede usar $ (logname) , que le devuelve su nombre de inicio de sesión, incluso si actualmente está haciendo sudo.

Inspeccione la variable SUDO_USER .

http://www.gratisoft.us/sudo/man/sudo. html # environment

Otra forma de obtener al usuario es a través del comando quién . Esto es útil a veces cuando no le importa si el usuario ha sudo'd o no.

who -m | awk '{print $1;}'

SUDO_USER no es portátil. No está configurado en Fedora 17.

Las variables $ USER y $ UID tampoco son predecibles cuando se invoca sudo. Algunas distribuciones informan sobre el sudoer, otras informan sobre el usuario root.

De ninguna manera es perfecto, pero podría usar test -w ~ root & amp; & amp; echo Tengo acceso de escritura a ~ root .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top