sudo는 현재 로그인된 사용자 이름을 어디서 가져오나요?

sudo는 현재 로그인된 사용자 이름을 어디서 가져오나요?

루트로 로그인한 후 다른 사용자에게 su-ing한 후 "sudo su -" 대신 "sudo su"를 시도하면 새 사용자로 나를 sudo하려고 시도하지만 루트를 통해...

을 입력하면 env환경에 여전히 username=root가 표시됩니다. sudo는 현재 로그인한 사용자를 보지 않고 환경 매개변수를 보고 있습니까?

[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 ~]$ 

sudo su newuser는 현재 로그인한 사용자에게 새 사용자에 대한 sudo 권한이 있는 경우에만 sudo가 검색되는 경우에도 작동해야 하는 것 같습니다. sudo su는 무엇을 하고 있으며 루트가 아닌 사용자가 하이픈과 함께 sudo su - newuser를 사용하는 것이 왜 중요한가요?

답변1

에서 su - username하이픈은 사용자 환경이 복제됨을 의미합니다. 즉, 기본 셸과 작업 디렉터리를 에서 읽고 /etc/passwd사용자(예: ~/.profile)에 대한 모든 로그인 구성 파일을 소스로 가져옵니다. 간단히 말해서, 정상적으로 로그인한 것과 거의 동일한 환경을 갖게 됩니다. (신규 사용자가 터미널을 소유하지 않을 수 있으므로 screen과 같은 프로그램이 실패할 수 있습니다.)

su하이픈을 사용하지 않으면 권한이 없을 수 있는 동일한 작업 디렉터리에 두는 것을 포함하여 호출한 사용자의 환경을 어느 정도 유지하게 됩니다 .

su루트 사용자가 암호를 호출한 경우에는 암호를 묻지 않으므로 처음에 sudo(또는 su)을 사용하여 루트가 되었다면 다른 사용자가 되기 위해 암호가 필요하지 않습니다.

관련 정보