usuarios usuario tipos saber listar grupo esta crear como comandos bloqueado agregar administracion bash username

tipos - Obtener el nombre de usuario actual de los usuarios en bash?



listar usuarios linux (10)

Cuando se requieren permisos de root (sudo), que generalmente es del 90% o más cuando se usan scripts, los métodos anteriores siempre le dan a root como la respuesta.

Obtener el usuario "registrado" actual es igual de simple, pero requiere acceder a diferentes variables: $SUDO_UID y $SUDO_USER .

Se pueden repetir:

echo $SUDO_UID echo $SUDO_USER

o asignado, por ejemplo:

myuid=$SUDO_UID myuname=$SUDO_USER

Estoy escribiendo un programa en bash que necesita obtener el nombre de usuario del usuario.

He oído hablar de una cosa llamada whoami pero no tengo idea de lo que hace o cómo usarla.

¿Qué comando utilizo para obtener el nombre de usuario actual?


Dos comandos:

  1. id imprime la identificación de usuario junto con los grupos. Formato: uid=usernumber(username) ...

  2. whoami da el nombre de usuario actual


En el sistema operativo Solaris, utilicé este comando.

$ who am i # remember to use it with space.

En Linux- Alguien ya respondió esto en comentarios.

$ whoami # without space


En la línea de comando ingrese

echo $USER

o

whoami

Para guardar estos valores en una variable, haga

myvariable=$(whoami)

o

myvariable=$USER

Por supuesto, no necesita hacer una variable ya que para eso es la variable $USER .


En la mayoría de los sistemas Linux, simplemente escribiendo whoami en la línea de comandos proporciona la ID de usuario.

Sin embargo, en Solaris, es posible que deba determinar el ID de usuario, al determinar el UID del usuario que inició sesión a través del comando a continuación.

echo $UID

Una vez que se conoce el UID, encuentre al usuario haciendo coincidir el UID con el / etc / passwd.

cat /etc/passwd | cut -d":" -f1,3


Obtener la tarea actual user_struct

#define get_current_user() / ({ / struct user_struct *__u; / const struct cred *__cred; / __cred = current_cred(); / __u = get_uid(__cred->user); / __u; / })


Para bash/ksh/sh etc. Muchas de sus preguntas son respondidas rápidamente por:

man [function]

para obtener la documentación del sistema que está utilizando.

o usualmente más convenientemente: google "man function" Esto puede dar resultados diferentes para algunas cosas donde linux y unix tienen diferencias modestas.

Para esta pregunta, simplemente ingrese "whoami" en su shell.

Para escribirlo:

myvar=$(whoami)


Un truco que he usado en Solaris 9 y Linux y que funciona bien para ambos:

ps -o user= -p $$ | awk ''{print $1}''

Este fragmento imprime el nombre del usuario con EUID actual.

NOTA: Necesitas a bash como intérprete aquí.

En Solaris tiene problemas con los métodos descritos anteriormente:

  • id no acepta los parámetros -u y -n (por lo que tendrá que analizar la salida)
  • whoami no existe (por defecto)
  • who am I imprime propietario de la terminal actual (ignora EUID)
  • $USER variable $USER se establece correctamente solo después de leer los archivos de perfil (por ejemplo, /etc/profile )

Utilice el comando logname estándar de Unix / Linux / BSD / MacOS para recuperar el usuario que ha iniciado sesión. Esto ignora el entorno y el sudo, ya que estos son reporteros poco confiables. Siempre imprimirá el nombre de usuario registrado y luego saldrá. Este comando ha existido desde alrededor de 1981.

My-Mac:~ devin$ logname devin My-Mac:~ devin$ sudo logname Password: devin My-Mac:~ devin$ sudo su - My-Mac:~ root# logname devin My-Mac:~ root# echo $USER root


alternativa a whoami es id -u -n .

id -u devolverá el ID de usuario (por ejemplo, 0 para la raíz).