내 컴퓨터에는 두 명의 사용자(tiger, jenk)가 있고
이제 "tiger" 사용자의 로그인 사용자 "jenk"에 대한 쉘 스크립트를 생성하려고 합니다. 다음 코드를 시도해 보겠습니다.
[tiger@pagaltiger mytask]$ echo -e "IncorrectPassword\n" | su jenk
Password: su: Authentication failure
echo -e "CorrectPassword" | su jenk
[tiger@pagaltiger mytask]$
그런 다음 Tiger 사용자로 다시 로그인했습니다. 왜 그렇습니까?
나는 기대를 사용하고 싶지 않습니다
답변1
가장 좋은 접근 방식은 시스템에 보안 셸 데몬을 설정하고(아직 실행되지 않은 경우) 비밀번호 없는 키 쌍 인증을 사용하는 것입니다. 이것이 적절하다고 가정하면 sshd
로그인 tiger
하여 다음 명령을 실행할 수 있습니다.
ssh-keygen
ssh-copy-id jenk@localhost
그 후에는 다음 구문을 사용하여 명령을 실행할 tiger
수 있습니다 .jenk
ssh jenk@localhost '(some command here)'
예를 들어:
tiger@hostname $ ssh jenk@localhost 'whoami'
jenk
tiger@hostname $
답변2
이 명령을 실행하면파이프라인에서, 현재 셸에서 명령을 실행하는 대신 새 프로세스를 생성합니다. 새 셸은 user 로 전환되지만 jenk
셸이 종료되면(다른 작업이 없기 때문에) 이를 생성한 원래 셸은 여전히 사용자로 로그인되어 있습니다.
스크립트에서 명령을 실행하면 파이프라인에 있는지 여부에 관계없이 하위 셸에서 실행됩니다.
(제 제안은 먼저 비밀번호를 입력 su jenk
한 다음 비밀번호를 입력하는 것입니다. 그렇게 하는 것이 더 쉽습니다.)