即使使用 sudo,通过 SSH 将数据写入文件也会出现权限错误

洛林

我正在创建一个自动化脚本。作为其中的一部分,我想添加一个 cron 作业。这是脚本失败的一部分:

BACKUP_USER=backupbot
SCRIPT_NAME=backup-script.sh

scp -i ./ssh-key ./$SCRIPT_NAME user@server:/tmp
ssh -i ./ssh-key user@server "
    sudo mv /tmp/$SCRIPT_NAME /home/$BACKUP_USER/bin/ &&
    sudo chown $BACKUP_USER /home/$BACKUP_USER/bin/$SCRIPT_NAME &&
    sudo chmod 100 /home/$BACKUP_USER/bin/$SCRIPT_NAME &&
    sudo sed -i 's/THE_URL/'${1}'/' /home/$BACKUP_USER/bin/$SCRIPT_NAME &&
    sudo echo '*/1 * * * *' $BACKUP_USER /home/$BACKUP_USER/bin/$SCRIPT_NAME > /etc/cron.d/discourse-backup"

有问题的命令是:

sudo echo '*/1 * * * *' $BACKUP_USER /home/$BACKUP_USER/bin/$SCRIPT_NAME > /etc/cron.d/discourse-backup

我越来越:

bash:第 5 行:/etc/cron.d/discourse-backup:权限被拒绝

在此之前,一切都按原样执行。我的最后一条命令有什么问题?我认为这是引号的一些问题 - 我尝试了单引号和双引号的多种组合,但最终得到了相同(或更糟)的结果。

博多

当你运行像这样的命令时

sudo echo some text > file

在运行之前,重定向是由您的 shell 作为普通用户完成的sudo

编辑,回答评论:

sudo与其他命令相比,shell 不会被视为任何特定的东西,并且它不知道sudo会以提升的权限运行。

外壳的行为将与

/bin/echo some text > file

当 shell 解析上述命令行之一时,它会找到重定向。所以它将首先打开文件,然后fork是程序执行的进程,dup文件描述符stdoutexec程序。然后,要么/bin/echosudo与运行stdout已经重定向。

在您的用例中,以普通用户身份打开用于重定向的文件将失败。

尝试类似的东西

echo '*/1 * * * *' $BACKUP_USER /home/$BACKUP_USER/bin/$SCRIPT_NAME | sudo tee /etc/cron.d/discourse-backup >/dev/null

在这种情况下,该文件是一个命令行参数sudo,它将运行root,然后将文件名参数传递给tee参数,然后以提升的权限执行。这将允许tee打开文件进行写入。

第二次编辑:这个答案的重点是解决sudo与重定向相关的问题,而不是其他可能的问题。正如用户cas在评论中提到的,变量应该单独或作为整个字符串被引用,例如

echo "*/1 * * * * $BACKUP_USER /home/$BACKUP_USER/bin/$SCRIPT_NAME"  | sudo ...

在问题的用例中,引用可能不那么重要,原因有两个。参数仅用于echo,并且输出必须是有效crontab行。无论如何,这会禁止变量中出现几个“有问题”的字符。但总的来说,始终建议正确引用。

由于此命令将是更长的带引号字符串的一部分,因此可以对引号进行转义,例如

ssh -i ./ssh-key user@server "
    ...
    echo \"*/1 * * * * $BACKUP_USER /home/$BACKUP_USER/bin/$SCRIPT_NAME\" | sudo ... "

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用密码进行Sudo并通过SSH附加到文件

来自分类Dev

sudo之后如何通过ssh传输文件?

来自分类Dev

使用本地端的sudo权限和我的个人SSH密钥通过SSH将远程文件同步到我的本地计算机

来自分类Dev

通过ssh和脚本使用sudo编辑文本文件

来自分类Dev

如何通过 SSH 将 Sudo 与 Jenkins bash 脚本一起使用?

来自分类Dev

通过fstab挂载外部驱动器,即使使用sudo也会拒绝权限

来自分类Dev

如何使用IdentityFile通过SSH通过SSH远程运行sudo命令?

来自分类Dev

即使使用sudo,Chromebook上的权限仍被拒绝

