0

Linode で LAMP スタックを実行しています。Ubuntu のバージョンは Lucid です。

PHP スクリプトがコマンドmkdir()またはmove_uploaded_fileコマンドを実行すると、新しく作成されたフォルダー/ファイルが UNIX ユーザー「Grusha」によって所有されてしまいます。このユーザーを作成しましたが、ファイルを所有するべきではありません。www-dataWeb フォルダー全体は、新しいフォルダー/ファイルが移動しているフォルダーを含む (拡張子による) と同様に、によって所有されます。

ユーザーの /etc/passwd 行は次のようになります。

grusha:x:1000:1003:,,,:/home/grusha:/bin/bash

/etc/group は次のとおりです。

grusha:x:1003:

Grusha は、作成された PHP セッションも所有しますが、他には何もありません。システム上のプロセスやファイルも Grusha として実行されません。

公開鍵でログインしましたが、通過するユーザーは Grusha ではありません (ルートでもありません)。

Grusha を削除すると、Apache を再起動できなくなります。取得bad usernameし、再起動に失敗します。PHP セッションも機能しません。

最後に Grusha を再度追加すると、サーバーが起動し、スクリプトが Grusha ではなく Grusha が所有するファイルを作成することを除いて、すべてが機能しますwww-data

できる限り調べてみましたが、情報が見つかりません。私httpd.confは空です。私apache2.confには次の行が含まれています:

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

これらの変数は のように定義さwww-data/etc/apache2/envarsます。

誰か提案があれば、私は感謝します。

どうもありがとう、エリオット

4

2 に答える 2

0

suPHPモジュールはおそらく有効になっています。その機能は、スクリプトを所有するユーザーのユーザーIDでPHPコードを実行www-dataできるようにすることです。これは、共有サーバーでは非常に安全ではない可能性があります。/etc/apache2/mods-enabled/suphp.loadとを削除してsuPHPをオフにしてみてください/etc/apache2/mods-enabled/suphp.conf

問題ではない可能性が低い場合は、ユーザーが実際に(in )grushaと同じ数値のユーザーIDを持っていないことを確認してください。しかし、それはおそらくありそうもないことです。www-data/etc/passwd

于 2012-04-10T00:46:25.680 に答える
0

あ、これで解決。申し訳ありません。
/etc/apache2/sites-enabled/ に mpm ディレクティブがあり、apache が grusha として実行されました。
それがどのように起こったのかはわかりませんが、いずれにせよ修正されました。私の問題について考えてくれてありがとう。

于 2012-04-10T16:04:22.100 に答える