为什么 rsync+cron 会因 opendir 权限被拒绝而失败?

为什么 rsync+cron 会因 opendir 权限被拒绝而失败?

我正在尝试使用 rsync 进行夜间异地备份。有一个文件夹/media/raid1/backup需要每晚使用以用户身份运行的 cron 作业上传到不同的服务器,server_sync该作业存在于两个机器上。

这是 rsync 命令:

#!/bin/bash
rsync -axz -e "ssh -p 222" --delete /media/raid1/backup/ filch:/backup_offsite --partial-dir /backup_offsite/.rsync_partial --exclude '*.old' --exclude 'old' --stop-at 06:00

使用命令以交互方式运行时,sudo -H -u server_sync rsync...一切正常。但是,cron 作业每晚都会失败并显示以下消息(用户名被屏蔽):

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/server_sync>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=server_sync>
Date: Sun, 12 Aug 2018 03:00:11 +0200 (CEST)

rsync: opendir "/media/raid1/backup/j****" failed: Permission denied (13)
rsync: opendir "/media/raid1/backup/m*******" failed: Permission denied (13)
rsync: opendir "/media/raid1/backup/r***" failed: Permission denied (13)
IO error encountered -- skipping file deletion
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1196) [sender=3.1.2]

以下是要备份的文件的权限:

# ls -al /media/raid1/backup/
total 316
drwxr-s---  5 root     backup_sync  .
drwxr-xr-x 19 root     root         ..
drwxr-s---  3 j****    server_sync  j****
drwxr-s---  2 m******* server_sync  m*******
drwxr-s---  3 r***     server_sync  r***

server_sync 用户同时属于两个组:

# id server_sync
uid=124(server_sync) gid=131(server_sync) groups=131(server_sync),129(backup_sync),130(media)

我确信我在使用 sudo 时与在 cron 模式下相比缺少了文件权限或权限/组成员资格的某些内容 - 有人可以指出吗?

答案1

看来 cron 没有设置附加组。从 cron 作业运行 id 命令并将结果写入文件或 stdout 并通过邮件获取。

相关内容