允许www数据在其他用户(php)下执行rsync

允许www数据在其他用户(php)下执行rsync,php,linux,rsync,sudo,sudoers,Php,Linux,Rsync,Sudo,Sudoers,我想允许php在其他用户的权限下执行rsync,比如说wwwsync用户 我如何通过sudo配置实现这一点?以下是我所做的: 在sudo配置中(sudo visudo) 当以wwwsync用户身份登录时,该行将正常工作 rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/some/path/ [remoteuser]@[remot

我想允许php在其他用户的权限下执行rsync,比如说wwwsync用户

我如何通过sudo配置实现这一点?以下是我所做的:

在sudo配置中(sudo visudo)

当以wwwsync用户身份登录时,该行将正常工作

rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/some/path/ [remoteuser]@[remotehost]:~/some/path/
但是使用shell_exec()从php执行的这行代码不起作用

sudo -u wwwsync rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/some/path/ [remoteuser]@[remotehost]:~/some/path/

在wwSync用户下执行rsync是否正确?sudo配置设置正确吗?

我终于找到了如何让它工作的方法

sudoer配置错误。别名必须是全部,而不是随机别名。此外, “rsync”必须设置“-H”选项,以便在执行命令时,命令将目标主文件夹设置为主文件夹

在sudo配置中(sudo-visudo)

使用shell_exec()从php执行的这一行确实有效(为用户wwwsync和远程主机正确设置了ssh密钥)

注意:必须完全设置wwwsync Rights/perms,以便www数据不会将不需要的文件夹同步到远程主机

这最终允许我在主服务器和从服务器之间执行安全的资源同步:

如果这有帮助的话

sudo -u wwwsync rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress ~/some/path/ [remoteuser]@[remotehost]:~/some/path/
www-data ALL=(wwwsync) NOPASSWD: /usr/bin/rsync
sudo -H -u wwwsync rsync -avz -e "ssh -i ~/.ssh/id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" --progress /some/path/ [remoteuser]@[remotehost]:~/some/path/