linux — разрешить www-данным выполнять rsync под другим пользователем (php)

Я хотел бы позволить php выполнять rsync под привилегиями других пользователей, скажем, пользователя wwwsync.

Как я могу добиться этого с помощью конфигурации sudo? Вот что я сделал:

В конфигурации sudo (sudo visudo)

www-data www-data-sync=(wwwsync) NOPASSWD: /usr/bin/rsync

Эта строка работает, как и ожидалось, когда вы зарегистрированы как пользователь wwwsync

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

Но эта строка выполняется из PHP с использованием shell_exec () не работает

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/

Это правильный способ выполнить rsync под пользователем wwwsync? Правильно ли настроена конфигурация sudo?

1

Решение

Я наконец узнал, как заставить это работать.

Конфигурация sudoer была неправильной. Псевдоним должен быть ВСЕМ, а не случайным псевдонимом.
В «rsync» должна быть установлена ​​опция «-H», поэтому команда устанавливает целевую домашнюю папку в качестве домашней папки во время выполнения команды.

В конфигурации sudo (sudo visudo)

www-data ALL=(wwwsync) NOPASSWD: /usr/bin/rsync

Эта строка, выполняемая из php с использованием shell_exec (), работает (с ключом ssh, правильно установленным для пользователя wwwsync и удаленного хоста)

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/

Замечания : wwwsync rigths / perms должен быть осторожно настроен, чтобы www-data не синхронизировала нежелательные папки с удаленным хостом.

Наконец, это позволяет мне выполнить безопасную синхронизацию ресурсов между главным сервером и подчиненными серверами: Безопасный способ синхронизировать ресурсы между серверами через php / linux

Если бы это могло помочь …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]