6

apacheで実行されているphpを設定して、apacheが所有するのではなく、それを作成するプログラムの所有者が所有するフォルダーでフォルダーを作成する方法はありますか?

ワードプレスを使用すると、アップロードする新しいフォルダーが作成されますが、これらはapache.apacheによって所有されており、実行しているサイトでは所有されていません。これはosticketsを使用しても発生します。今のところ、サーバーにSSHで接続し、フォルダーをchmodする必要がありますが、それを実行するプログラムの外部で所有権をオーバーライドする設定があるように思われます。

4

4 に答える 4

3

Safe_modeサーバーでオンになっています。この関数mkdir()は、現在のスクリプト所有者とは異なる所有者 (「apache」、「none」、..) を持つフォルダーを作成します。また、スクリプトは、別の所有者 (現在のスクリプト所有者とは異なります) でそのフォルダーにファイルをアップロード (移動、コピー) できませんでした。

無効safe_modeにすると、それがうまくいきます。

詳細については、 http://php.net/manual/en/features.safe-mode.phpを参照してください。

PSを有効にすると、phpで関数をsafe_mode使用できなくなります。chmod()

于 2010-04-07T16:38:33.117 に答える
2

もう1つの方法は、apacheユーザーと「顧客ユーザー」を新しいグループに入れることです。追加のディレクトリはスティッキービットを使用する必要があるSGIDため、新しいファイルごとにこの新しいグループへのグループ割り当てが行われます。このようにして、Webサーバーと「顧客ユーザー」は問題なくファイルを操作できます。

[17:57] progman@proglap /tmp/test $ ls -al /tmp/test
total 9
drwxrwsr-x  2 root users   48 Apr  1 17:55 .
drwxrwxrwt 36 root root  9264 Apr  1 17:53 ..

ご覧のとおり、ディレクトリにはスティッキービットがSGIDあり、所有者は私()がいる「users」グループprogmanです。いいえ、別のユーザーがファイルを追加すると、グループは自動的にこのグループに設定されます

[17:55] proglap ~ # touch /tmp/test/x

これはルートから実行されます。今、私たちは得る:

[17:57] progman@proglap /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x  2 root users   72 Apr  1 17:59 .
drwxrwxrwt 36 root root  9264 Apr  1 17:53 ..
-rw-r--r--  1 root users    0 Apr  1 17:59 x

ご覧のとおり、追加されたファイルはルートからのものですが、グループはに設定されてusersおり、この方法削除できます

[18:00] progman@proglap /tmp/test $ rm x
rm: remove write-protected regular empty file `x'? y
[18:01] progman@proglap /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x  2 root users   48 Apr  1 18:01 .
drwxrwxrwt 36 root root  9264 Apr  1 17:53 ..

グループ読み取りアクセスのようにファイルを編集するchmod場合は、を変更する必要があることに注意してください。ただし、root-accessを処理してを使用するよりも、を変更する方が、おそらくで作業するよりも優れています。rw-r--r--chmodumaskchown

于 2010-04-01T16:05:28.810 に答える
1

直接ではありません。root でない限り、ファイルの所有権を別のユーザーに「譲る」ことはできません。「 AssignUserID 」apache ディレクティブを使用して調査し、その特定の vhost を特定のユーザー/グループとして強制的に実行することができます。これにより、Apache/PHP は適切な所有権を持つファイルを作成します。

于 2010-04-01T14:08:54.450 に答える
0

PHP chown()関数をチェックしてください

于 2010-04-01T14:53:09.320 に答える