使用 rsync 删除其他用户创建的文件

使用 rsync 删除其他用户创建的文件

问题

我有以下情况:

  • 运动正在使用用户:组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 

我也尝试将piroot用户都添加到运动组,但仔细查看权限后发现,组对我正在移动的文件没有写权限。


总结

如何使用sudo rsync来删除其他用户创建的本地文件而不输入远程机器的密码?

答案1

在我看来你是在 Raspberry Pi 上执行此操作的。

  1. 将此字符串添加pi ALL=(ALL) NOPASSWD: ALL/etc/sudoers
  2. 将用户添加pi到组motionusermod -a -G motion pi
  3. 将保存文件的目录权限更改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

相关内容