使用 sudo 远程覆盖 crontab 文件

使用 sudo 远程覆盖 crontab 文件

我正在尝试构建一个脚本,自动获取远程服务器上的文件并替换为 crontab 文件,但权限被拒绝。

我的想法是为其创建一个 shell 函数:

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"

...这避免了“sudo 重定向”问题,其中只有cat具有提升的权限,并且您的普通用户 shell 执行重定向> /etc/crontab

相关内容