WordPress 사이트의 문서 루트에 sgid를 재귀적으로 추가했습니다. 그 안에 파일과 디렉터리를 만들고 그룹을 상속할 수 있습니다. FTP로 생성된 디렉토리도 sgid에서는 잘 작동합니다. 그러나 Apache(www-data)에 의해 생성된 디렉터리에는 sgid 비트가 활성화되어 있지 않으므로 내부의 모든 항목은 기본 www-data:www-data를 사용하여 생성됩니다.
예를 들어, uploads/2017 디렉터리에서 Apache는 sgid 없이 09 디렉터리를 생성했습니다. 여기에서 루트 사용자를 사용하여 디렉터리를 생성하더라도 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
새 디렉토리를 생성할 때 아파치가 sgid를 사용하도록 하려면 어떻게 해야 합니까?
답변1
이것은 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 );