sudo가 전환하려는 사용자의 비밀번호를 묻도록 합니다.

sudo가 전환하려는 사용자의 비밀번호를 묻도록 합니다.
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 ....

관련 정보