Попытаюсь описать суть проблемы:Существует web-интерфейс для работы клиентов, пока на php. Клиенты делают некоторые изменения, которые затем сохраняются в базе.
Дальше должно происходить следующее: этот же или другой скрипт, получив данные из базы, формирует командный файл, а затем этот командный файл должен исполниться.Понятно, что можно сформировать и запустить файл (shell-скрипт) чем-нибудь вроде system(), но возникает проблема: у того пользователя, под именем которого запустится файл должны быть права на соответствующие команды (если я правильно понимаю), а значит теоретически, например при взломе php-скрипта, недоброжелатель сможет исполнить всякую гадость.
Обьяснил конечно сумбурно. В общем смысл примерно такой как, например, в Cpanel: когда пользователь делает поддомен и меняются соответствующие конфиги dns. Т.е. каким образом можно изолировать клиентскую часть от серверной, но при этом при изменениях, сделанных клиентом через web-интерфейс сразу же происходили изменения и на сервере?
Как это все максимально безопасно реализовать или делать это на php вообще изврат? Как это сделано в Cpanel и вообще на чем она написана?Если что-то подобное уже обсуждалось или есть другие интересные ссылки, постите плиз, т.е. поиски подобной информации пока что пользы не принесли.
Привет,Про CPanel не знаяю, у нас принят такй подход:
1. Web interface делает записи в базе данных, затем ставит соотвествующий маркер. Маркером может бытрь просто создание пустого файла в определенном месте или даже запись в определенной таблице в базе.
2. Исполняющий процесс запускается периодически и, находя маркер, делает то, что ему указано при наличие маркера. По исполении действия маркер стирается (или в базе помечается, что строка обработана). Тут можно пользоваться crontab-ом, можно свой daemon запустить, а если с файлам-маркерами работать, очень удобен supervise D. J. Bernstein-a.
WWell,
Асен Тотин,Спасибо за ответ, понятно, что запускать cron'ом скрипт можно, но здесь мы как-раз хотим избежать подобного - ведь делать слишком частый запуск как-то некрасиво имхо, а необходима практически мгновенная реакция сервера на новые параметры.
Есть немного другой вариант:
Скрипт, который работает с базой в конце должен инициировать работу другого скрипта, который, возможно, написан на другом языке и исполняется соответственно под другим демоном с другими правами и снаружи доступа к нему нет. Тоже несколько некрасиво.
Хотя в принципе наверное подход верный - было бы замечательно, если бы это все работало под одним процессом, но с разными правами.