
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 ...
.