![사용자를 전환하고 필요한 정보 배경을 스크립트로 묻는 Linux 쉘 스크립트](https://linux55.com/image/183722/%EC%82%AC%EC%9A%A9%EC%9E%90%EB%A5%BC%20%EC%A0%84%ED%99%98%ED%95%98%EA%B3%A0%20%ED%95%84%EC%9A%94%ED%95%9C%20%EC%A0%95%EB%B3%B4%20%EB%B0%B0%EA%B2%BD%EC%9D%84%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A1%9C%20%EB%AC%BB%EB%8A%94%20Linux%20%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8.png)
아래 시나리오에 대한 샘플 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