루트로 로그인하고 다른 사용자에게 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가 현재 로그인한 사용자가 새 사용자에 대한 sudo 권한을 갖는지 찾는 경우에도 sudo su newuser도 작동해야 하는 것 같습니다. sudo su는 무엇을 합니까? 루트가 아닌 사용자가 하이픈과 함께 sudo su - newuser를 사용하는 것이 중요한 이유는 무엇입니까?
답변1
에서 su - username
하이픈은 사용자 환경이 복사되었음을 나타냅니다. 즉, 기본 셸과 작업 디렉토리를 읽고 /etc/passwd
사용자로부터 파생된 모든 로그인 프로필(예:)을 나타냅니다. ~/.profile
간단히 말해서 일반 로그인과 거의 동일한 환경을 갖게 됩니다. (신규 사용자가 단말기를 소유하지 않더라도 화면 등의 프로그램이 실패할 수 있습니다.)
su
하이픈을 사용하지 않으면 권한이 없을 수 있는 동일한 작업 디렉터리에 머무르는 것을 포함하여 호출하는 사용자의 환경이 어느 정도 보존됩니다 .
su
루트 사용자로 호출하면 비밀번호를 묻지 않으므로 루트가 되기 위해 처음 sudo
(또는 su
)을 사용하면 다른 사용자가 되기 위해 비밀번호가 필요하지 않습니다.