파일/플러그인을 업로드한 후 wordpress 디렉토리 파일 소유권이 매번 변경됩니다.

파일/플러그인을 업로드한 후 wordpress 디렉토리 파일 소유권이 매번 변경됩니다.

centos 7에서 루트 디렉토리 소유권을 가진 wordpress 웹 사이트를 만들었습니다.웹사이트 이름:웹사이트 그룹및 디렉토리 권한755, 파일 권한644기본적으로 설정

개발자가 WordPress 대시보드에 로그인하고 미디어에 무언가를 업로드하거나 플러그인을 설치하려고 하면 wp에 쓰기 권한이 없다고 표시됩니다.

그런 다음 wp 루트 디렉토리에 g+w 권한을 부여해야 플러그인을 설치하거나 미디어를 업로드할 수 있었습니다.

미디어를 업로드한 후 업로드된 플러그인/미디어 권한이 다음으로 변경됩니다.아파치:아파치~에서웹사이트 이름:웹사이트 그룹

피하는 방법?

  1. 개발자가 플러그인을 설치하거나 미디어를 업로드할 수 있도록 wp 루트 디렉토리에 g+x 권한을 부여합니다.
  2. wp dashboar의 업로드 소유권은 apache:apache로 변경되어서는 안 됩니다.

내가 시도한 것

현재 나는 이것을 막을 대안을 찾지 못했습니다. 매번 g+w 권한을 부여하고 개발자 작업 후에 다시 되돌려야 했습니다.

답변1

웹 서버(또는 설정에 따라 PHP 프로세스)에는 디렉토리에 대한 쓰기 액세스 권한이 필요합니다. 실행 가능한 유일한 방법은 해당 프로세스를 사용자로 실행하는 것입니다 websitename.

apache원칙적으로 또 다른 옵션은 ACL을 통해 또는 그룹에 추가하여 사용자에게 쓰기 권한을 부여하는 것이지만 websitegroup, 그렇게 하면 업로드된 파일이 apache. 모든 파일과 폴더를 소유하게 하려면 websitename해당 사용자로 웹 서버를 실행해야 합니다.

답변2

이것이 어떻게 프로비저닝되는지에 대한 귀하의 설명은 도움이 되지 않습니다. 처음부터 시작해 보겠습니다.

사용자:

  • apache - PHP 런타임이 실행하는 uid
  • dev1, dev2, dev2 - 개발자
  • 백업 - 사이트 백업 생성용
  • support[n] - 문제 조사용

Wordpress의 설계 방식으로 인해 "apache"가 사이트에 대한 완전한 읽기/쓰기 액세스 권한을 갖지 않는 한 작동하기가 매우 어렵습니다.

모든 관리가 웹 UI를 통해 수행되는 경우 개발자는 필요합니다.어느문서 루트에 있는 파일에 액세스합니다. 그러나 개발자가 정기적으로 업데이트된 파일에 대한 CLI 액세스를 사용하는 사이트를 보았습니다. 따라서 읽기/쓰기 액세스가 필요하다고 가정해 보겠습니다.

백업 UI에는 파일에 대한 읽기 전용 액세스가 필요합니다.

지원에는 파일에 대한 읽기 전용 액세스가 필요합니다.

그러면 사이트 사용자가 남습니다. 이것이 당신의 구조입니다. 이를 사용하는 방법에 대한 추가 정보가 없으면 완전히 중복된 것으로 보입니다.

따라서 유일한 액세스 클래스는 읽기+쓰기 및 읽기 전용입니다. 하지만 재미삼아 액세스 권한이 없는 추가 클래스가 있다고 가정하고 이 사용자를 "외계인"이라고 부르겠습니다.

사용자 소유권은 항상 파일을 생성하는 uid에 의해 결정되며 사용자별로 단일 값입니다. 따라서 우리는 이를 액세스를 허용하는 메커니즘으로 사용할 수 없습니다.

그러나 사용자는 여러 그룹에 속할 수 있으며 각 그룹에는 여러 사용자가 있을 수 있습니다. 따라서 읽기-쓰기 권한을 특정 그룹에 연결할 수 있습니다. 웹 업데이트라고 부르세요.

그러면 "기타" 권한 비트를 통해 제공될 수 있는 읽기 전용 액세스(백업 및 지원)가 남습니다.

그러면 "외계인"을 어떻게 제외합니까? 외계인이 접근할 수 없는 디렉토리에 사이트를 배치한다는 것은 우리가 접근할 수 있는 사람들을 식별하는 또 다른 그룹이 필요하다는 것을 의미합니다.일부입장. 이것을 웹 액세스라고 부르세요.

따라서 그룹 멤버십은 다음과 같습니다.

  • 웹 업데이트: 아파치, dev1, dev2...devn
  • 웹 액세스: apache, dev1, dev2...devn, 백업, 지원[n]

그런 다음 디렉토리, 권한 및 소유권이 있습니다.

drwxr-x--- root:webaccess /var/www/SITENAME
drwxrwxr-x ????:webupdate /var/www/SITENAME/html  (document root)

모두 괜찮지만 "webupdate"의 누군가가 문서 루트에 새 파일이나 디렉터리를 생성하면 그룹 소유권은 webupdate가 아닌 DEFAULT 그룹이 됩니다. 디렉토리의 setgid 비트를 사용하여 이 동작을 변경할 수 있습니다.

drwxrwSr-x ????:webupdate /var/www/SITENAME/html

퍼즐의 마지막 부분은 webupdate 구성원에 대해 umask가 00x로 설정되어 새 파일과 디렉터리가 올바른 권한을 얻도록 하는 것입니다. SFTP 서버와 대화형 쉘의 경우 sshd_config에서 이를 설정하는 것을 잊지 마십시오.

따라서 그룹이 준비되면 다음을 실행할 수 있습니다.

chown -R apache:webupdate  /var/www/SITENAME/html
chmod -r g+s /var/www/SITENAME/html

그게 전부입니다. 다시는 권한을 수정할 필요가 없습니다.

관련 정보