Я использую сервер lighttpd в Debian GNU/Linux 7.5 (wheezy) и хочу использовать php-страницу для изменения системного времени (я знаю, что могу просто изменить время страницы, но это не то, что мне нужно для этого проекта). Прямо сейчас я использую команду exec()
для непосредственного ввода команд и запуска сценария оболочки. Так что либо:
exec('date --set [HH:MM:SS]')
или же
exec("sh /full/file/path/updateTime.sh") //contains command 'date --set [HH:MM:SS]'
Если я переключаю пользователя в командной строке на www-data и пытаюсь запустить команду date, я получаю ответ: «date: невозможно установить дату: операция не разрешена».
Сценарий оболочки запускается успешно, если я запускаю его как root.
Если я предоставляю второй аргумент exec()
для хранения ответа, он содержит информацию о дате / времени, которую я пытаюсь установить.
Я также попытался редактировать sudoers, чтобы добавить
www-data ALL=(ALL:ALL) ALL
под user privilege specification
и includedir /etc/sudoers.d
без изменений. Я также попытался создать спецификацию псевдонима Cmnd для /bin/date
и добавить ее к пользователю www-data без изменений.
Я довольно неопытен со всем этим, поэтому любая помощь приветствуется.
Сайт не будет работать, но я знаю об опасностях, связанных с принятием команд оболочки от пользователей. Я проверил файл php.ini
чтобы убедиться, что команда exec()
не отключена. Я попытался передать право собственности на скрипт оболочки в /var/www/
data на www-data без изменений. Разрешения на данный момент установлены на 777.