쉘 스크립트를 사용하여 사용자 로그인하는 방법

쉘 스크립트를 사용하여 사용자 로그인하는 방법

내 컴퓨터에는 두 명의 사용자(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한 다음 비밀번호를 입력하는 것입니다. 그렇게 하는 것이 더 쉽습니다.)

관련 정보