0

私はいくつかのウェブサイトを作成しました。root次に、タスクを実行する必要があります。Webプラットフォームを作成してインストールしました。rootのすべてのスクリプトを所有しており、chmod され/var/private-www/ています (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"

Webブラウザで実行すると、 :(.test.phpいいえ...コマンドラインで実行しても。その上、やったので、うまくいくと思っていました。どうすれば修正できますか?www-dataroota2enmod suphpapachectl restart

4

4 に答える 4

1

これらの既知の Web アプリ攻撃を見てみましょう: OWASP . root として実行することと 0777 パーミッションは、どちらも避けるべきものです。

于 2011-04-13T21:14:00.980 に答える
1

短い答え:これをしないでください。

root で実行する必要があるタスクは、cron ジョブを介して実行する必要があります。

それにしても、どうしてこんなことをしようとしているのですか?

于 2011-04-13T21:17:51.320 に答える
1

こんなことを言ったことは後悔するだろうし、イネーブラーにはなりたくないが、

おそらく再コンパイルが必要になるでしょう。最小の UID と GID は (単なる) 構成可能な項目ではなく、コンパイル時にも最小限のチェックが行われます。また、ルートとしての実行に対してハードコーディングされたチェックがないという保証もありません。

root として実行されている Web アプリケーションを公開する必要のない、目的のタスクを実行する別の方法を検討する必要があります。未完了のタスクやワーク キュー サービスをチェックする定期的に実行される cron ジョブは、これらの目標を簡単に達成できます。Web に公開されたフロントエンドは、root として実行する必要はありません。

于 2011-04-13T21:18:01.260 に答える
0

これはあなたが探している答えではありませんが、これを少し考慮する必要があります。

そうしたい場合もありますが、すべての php スクリプトを root として実行することは一般的に悪い習慣であり、多くの障害に直面する可能性があります。

これを回避する簡単な方法の 1 つは、sudo を使用することです。コマンドを www-data の sudoers に追加し、スクリプトが sudo を使用して外部コマンドを実行できるようにします。

外部の php スクリプトでさえ、sudo を介して root として実行できます。このようにして、特権の分離を実現します。

そうしないと、root として apache+modphp を実行するか、suphp のコードをハックする必要があります。

于 2012-10-14T11:04:32.290 に答える