한 컴퓨터에서 나(tlous)는 다른 사용자(serviceAccount)로 셸을 열 수 있는 권한을 부여 받았습니다.
실행: sudo su - serviceAccount
이 serviceAccount 사용자로 셸을 여는 것과 같은 원하는 효과가 있습니다. 여태까지는 그런대로 잘됐다.
괜찮습니다. 하지만 쉘을 열지 않고 해당 사용자로 명령을 실행하고 싶습니다.
명령이 다음과 같다고 가정합니다.whoami
나는 시도했다:
sudo -u serviceAccount whoami
죄송합니다. 사용자 tlou는 serviceAccount로 '/usr/bin/whoami'를 실행할 수 없습니다...
sudo su - serviceAccount -c whoami
죄송합니다. tlou 사용자는 실행할 수 없습니다 '/bin/su - serviceAccount -c whoami'
...
그리고 다른 변화. 내가 무엇을 놓치고 있나요? oneliner에서 이 작업을 수행할 수 있습니까? 그 이유는 실제로 이것을 ssh 명령으로 실행하고 싶기 때문입니다.ssh -t [email protected] sudo su - serviceAccount -c whoami
sudo -l을 사용하여 20190412를 업데이트하세요.
sudo -l
Matching Defaults entries for tlous on this host:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, !authenticate
User tlous may run the following commands on this host:
(root) /usr/bin/su - serviceAccount, /bin/su - serviceAccount
답변1
귀하의 출력에 따르면 sudo -l
다음과 같습니다.
User tlous may run the following commands on this host:
(root) /usr/bin/su - serviceAccount, /bin/su - serviceAccount
당신은 주어진분명히구성에서 sudoers
두 가지 특정 명령을 실행할 수 있는 권한 :
/usr/bin/su - serviceAccount
/bin/su - serviceAccount
시도 중인 명령(예 sudo -u serviceAccount whoami
: )이 승인된 명령 목록에 없으므로 매개변수를 더 추가하세요.
sudoers
구성에 액세스하여 실행하려는 명령을 추가 하려면 시스템 관리자에게 요청해야 합니다 sudo
.
답변2
어쩌면 이것을 시도해 볼 수 있습니다:
SSH-t[이메일 보호됨]"sudo -u serviceAccount whoami"