¿De dónde obtiene sudo el nombre de usuario actualmente conectado?

¿De dónde obtiene sudo el nombre de usuario actualmente conectado?

Cuando intenté "sudo su" en lugar de "sudo su -" después de haber iniciado sesión como root y su-ing a otro usuario, intenta hacerme sudo como el nuevo usuario, pero a través de root...

Cuando escribo env, todavía muestra nombre de usuario = raíz en el entorno. ¿Sudo no mira al usuario que ha iniciado sesión actualmente, sino a los parámetros del entorno?

[oracle@tst-01]$ sudo su grid
Sorry, user oracle is not allowed to execute '/bin/su grid' as root on tst-01.testdomain.com.
[oracle@tst-01]$ env
HOSTNAME=tst-01.testdomain.com
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
QTDIR=/usr/lib64/qt-3.3
USER=oracle
SUDO_USER=ujjain
USERNAME=root
MAIL=/var/spool/mail/ujjain
PATH=/usr/lib/oracle/10.2.0.4/client64/bin:/usr/lib/oracle/10.2.0.4/client64/bin:/sbin:/bin:/usr/sbin:/usr/bin
PWD=/home/ujjain
LANG=en_US.utf8
HOME=/opt/apps/oracle
SUDO_COMMAND=/bin/su
SHLVL=2
LOGNAME=oracle
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
SUDO_GID=3000
ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client64
G_BROKEN_FILENAMES=1
_=/bin/env
[oracle@tst-01 ujjain]$ sudo su - grid
[grid@tst-01 ~]$ 

Parece que sudo su newuser también debería funcionar si sudo solo estuviera buscando si el usuario actualmente conectado tiene derechos sudo para sudo para el nuevo usuario. ¿Qué hace sudo su y por qué es importante que los usuarios no root utilicen sudo su - newuser con el guión?

Respuesta1

En su - username, el guión significa que el entorno del usuario se replica, es decir, el shell predeterminado y el directorio de trabajo se leen desde , y se obtiene /etc/passwdcualquier archivo de configuración de inicio de sesión para el usuario (por ejemplo, ). ~/.profileEn resumen, obtendrá prácticamente el mismo entorno que si iniciara sesión normalmente. (Aunque es posible que el nuevo usuario no sea propietario del terminal, lo que provoca que programas como screen fallen).

No utilizar el guión hará que mantengas más o menos el entorno del usuario que invocó su, incluso dejarte en el mismo directorio de trabajo, donde es posible que no tengas permisos.

suno solicitará una contraseña si el usuario root la invocó, por lo que si primero usó sudo(o su) para convertirse en root, no necesitará una contraseña para convertirse en ningún otro usuario.

información relacionada