WordPressサイトのドキュメントルートにsgidを再帰的に追加しました。その中にファイルとディレクトリを作成してグループを継承できます。 FTPで作成されたディレクトリもsgidでうまく機能します。ただし、Apache(www-data)によって生成されたディレクトリではsgidビットが有効になっていないため、内部のすべてのエントリはデフォルトのwww-data:www-dataを使用して生成されます。
たとえば、uploads/2017 ディレクトリでは、Apache は sgid なしで 09 ディレクトリを作成しました。ここでrootユーザーを使用してディレクトリを作成してもsgidが有効になります。
drwxrwsr-x+ 10 www-data myuser 4096 Sep 19 20:44 .
drwxrwsr-x+ 16 www-data myuser 4096 Sep 19 20:48 ..
drwxrwxr-x+ 2 www-data myuser 4096 Sep 19 19:23 09
drwxrwsr-x+ 2 root myuser 4096 Sep 19 21:04 test
新しいディレクトリを作成するときにApacheにsgidを使用させるにはどうすればよいですか?
ベストアンサー1
これはWordPressの仕事です。そうですか?私も同じ問題があり、Apacheもせいでしたが、私が見つけた解決策は実際にはWordPressの設定でした。
バラよりhttps://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions
私の特定のサーバーでは、WordPressは説明と同じ方法で独自のファイル権限設定を使用し、SGIDビットを無視します。理由が何なのかわかりませんが、意図的なようです。私の解決策は、wp-config.phpファイルに特定の権限マスクを追加することでした。
define( 'FS_CHMOD_DIR', 02775 );
0 == 8進数
2==SGID設定
755話
既存のWordPressファイルとディレクトリが正しい権限(すべてのディレクトリのSGIDを含む)に設定された後、WordPressによって作成された新しいファイルとディレクトリ(プラグイン、テーマ、アップロード)は02755ファイルマスクを使用し、正しいグループ所有権を継承します。 Apacheユーザーwww-dataもこのグループに存在する必要があります。
詳細は:
すべてのSFTPユーザーとApacheが使用するグループを作成します。sudo groupadd sftp-grp。
sftp-grp グループに Apache を追加する: sudo usermod -a -G sftp-grp www-data
上記のようにsftp-grpグループに一般ユーザーを追加します。
すべてのWordPressファイルをApacheが所有しているが共有グループを有効にする: sudo chown -R www-data:sftp-grp /var/www/path-to-wordpress
すべてのWordPressファイルがグループの読み取り/書き込みであることを確認してください(.htaccessとwp-config.phpを再検討する必要があるかもしれません):sudo chmod -R g + rw /var/www/path-to-wordpress
WordPressホームディレクトリにSGIDビットを追加します。 sudo chmod g+s /var/www/path-to-wordpress
...およびすべてのサブディレクトリ:sudo find /var/www/path-to-wordpress -type d -exec chmod g + s '{}' \;
wp-config.phpに追加:定義( 'FS_CHMOD_DIR'、02775);