아래 시나리오에 대한 샘플 Linux 셸 스크립트가 필요합니다.
대화형 세션 중:
su user1
Password: <Type password>
내가 할 일은 암호를 일부 파일(예: ~/pwd.txt
)에 저장하는 것입니다. 해당 스크립트를 실행할 때 대상 사용자의 암호를 파일에서 읽어 자동으로 전달하는 쉘 스크립트가 필요합니다 su
. 그런 다음 대상 사용자로 전환합니다. 프롬프트를 표시할 필요는 없습니다. 모든 것이 백그라운드에서 처리되고 새 사용자로의 전환이 직접 표시된다면 괜찮을 것입니다.
도와주세요!
감사해요!
답변1
원시 비밀번호를 파일에 저장하는 것은 안전하지 않지만 적어도 이것이 귀하의 질문에 대한 답변이 될 것입니다.
sudoer에서 NOPASSWD 사용
sudoers에 아래 항목을 추가하세요.
<your_user> ALL=NOPASSWD: /bin/su - user1
#Then simply run
sudo -S su - user1
sudoers 없이: 비대화형 쉘에 유용합니다.
su - user1 -c "" < ~/pwd.txt &>/dev/null
< ~/pwd.txt
~/pwd.txt에 저장된 비밀번호를 su 명령으로 리디렉션합니다.
&>/dev/null
stdout과 sterr을 모두 >/dev/null로 리디렉션합니다.
## 더 나은 ## :
당신이 사용할 수있는GPG비밀번호를 암호화하는 도구:
# Encrypt your password with choosing a passphrase :
gpg -c ~/pwd.txt
# Remove your raw password file :
rm -f ~/pwd.txt.gpg
이제 su를 시도할 때 위의 내용을 사용하여 암호를 해독하세요.비밀번호:
su - user1 -c "" <<< "$(gpg -q -d ~/pwd.txt.gpg 2>/dev/null)" &>/dev/null