在远程主机上使用 sudo 进行 rdiff-backup:ListError 权限被拒绝

在远程主机上使用 sudo 进行 rdiff-backup:ListError 权限被拒绝

我目前面临以下问题:

我在运行 Ubuntu 的备份机器上进行了设置rdiff-backup,并希望能够备份运行 CentOS 的生产机器;我的设置如下:

  • 两台机器上的备份用户
  • 有效的 ssh 密钥(我能够从备份机器连接到我的远程生产机器)
  • 在生产服务器上,备份用户只能通过以下方式执行 rdiff-backup 命令authorized_keyscommand="rdiff-backup --server --restrict-read-only /",from="{backup machine's IP}",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa [KEY HERE]
  • 我的备份机器上的备份脚本运行以下命令来启动备份:rdiff-backup --include-globbing-filelist "${INCLUDE_LIST}" --exclude '**' --remote-schema 'ssh -C %s sudo rdiff-backup --server' ${REMOTE_USER}@${REMOTE_HOST}::/ "${TARGET_DIR}"
  • 远程生产服务器上的备份用户获得了相应的 sudoers 条目:backup ALL=(root) NOPASSWD: /usr/bin/rdiff-backup --server --restrict-read-only /

我希望可以尽可能地限制备份用户,但保留“读取所有内容的 root 权限”。当我运行备份脚本时,我得到ListErrors

ListError etc/httpd/conf/.ssl/[...] [Errno 13] Permission denied: '/etc/httpd/conf/.ssl/[...]'

我不太明白为什么不允许使用 sudo 运行所有命令的备份用户读取某些文件。如果有人能给我指明正确的方向,我会非常高兴。

我认识到一件事:ssh <remote_host> 'sudo whoami'给我以下错误消息:sudo: sorry, you must have a tty to run sudo。我不确定这是否与 rdiff-backup 问题有关。

提前谢谢您!

答案1

刚刚在authorized_keys 的手册页

命令=“命令”

指定每当使用此密钥进行身份验证时执行该命令。用户提供的命令(如果有)将被忽略。

因此我基本上sudo在 authorized_keys 中指定的用户命令中添加了一个,使其看起来像: command="sudo rdiff-backup --server --restrict-read-only /",from="{backup machine's IP}",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa [KEY HERE]

下一个问题是,CentOS 默认需要一个 tty 来执行远程 sudo 命令(请参阅Defaults requirettysudoers 文件);我不确定这是否是一个明智的设置,但我注释掉了那部分。它基本上阻止用户输入ssh <hostname> 'sudo <cmd>',而是必须使用 分配一个 tty ssh -t <hostname> 'sudo <cmd>'。如果有人找到更好的解决方案,请告诉我。

相关内容