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

관련 정보