私はサーバー管理の初心者です。
私はユーザーが自分のウェブサイトからファイルをアップロードできるように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フォルダ内にディレクトリを自動的に作成したいと思います。最良のアプローチは何ですか?
html/で他の人に書き込み権限を割り当てます。
drwxr-xr-wx 32 root root 4096 Feb 4 17:20 html
html/に書き込むためにnagcmdグループにのみ権限を与えます(これを行う方法がわかりません)。
他の人
私はネットワークセキュリティを損なうことはありません。
よろしくお願いします。
答え1
これはシステムによって異なります。ただし、おそらくというユーザーとグループがあり、www-data
サーバーはそのユーザーとグループとして実行されています。
CAP_CHOWN
あなただけがユーザーを変更できます(あなたはrootです)。グループにファイルを追加できますが、www-data
まず管理者にグループに追加するように求める必要があります。
その機能がない場合は、CAP_CHOWN
ファイルアクセス制御リストを使用できます。
setfacl -R -m "g:www-data:rwX" "directory-name"
ファイルシステムのアクセス制御リストを有効にする必要があるかもしれません。ただし、これは高い権限(FSでのワンタイムアクティベーションを除く)を必要としないため、最も安全な方法です。