web-dev-qa-db-ja.com

Linuxでファイル許可を設定してPHPがディレクトリに書き込みできるようにする

Codeigniterで構築され、LinuxボックスでホストされるWebサイトがあります。

ファイルのアクセス許可の設定に関しては、「ベストプラクティス」に準拠しようとしていますが、ディレクトリを777に設定した場合のセキュリティへの影響を完全に理解しているかどうかはわかりません。

公開されている画像フォルダがあります(ウェブサイトのユーザーがウェブサイトの画像を見るために必要です)。私のCodeigniterコードは、そのフォルダーのサブディレクトリ(「images/data」)に時々書き込む必要があります。

すべてのファイルはデフォルトで644、ディレクトリは755にデフォルト設定されています。Codeigniterが書き込む必要があるディレクトリについては、777にアクセス許可を設定します。

緩すぎるようです。 Codeigniterのみがそれらのディレクトリへの「書き込み」アクセスを許可されるようにシステムを制限する方法はありますか?所有者を「Apache」に設定することについてオンラインでいくつかの記事を読みましたが、私が知る限り、Linuxボックスには「Apache」所有者がいません。ルートとWebサイトドメイン所有者(サーバーは複数のドメインをホストし、それぞれに「ユーザー」アカウントがあります)が表示されます。

3
neomech

ISPから正しい方向、つまりサーバーで使用されているPHPファイルハンドラーを示すフィードバックがありました。

私のサーバーはPHP 5のDSOハンドラーでセットアップされています。つまり、phpスクリプトによって作成されたファイルとディレクトリは「nobody」によって所有されるため、「Other」からアクセスできる必要があります。 PHPスクリプトで書き込む必要があるディレクトリのアクセス許可を777に設定する必要があります。

別の方法は、PHP 5ハンドラーをsuPHPに設定することです。これは、私のPHPスクリプトがPHPコードの所有者として書くことを意味するため、もう少し安全です。これは、ディレクトリを755のままにしておくことができることを意味します。明らかに、これには少しパフォーマンス上の打撃があります。また、現在のアクセス許可の設定によっては、既存のファイルとフォルダーのアクセス許可を大幅に変更する必要があります。また、PHPスクリプトにサイト所有者と同じ権限がある場合、誤動作しているスクリプトで大きな損害を与える可能性があるという懸念もあります。

以下に、DSOとsuPHPの違いの概要を示します。 https://helpdesk.wiredtree.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1663#

1
neomech