sudo를 사용하여 crontab 파일을 원격으로 덮어쓰기

sudo를 사용하여 crontab 파일을 원격으로 덮어쓰기

원격 서버의 파일을 자동으로 가져와서 crontab 파일로 바꾸는 스크립트를 작성하려고 하는데 권한이 거부되었습니다.

내 생각은 이에 대한 쉘 함수를 만드는 것입니다.

update_crontab() {
  SSH_HOST=$1
  FOLDER=$2

  {
    if ssh -o "BatchMode yes" $SSH_SUDO_WHITOUT_PASS@$SSH_HOST "[ -f $FOLDER/crontab ]"
    then
      # Folder exists replace crontab with new file
      ssh -o "BatchMode yes" $SSH_SUDO_WHITOUT_PASS@$SSH_HOST "sudo cat $FOLDER/crontab > /etc/crontab"
      echo "crontab overwirte from $FOLDER/crontab"
    fi
  } || {
    echo "Error - Folder not exists"
    exit 1
  }
}

답변1

두 파일 모두 원격 파일이므로 간단히 다음을 수행할 수 있습니다.

  ssh ... "sudo cp $FOLDER/crontab /etc/crontab"

cat...이것은 사용자에게만 상승된 권한이 있고 일반 사용자 쉘이 리디렉션을 수행하는 "sudo 리디렉션" 문제를 방지합니다 > /etc/crontab.

관련 정보