Разрешить 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?


person Simmoniz    schedule 03.05.2016    source источник


Ответы (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 должны быть тщательно установлены, чтобы www-data не синхронизировала нежелательные папки с удаленным хостом.

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

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

person Simmoniz    schedule 04.05.2016