Это для ничем не примечательного LAMP-сервера под управлением Ubuntu. Причина, по которой я хочу это сделать, заключается в том, что я хочу, чтобы php-скрипт мог запускать команду linux через функцию exec (), а для команды, которую я хочу запустить, требуется разрешение, которого нет у `` никто ''. Я добавил свой новый пользователь web с соответствующими разрешениями, теперь мне просто нужно, чтобы мой веб-сервер был пользователем web.
Он находится в:
/etc/apache2/envvars
И обычно (по умолчанию):
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
Вы можете изменить пользователя, которого запускает apache, как здесь. Вам нужно будет перезапустить apache, чтобы изменения вступили в силу.
Что вам действительно нужно, так это SUEXEC. То, что вы предлагаете, довольно быстро и грязно; это также представляет огромную угрозу безопасности.
Что вам действительно нужно делать, так это этот.
Посмотри на suexec. В качестве альтернативы вы можете установить пользователя, от имени которого запускается Apache. Это отрывок из моего httpd.conf
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User www
Group www
Я знаю, что это будет поздно, но я наткнулся на этот вопрос, когда пытался решить аналогичную проблему. Я бы посоветовал тебе бежать КТО Я ТАКОЙ для определения текущего пользователя. Затем предоставьте пользователю правильное разрешение, используя ВИСУДО
По умолчанию apache работает с пользовательскими www-данными, вы можете применить разрешение в Visudo включив следующую строку в / и т.д. / sudoers
www-data ALL = NOPASSWD : /usr/local/bin
вы можете заменить / USR / местные / бен с командой, которую вы хотите запустить в своем скрипте.