我正在尝试使用 rsnapshot 从我的家庭服务器设置远程备份。我希望我的服务器连接到我的笔记本电脑并通过 SSH 进行备份。一切都设置正确,我可以完美地从我的服务器连接到笔记本电脑。
sudo rsnapshot -v hourly
问题是我运行时(从服务器)出现权限错误:
...
rsync: opendir "/foo/bar" failed: Permission denied (13)
...
我在笔记本电脑上创建了一个单独的backup
用户,并通过 ssh 与该用户建立连接。这是我的~/.ssh/config
rsnapshot 正在使用的:
Host macbookpro
HostName macbookpro
PreferredAuthentications publickey
User backup
Identity File ~/.ssh/keys/macbookpro.id_rsa
我还在笔记本电脑上的 sudoers 文件中添加了以下内容,当 rsnapshot 远程调用时,这应该允许 rsync 以 root 身份运行:
backup ALL=(root) NOPASSWD: /usr/bin/rsync
但每当我运行 rsnapshot 时,我都会继续收到权限错误。有人知道哪里出了问题吗?
答案1
好的,看来我搞明白了。我在笔记本电脑上四处查看,尝试以用户身份手动运行该rsync
命令(rsnapshot
通常会通过 ssh 调用)backup
,并注意到我在本地也遇到了权限错误。
看来,即使你的 sudoers 文件中有条目明确允许用户在没有密码的情况下运行某个二进制文件,你仍然需要在命令前面加上sudo
。 (我在 MacBook 上,所以我不确定这是否特定于 OSX)
似乎没有很好的方法来做到这一点,rsnapshot.conf
所以我按照本教程
我在笔记本电脑上创建了一个名为的文件rsync_sudo.sh
并添加了以下内容:
/usr/bin/sudo /usr/bin/rsync "$@";
然后将其符号链接到/usr/bin/
并返回我的服务器,我添加了以下内容/etc/rsnapshot.conf
:
rsync_long_args --rsync-path=rsync_sudo.sh --delete --numeric-ids --relative --delete-excluded
现在一切似乎都正常了