0

タイトルが示すように、php からファイルとフォルダーを作成、移動、および削除する機能が必要です。

すべてのディレクトリとファイルを 777 に CHMOD すると、すべてうまくいきますが、755 にすると、スクリプトはアクセス許可に関するエラーで停止します。

私が読んだことによると、777 パーミッションの使用は安全ではないため、行うべきではありません。私は VPS を持っていますが、多数の Web サイト (他の人が管理しているものもあります) をホストしているため、複数のユーザーがいて、「ベスト プラクティス」を実行したいと考えています。

それで、基本的に、私が疑問に思っているのは、これについてどうすればよいですか?私はphpと「ウェブマスタリング」が初めてで、何をすべきかわかりません。

誰かが私を正しい方向に向けることができますか?

最後の注意: PHP から作成されたファイルを移動および削除できることに加えて、スクリプトは Windows マシンから FTP 経由でアップロードされたファイルも移動および削除する必要があります (私がファイルをアップロードする場合、CHMOD は 755 です)。

編集: 私が phpinfo() を実行し、「PHP クレジット」セクションの下で次のことを見つけたことに言及することは、私にとって関連があるかもしれません:

User/Group      nobody(99)/99 
4

5 に答える 5

2

0777 パーミッションなしでファイルとディレクトリを操作できるようにするには、それらのファイルとディレクトリは、PHP スクリプトを実行するのと同じユーザーが所有する必要があります。

于 2012-09-16T20:54:30.367 に答える
2

パーミッションは、所有者ができること、所有者のユーザー グループ (同じユーザー グループ内の所有者のピア) ができること、および他のすべての人ができることに対して設定されます。それが 3 つの数字の意味です。753 は所有者の「7」、グループの「5」、その他全員の「3」です。"7" はフル アクセス (読み取り、書き込み、実行) です。「5」が読み取られて実行されます。削除するには書き込みアクセスが必要です。

それらがどのように機能するかを確認するには、 Linuxファイルのアクセス許可を実際に読んでください。

775 または 770 を使用することをお勧めします。最後の桁は、システム上のすべてのユーザーまたはサイトをブラウズしているすべてのユーザーが実行できるため、できるだけ低くする必要があります。

ftp スクリプトと将来の他のユーザーに関しては、それらが apache ユーザーと同じグループに属していることを確認してください。または、アクセスしたいアカウントのグループを設定し、それに apache アカウントを追加します。

于 2012-09-16T20:55:55.227 に答える
1

所有者、グループ、およびゲストにすべての権限 (読み取り、書き込み、実行) を与える 777 に変更する必要はありません。所有者が PHP プロセスが実行されているものである限り、755 または 700 に設定することができます。PHP スクリプトは Apache プロセスで実行されているため、通常、これは Apache ユーザーになります。

実行権限を付与する必要はありませんが、プロセスがディレクトリの変更 (cd) などを実行できるように、ディレクトリに対して実行権限を付与する必要があります。

于 2012-09-16T20:56:17.157 に答える
1

ネイト、これは UID および GID ベースのアクセス制御の基本的な 101 に関連しています。あなたの「複数の用途」にはそれぞれ、FTP(およびSSH?)アクセス用の独自のUIDがあると想定しています。

通常、Web サーバー (Apache) によって提供されるファイルは、 www-data (または同等のもの)で実行される Apache 子プロセスによって読み取りアクセス可能である必要があり、したがって o:r である必要があり、同様にそれらへのパス上のすべてのディレクトリは o: e.

したがって、大きく 2 つのオプションがあります。(i) suEXEC / suPHP / FastCGI テンプレートを使用して、所有ディレクトリの UID で PHP スクリプトを開始し、(ii) mod_php5 の下でスクリプトを実行し、スクリプトの書き込みアクセスが必要なディレクトリを作成します。www-dataが所有しています。

この 2 番目の方法は、マシン リソースの点では最も効率的ですが、 ユーザー B のリソースへの完全な R/W アクセスをユーザー A に与えるなど、非常に安全ではありません。

この円を二乗する方法はありません。すべてのユーザー間で共有される信頼を保証できない場合は、(i) オプションに基づいた解決策を読み、実装する必要があります。

于 2012-09-16T20:59:56.077 に答える