Apacheユーザーに書き込み権限を付与する方法

Apacheユーザーに書き込み権限を付与する方法

私はサーバー管理の初心者です。

私はユーザーが自分のウェブサイトからファイルをアップロードできるようにclass.upload.phpライブラリを使用しています。これを行うには、次のフルパスを提供しました:uploads/gifs/90/x.gifこのパスは私のサーバーにはありませんが、作成したいと思います。

私のPHPログは次を返します。PHP Warning: mkdir (): Permission denied

私のサーバーがroot権限でアップロードフォルダを作成すると、ライブラリはファイルをアップロードする777ときに残りのパスを正しく作成します。ユーザーApacheはgifs / 90 / x.gifを所有しています。

上記のように、Apacheユーザーにはhtmlフォルダへの書き込み権限がありません。 etc/groups では、Apache がこのグループに属していることがわかります。 nagcmd: x: 503: nagios, apache

サーバーのWebフォルダには、次の権限があります。 drwxr-xr-x 32 root root 4096 Feb 4 17:20 html

ライブラリがhtmlフォルダ内にディレクトリを自動的に作成したいと思います。最良のアプローチは何ですか?

  1. html/で他の人に書き込み権限を割り当てます。 drwxr-xr-wx 32 root root 4096 Feb 4 17:20 html

  2. html/に書き込むためにnagcmdグループにのみ権限を与えます(これを行う方法がわかりません)。

  3. 他の人

私はネットワークセキュリティを損なうことはありません。

よろしくお願いします。

答え1

これはシステムによって異なります。ただし、おそらくというユーザーとグループがあり、www-dataサーバーはそのユーザーとグループとして実行されています。

CAP_CHOWNあなただけがユーザーを変更できます(あなたはrootです)。グループにファイルを追加できますが、www-dataまず管理者にグループに追加するように求める必要があります。

その機能がない場合は、CAP_CHOWNファイルアクセス制御リストを使用できます。

setfacl -R -m "g:www-data:rwX" "directory-name"

ファイルシステムのアクセス制御リストを有効にする必要があるかもしれません。ただし、これは高い権限(FSでのワンタイムアクティベーションを除く)を必要としないため、最も安全な方法です。

関連情報