
sudo -u user1 command ...
현재 사용자의 비밀번호 대신 sudo
비밀번호를 묻도록 하려면 어떻게 해야 합니까 ?user1
배경: 사용자가 실행하는 Git Hook에서 이것을 사용하고 싶습니다 git
.
echo "PasswordOfWww" | sudo -Su www bash -c "cd site; git pull; ./deploy.sh"
나는 사용해 보았지만 su www -c "command ..."
나에게 말한다
remote: su: must be run from a terminal
저장소로 푸시할 때.
답변1
가능하다면 파일 시스템에 암호화되지 않은 사용자 비밀번호를 저장하고 싶지 않을 것입니다. 이는 부분적으로 git의 코드 이식성과 로컬 파일 시스템에 저장할 수 있는 코드의 이식성에 얼마나 의존하는지에 따라 달라집니다. NOPASSWD와 함께 sudo를 사용하고 명령을 최대한 제한하는 것이 좋습니다. 다음과 같이 /etc/sudoers 항목을 생성할 수 있습니다.
git ALL=(www) NOPASSWD: /usr/local/sbin/deploySite
deploySite
사용자가 올바른 디렉토리에 있고 deploy.sh
스크립트에 개략적인 내용이 없는지 확인하기 위한 다양한 검사가 있습니다 .
사용자 git이 사용자 www의 계정을 책임감 있게 사용하도록 신뢰하는 경우 NOPASSWD:ALL을 사용할 수 있습니다. 그러나 기본적으로 git 액세스에 업로드하는 사람은 누구나 www 사용자로 원하는 명령을 실행할 수 있습니다.
하지만 원래 질문에 대답하려면
호출하는 사용자의 비밀번호 대신 sudo가 대상 사용자의 비밀번호를 묻도록 할 수 있습니다. 다음과 같이 sudoers 항목을 넣을 수 있습니다.
Defaults:git targetpw
그런 다음 사용자 git은 실행 시 사용자 www의 비밀번호를 입력해야 합니다 sudo -u www ...
.