问题
我有以下情况:
- 运动正在使用用户:组
motion:motion
和权限创建目录和文件755
作为 cron 任务,我想定期将这些文件复制到远程计算机然后删除它们。我尝试使用的命令是
sudo rsync -avz --remove-source-files /home/pi/Pictures/SecurityCamera/ username@host:/Users/username/Pictures/SecurityCamera
这些文件是已成功复制到远程机器,但没有
sudo
,本地文件不会被删除。使用sudo
,我需要输入远程机器的密码,尽管我已经设置了公钥认证。
尝试的解决方案
我尝试更改遥控器上的几个设置sshd_配置无济于事
PermitRootLogin without-password
StrictModes no
我也尝试将pi
和root
用户都添加到运动组,但仔细查看权限后发现,组对我正在移动的文件没有写权限。
总结
如何使用sudo rsync
来删除其他用户创建的本地文件而不输入远程机器的密码?
答案1
在我看来你是在 Raspberry Pi 上执行此操作的。
- 将此字符串添加
pi ALL=(ALL) NOPASSWD: ALL
到/etc/sudoers
- 将用户添加
pi
到组motion
:usermod -a -G motion pi
- 将保存文件的目录权限更改
motion
为 775 (chmod -R 775 /path/to/motion/dir
) 您现在可以使用而sudo rsync
无需提供密码,但请保留用户“pi”的凭据,因为它几乎是root
现在
PS 另一种方法是通过为用户分配密码和 shell 来允许用户motion
成为普通用户,sudo usermod -s /bin/sh motion; sudo passwd motion
这样您就可以以用户 motion 身份登录进行 rsyncing
PPS 根据评论,您真正需要的是:
echo '*/5 * * * * root /usr/bin/rsync -avz --remove-source-files /home/pi/Pictures/SecurityCamera/ username@host:/Users/username/Pictures/SecurityCamera' | sudo /usr/bin/tee /etc/cron.d/saveMotionPics.task