Apacheはsgidアクティベーションディレクトリを作成しません。

Apacheはsgidアクティベーションディレクトリを作成しません。

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もこのグループに存在する必要があります。

詳細は:

  1. すべてのSFTPユーザーとApacheが使用するグループを作成します。sudo groupadd sftp-grp。

  2. sftp-grp グループに Apache を追加する: sudo usermod -a -G sftp-grp www-data

  3. 上記のようにsftp-grpグループに一般ユーザーを追加します。

  4. すべてのWordPressファイルをApacheが所有しているが共有グループを有効にする: sudo chown -R www-data:sftp-grp /var/www/path-to-wordpress

  5. すべてのWordPressファイルがグループの読み取り/書き込みであることを確認してください(.htaccessとwp-config.phpを再検討する必要があるかもしれません):sudo chmod -R g + rw /var/www/path-to-wordpress

  6. WordPressホームディレクトリにSGIDビットを追加します。 sudo chmod g+s /var/www/path-to-wordpress

  7. ...およびすべてのサブディレクトリ:sudo find /var/www/path-to-wordpress -type d -exec chmod g + s '{}' \;

  8. wp-config.phpに追加:定義( 'FS_CHMOD_DIR'、02775);

おすすめ記事