特定のディレクトリへのApache書き込みアクセスを許可するようにサーバーを変換すると、このソリューションは正しく表示されますか?

特定のディレクトリへのApache書き込みアクセスを許可するようにサーバーを変換すると、このソリューションは正しく表示されますか?

一日中これをやってやっと見つけたようですが、本番環境に適用する前に確認したかったです。

apache:apacheユーザーが複数のディレクトリへの書き込みアクセスを許可するようにサーバーを変更しています。私はjeff:jeffサーバーの唯一のユーザーです。

私のディレクトリ構造は次のとおりです。

/home/jeff/www/                       0755 jeff:jeff
/home/jeff/www/example1.com/          0755 jeff:jeff
/home/jeff/www/example2.com/          0755 jeff:jeff
/home/jeff/www/example2.com/uploads/  0755 apache:apache

問題は次のとおりです。

chmod apache:apache uploads/書き込みアクセスを許可するために実行しますapache

sftpでファイルを編集したいときはいつでもそのファイルに戻り、完了したら元に戻すuploads/必要があります。chownjeff:jeff

私の初期の解決策は次のとおりです。

  • apachejeffグループにユーザーを追加する
  • jeffグループにディレクトリへの書き込み権限を手動で付与することによってuploads/chmod 775
  • ユーザーが新しいファイル+フォルダ+サブフォルダを.requiresディレクトリapacheに作成するように強制します。apache:jeffsetgid 2775uploads/
  • ユーザーが=を介してapache新しいファイル+フォルダ+サブフォルダを作成するように強制するumask 002775システム

私は私が仕事をしっかりしていると確信できる時間は約50%です。

大丈夫だと思いますか?もっと良い方法がありますか?私は何を逃したことがありませんか?

Jimの助けを借りて、これが私が使用した最終的な解決策です。

参考までに。

# usermod --append --groups apache jeff

> Relogin all sessions

# chown -R apache:apache www/example.com/uploads/
# find www/example.com/uploads/ -type d -exec chmod 775 {} \;
# find www/example.com/uploads/ -type f -exec chmod 664 {} \;

# systemctl edit --full php.service

-----------
[Service]
UMask=0002
-----------

# systemctl daemon-reload
# systemctl restart php

WordPressユーザーはwp-config.phpに以下を追加する必要があります。

define('FS_CHMOD_DIR', 0775);
define('FS_CHMOD_FILE', 0664);

答え1

はい、これは一般的な考えでほぼ似ていますが、ユーザーをapacheグループに追加するのではなく、jeffより安全で便利です(重要な場合は拡張可能)。説明:

  1. apacheグループから取り出してくださいjeff

  2. 代わりにグループjeffに追加してください。apacheまず、これはapacheすべてのグループファイルへの読み取りアクセスをブロックしますjeff

  3. chownuploads/グループ内の誰もがファイルを作成/削除できるディレクトリです。apache:apachechmod 775apache

  4. 生成されたすべての項目がグループ書き込み可能になるようにapacheファイル生成を使用します。umask 2apache

この方法:

chownA)ファイルを編集する前にファイルを作成する必要はありません。すべてのuploadファイルはグループに属し、apacheグループ書き込みが可能で、すでにグループに属していますapache

B)他のユーザーをapacheグループに簡単に追加したり、アップロードしたファイルを編集したりできます。

関連情報