sudo가 bash 스크립트에서 매번 두 번째로 비밀번호를 요구하는 이유는 무엇입니까?

sudo가 bash 스크립트에서 매번 두 번째로 비밀번호를 요구하는 이유는 무엇입니까?

저는 아주 작은 간단하고 작은 웹 앱을 가지고 있으며, 다음을 수행하는 매우 단순한 배포 스크립트를 사용하여 제 삶을 좀 더 쉽게 만들고 싶었습니다.

  1. git에서 업데이트 가져오기
  2. 작곡가 실행
  3. 모든 파일의 소유자 변경

스크립트는 기본적으로 잘 작동하며 다음과 같습니다.

#!/bin/bash
echo "Updating repository ...";
sudo git pull;

echo "Installing composer dependencies from lockfile ...";
composer install;

echo "Changing owner to www-data:www-data ...";
sudo chown -R www-data:www-data .;

echo "Deployment DONE!";

그러나 보시다시피 이 스크립트에는 sudo로 실행되는 두 개의 명령이 있습니다. 즉, git pullchown.

내 문제는 다음과 같습니다. sudo로 명령을 실행할 때 시스템이 비밀번호를 묻는 빈도에 시간 초과가 있다는 것을 알고 있습니다. 문제는 시간 제한 내에 잘 있음에도 불구하고 스크립트가언제나에서 비밀번호를 묻는다두번째sudo(chown) 명령.

누군가 나에게 알려주실 수 있습니까? 왜 그럴 수 있습니까?

답변1

이유가 무엇인지는 잘 모르겠지만 해결책은 다음과 같습니다.

if [[ $(id -u $(whoami)) != 0 ]]
then
    sudo bash $( cd $(dirname $0) ; pwd -P )
    # taken from http://stackoverflow.com/a/4774063/2797066
else
    #rest of script
fi

답변2

다음과 같이 스크립트를 실행해 보는 것은 어떨까요 sudo?

sudo bash /path/to/script.sh

다음 내용 이 script.sh없습니다 sudo.

#!/bin/bash
echo "Updating repository ...";
git pull;

echo "Installing composer dependencies from lockfile ...";
composer install;

echo "Changing owner to www-data:www-data ...";
chown -R www-data:www-data .;

echo "Deployment DONE!"

이 방법을 사용하면 스크립트는 한 번만 비밀번호를 묻습니다.

관련 정보