LEMP VPS에서 여러 WordPress 사이트를 호스팅하고 있습니다.
- 각 사이트에는 자체 Wordpress 설치 (아래에 위치
/srv/http/domain/wordpress
), 자체 사용자 계정 ( site-user ) 및 site-user 로 실행되는 자체 php-fpm 풀이 있습니다 . - Nginx는 http 계정으로 실행되고 있으며 아래의 모든 파일 에는 0640 (파일) 및 2750 (디렉토리) 권한
/srv/http/domain/wordpress
이있는 site-user : http 소유권이 있습니다.
따라서 각 사용자는 자신의 파일 / 디렉토리에 완전히 RW 액세스 할 수 있지만 다른 사이트의 파일 / 디렉토리에는 액세스 할 수 없습니다. Nginx는 모든 사이트의 파일 / 디렉토리에 R로만 액세스 할 수 있습니다.
setgid 비트를 사용하여 Nginx가 이들에 대한 읽기 액세스 권한을 갖도록 아래 /srv/http/domain/wordpress
에 생성 된 새 디렉토리 가 http 그룹 을 상속 하도록합니다. SFTP를 통해 파일을 만들 때 예상대로 작동합니다.
이것은 제게 보이지만 wp-admin 인터페이스를 통해 플러그인, 테마 및 WordPress를 성공적으로 업데이트 할 수 있습니다. 그러나 WordPress가 새 파일 / 디렉토리를 생성 해야하는 작업을 실행할 때마다-기본적으로 플러그인 / 테마를 설치하거나 업데이트하거나 Wordpress 자체를 업데이트 할 때마다 결과 파일 소유권은 site-user : site-user 입니다. 내가 원하는 것은 새로 작성된 파일 / 디렉토리가 setgid 비트를 존중하고 site-user : http 소유권을 가진 파일 / 디렉토리를 작성하는 것이므로 Nginx가 내 개입없이이 파일을 읽을 수 있습니다.
각 사이트의 wp-config.php 파일 에서 다음을 설정했습니다 .
define( 'FS_CHMOD_DIR', ( 02750 & ~ umask() ) );
define( 'FS_CHMOD_FILE', ( 0640 & ~ umask() ) );
이렇게하면 권한을 원하는대로 강제하지만 소유권에는 영향을 미치지 않습니다.
나는 이것 과 이것을 읽었 지만 "솔루션"은 PHP 코드를 수정하여 사용하지 않는 move_uploaded_file()
것이 좋습니다. 자신의 PHP 코드를 작성하는 경우 괜찮습니다.하지만 WordPress PHP 파일을 수정하지는 않을 것입니다. 이것이 이것이 내 문제의 원인인지 확실하지 않습니다.
또한 Nginx가 그룹 소유권이 있는지 여부에 관계없이 파일을 읽을 수 있도록 권한을 풀고 755 (디렉토리) 및 644 (파일)로 설정할 수 있음을 알고 있지만 보안상의 이유로 세계가 읽을 수있는 것을 피하려고합니다. 공유 서버의 파일.
WordPress / PHP로 만든 파일의 소유권을 제어하려면 어떻게합니까?
http
그룹 소유권 으로 설정해야합니다 . 자세한 내용은 여기를 참조하십시오 .