suPHP выполняет PHP-скрипт от имени пользователя root - PullRequest
0 голосов
/ 14 апреля 2011

Я создал несколько сайтов. Теперь мне нужно выполнить root задач. Я создал веб-платформу и установил. root владеет всеми скриптами в /var/private-www/, и они chmodded (0777). В /var/private-www/test.php стоит: <?php echo exec('whoami'); ?>. Моя suPHP конфигурация такая:

 [global]
;Path to logfile
logfile=/var/log/suphp/suphp.log

;Loglevel
loglevel=info

;User Apache is running as
webserver_user=root

;Path all scripts have to be in
docroot=/var/private-www

;Path to chroot() to before executing script
;chroot=/mychroot

; Security options
allow_file_group_writeable=false
allow_file_others_writeable=false
allow_directory_group_writeable=false
allow_directory_others_writeable=false

;Check wheter script is within DOCUMENT_ROOT
check_vhost_docroot=true

;Send minor error messages to browser
errors_to_browser=false

;PATH environment variable
env_path=/bin:/usr/bin

;Umask to set, specify in octal notation
umask=0077

; Minimum UID
min_uid=0

; Minimum GID
min_gid=0


[handlers]
;Handler for php-scripts
application/x-httpd-suphp="php:/usr/bin/php-cgi"

;Handler for CGI-scripts
x-suphp-cgi="execute:!self"

Когда я выполняю test.php в моем веб-браузере, он говорит: www-data :(. Не root ... Даже когда я выполняю его в командной строке. Кроме того, я выполнял a2enmod suphp и apachectl restart , так что я думал, что это будет работать. Как я могу это исправить?

Ответы [ 4 ]

1 голос
/ 14 апреля 2011

Краткий ответ: не делай этого.

Любые задачи, требующие запуска с правами root, следует выполнять с помощью задания cron.

В любом случае, почему вы пытаетесь это сделать?

1 голос
/ 14 апреля 2011

Я сожалею, что сказал это, и я не хочу быть помощником, но:

Возможно, вам потребуется перекомпилировать . Минимальные UID и GID не являются (просто) настраиваемыми элементами, также есть минимальные проверки, сделанные во время компиляции. Также нет гарантии, что нет жестко заданных проверок на запуск от имени root.

Вы действительно должны рассмотреть альтернативный метод выполнения желаемых задач, который не подразумевает показ веб-приложения, работающего от имени пользователя root. Регулярно выполняемое задание cron, которое проверяет незавершенные задачи или службу рабочей очереди, может легко достичь этих целей. В этом случае веб-интерфейс не должен запускаться от имени пользователя root.

1 голос
/ 14 апреля 2011

Взгляните на эти известные атаки веб-приложений: OWASP . Запуск от имени пользователя root и разрешения 0777 - это то, чего вам следует избегать.

0 голосов
/ 14 октября 2012

Это не тот ответ, который вы ищете, но вы должны немного об этом подумать:

Хотя бывают случаи, когда вы хотели бы сделать это, запускать все ваши php-скрипты от имени root в целом плохопопрактикуйтесь, и вы можете столкнуться с рядом препятствий.

Один из простых способов избежать этого - использовать sudo.Добавьте свои команды в sudoers для www-данных и позвольте вашим сценариям выполнить внешнюю команду с помощью sudo.

Даже внешние сценарии php могут запускаться от имени root с помощью sudo.Таким образом, вы достигнете разделения привилегий.

В противном случае вам придется запустить apache + modphp от имени пользователя root или взломать код suphp.

...