来自分类Dev

即使使用sudo命令也获得“权限被拒绝”

来自分类Dev

使用需要sudo权限的VS Code ssh工具编辑文件

来自分类Dev

错误:EACCES,即使使用sudo后,权限也被拒绝?

来自分类Dev

即使使用 sudo,Yeoman 也会给出权限错误

来自分类Dev

通过 ssh 编写 sudo 脚本

来自分类Dev

使用sudo的ssh配置

来自分类Dev

如何使用sudo权限从Jenkins运行远程ssh会话?

来自分类Dev

无法创建目录权限被拒绝-即使使用sudo

来自分类Dev

使用SCP通过SSH从github复制文件

来自分类Dev

使用Python通过SSH下载文件

来自分类Dev

通过ssh使用gedit打开文件

来自分类Dev

git-即使使用SSH样式的git @ github,也可以通过HTTPS克隆吗

来自分类Dev

即使/ etc / ssh / sshd_config中的“ PasswordAuthentication no”也可以通过SFTP使用密码身份验证

来自分类Dev

通过SSH远程执行sudo NOPASSWD命令

来自分类Dev

使用XLConnect将数据写入Excel模板会出现空单元格错误

来自分类Dev

通过SSH使用sendmail

来自分类Dev

ssh_askpass,即使使用nohup,使用GNU并行时,权限也被拒绝

来自分类Dev

无法打开锁定文件/ var / lib / dpkg / lock权限被拒绝-即使使用sudo

来自分类Dev

无法打开锁定文件/ var / lib / dpkg / lock权限被拒绝-即使使用sudo

来自分类Dev

vim:E212:无法打开文件进行写入(即使使用 sudo)

来自分类Dev

通过ssh启动文件

Related 相关文章

  1. 1

    使用密码进行Sudo并通过SSH附加到文件

  2. 2

    sudo之后如何通过ssh传输文件?

  3. 3

    使用本地端的sudo权限和我的个人SSH密钥通过SSH将远程文件同步到我的本地计算机

  4. 4

    通过ssh和脚本使用sudo编辑文本文件

  5. 5

    如何通过 SSH 将 Sudo 与 Jenkins bash 脚本一起使用?

  6. 6

    通过fstab挂载外部驱动器,即使使用sudo也会拒绝权限

  7. 7

    如何使用IdentityFile通过SSH通过SSH远程运行sudo命令?

  8. 8

    即使使用sudo,Chromebook上的权限仍被拒绝

  9. 9

    即使使用sudo命令也获得“权限被拒绝”

  10. 10

    使用需要sudo权限的VS Code ssh工具编辑文件

  11. 11

    错误:EACCES,即使使用sudo后,权限也被拒绝?

  12. 12

    即使使用 sudo,Yeoman 也会给出权限错误

  13. 13

    通过 ssh 编写 sudo 脚本

  14. 14

    使用sudo的ssh配置

  15. 15

    如何使用sudo权限从Jenkins运行远程ssh会话?

  16. 16

    无法创建目录权限被拒绝-即使使用sudo

  17. 17

    使用SCP通过SSH从github复制文件

  18. 18

    使用Python通过SSH下载文件

  19. 19

    通过ssh使用gedit打开文件

  20. 20

    git-即使使用SSH样式的git @ github,也可以通过HTTPS克隆吗

  21. 21

    即使/ etc / ssh / sshd_config中的“ PasswordAuthentication no”也可以通过SFTP使用密码身份验证

  22. 22

    通过SSH远程执行sudo NOPASSWD命令

  23. 23

    使用XLConnect将数据写入Excel模板会出现空单元格错误

  24. 24

    通过SSH使用sendmail

  25. 25

    ssh_askpass,即使使用nohup,使用GNU并行时,权限也被拒绝

  26. 26

    无法打开锁定文件/ var / lib / dpkg / lock权限被拒绝-即使使用sudo

  27. 27

    无法打开锁定文件/ var / lib / dpkg / lock权限被拒绝-即使使用sudo

  28. 28

    vim:E212:无法打开文件进行写入(即使使用 sudo)

  29. 29

    通过ssh启动文件

热门标签

归档