여기를 살펴 보았지만 최고의 파일 권한에 대한 세부 정보를 찾지 못했습니다. 또한 이상 워드 프레스의 양식의 몇 가지 질문을 살펴했다 너무 여기 하지만 777을 제안 사람은 분명히 보안에 약간의 교훈을 필요로한다.
요컨대 내 질문은 이것입니다. 다음에 대한 사용 권한은 무엇입니까?
- 모든 WordPress 컨텐츠를 저장하는 루트 폴더
- wp-admin
- wp- 콘텐츠
- wp- 포함
그런 다음 각 폴더의 모든 파일?
여기를 살펴 보았지만 최고의 파일 권한에 대한 세부 정보를 찾지 못했습니다. 또한 이상 워드 프레스의 양식의 몇 가지 질문을 살펴했다 너무 여기 하지만 777을 제안 사람은 분명히 보안에 약간의 교훈을 필요로한다.
요컨대 내 질문은 이것입니다. 다음에 대한 사용 권한은 무엇입니까?
그런 다음 각 폴더의 모든 파일?
답변:
WP를 설정할 때 파일에 대한 쓰기 액세스 권한이 웹 서버에 필요할 수 있습니다. 따라서 액세스 권한을 느슨하게해야합니다.
chown www-data:www-data -R * # Let Apache be owner
find . -type d -exec chmod 755 {} \; # Change directory permissions rwxr-xr-x
find . -type f -exec chmod 644 {} \; # Change file permissions rw-r--r--
설정 후에는 해야 액세스 권한을 강화 에 따라, 경화 워드 프레스 WP - 콘텐츠를 제외한 모든 파일은 사용자 계정에 쓰기 권한이 있어야합니다. wp-content 도 www-data 로 쓸 수 있어야합니다 .
chown <username>:<username> -R * # Let your useraccount be owner
chown www-data:www-data wp-content # Let apache be owner of wp-content
나중에 wp-content의 내용을 변경하고 싶을 수도 있습니다. 이 경우에는
su
,무엇을 하든지 파일에 www-data에 대한 rw 권한이 있는지 확인하십시오 .
www-data
??? 정말 전혀 안전하지 않은 것 같습니다.
www-data
사용자 (이 경우 웹 서버 사용자) 에게 모든 wp 파일에 대한 전체 액세스 권한을 부여하면 위험 할 수 있습니다. 오히려 이것을 하지 마십시오 :
chown www-data:www-data -R *
그러나 WordPress 및 해당 플러그인을 설치하거나 업그레이드 할 때 유용 할 수 있습니다. 그러나 완료했을 때 더 이상 웹 서버가 소유 한 wp 파일을 유지하는 것은 좋은 생각이 아닙니다.
기본적으로 웹 서버는 웹 사이트에 파일을 넣거나 덮어 쓸 수 있습니다. 이는 누군가 웹 서버 (또는 일부 .php 스크립트의 보안 허점)를 사용하여 웹 사이트에 일부 파일을 저장하는 경우 사이트를 인수 할 가능성이 있음을 의미합니다.
이러한 공격으로부터 사이트를 보호하려면 다음을 수행해야합니다.
모든 파일은 사용자 계정이 소유해야하며 사용자가 쓸 수 있어야합니다. 호스팅 설정에 필요한 경우 웹 서버에서 WordPress에서 쓰기 액세스가 필요한 파일을 쓸 수 있어야합니다. 즉, 웹 서버 프로세스에서 사용하는 사용자 계정으로 해당 파일을 그룹 소유해야합니다.
/
루트 WordPress 디렉토리 : WordPress에서 자동으로 다시 쓰기 규칙을 생성하도록하려면 .htaccess를 제외하고 모든 파일은 사용자 계정으로 만 쓸 수 있어야합니다.
/wp-admin/
WordPress 관리 영역 : 모든 파일은 사용자 계정으로 만 쓸 수 있어야합니다.
/wp-includes/
대량의 WordPress 응용 프로그램 논리 : 모든 파일은 사용자 계정으로 만 쓸 수 있어야합니다.
/wp-content/
사용자 제공 컨텐츠 : 사용자 계정 및 웹 서버 프로세스에서 쓸 수 있도록 작성되었습니다.
내면에서
/wp-content/
찾을 수 있습니다 :
/wp-content/themes/
테마 파일. 내장 테마 편집기를 사용하려면 웹 서버 프로세스에서 모든 파일을 쓸 수 있어야합니다. 내장 테마 편집기를 사용하지 않으려면 모든 파일을 사용자 계정으로 만 쓸 수 있습니다.
/wp-content/plugins/
플러그인 파일 : 모든 파일은 사용자 계정으로 만 쓸 수 있어야합니다.
존재할 수있는 다른 디렉토리는
/wp-content/
플러그인이나 테마에 필요한 디렉토리 로 문서화해야합니다. 권한이 다를 수 있습니다.
출처 및 추가 정보 : http://codex.wordpress.org/Hardening_WordPress
홈 폴더 아래에 워드 프레스 루트 폴더가있는 사람 :
** 우분투 / 아파치
CREDIT www-data 그룹에 쓰기 권한 부여
사용자에게 전화를 걸고 싶습니다 usermod
. 따라서 다음과 같습니다.
sudo usermod -aG www-data yourUserName
** www-data
그룹이 존재 한다고 가정
사용자가 www-data
그룹에 있는지 확인하십시오 .
groups yourUserName
다음과 같은 것을 얻어야합니다.
youUserName : youUserGroupName www-data
** youUserGroupName은 일반적으로 사용자 이름과 유사합니다.
사용자 소유권을 유지하면서 wp-content 폴더의 그룹 소유권을 반복적으로 변경
chown yourUserName:www-data -R youWebSiteFolder/wp-content/*
디렉토리를 youWebSiteFolder / wp-content /로 변경하십시오.
cd youWebSiteFolder/wp-content
쓰기 권한을 사용하려면 폴더 및 하위 폴더의 그룹 권한을 반복적으로 변경하십시오.
find . -type d -exec chmod -R 775 {} \;
**`/ home / yourUserName / youWebSiteFolder / wp-content / '모드가 0755 (rwxr-xr-x)에서 0775 (rwxrwxr-x)로 변경되었습니다.
쓰기 권한을 사용하려면 파일 및 하위 파일의 그룹 권한을 반복적으로 변경하십시오.
find . -type f -exec chmod -R 664 {} \;
결과는 다음과 같아야합니다.
WAS:
-rw-r--r-- 1 yourUserName www-data 7192 Oct 4 00:03 filename.html
CHANGED TO:
-rw-rw-r-- 1 yourUserName www-data 7192 Oct 4 00:03 filename.html
다음과 같습니다.
chmod -R ug + rw 폴더 이름
권한은 파일의 경우 664, 디렉토리의 경우 775와 같습니다.
Ps 'could not create directory'
플러그인을 업데이트 할 때 누군가 오류가 발생 하면
server@user:~/domainame.com$ sudo chown username:www-data -R wp-content
도메인의 루트에있을 때 수행 하십시오.
가정 : wp-config.php
이
로컬 호스트에서 FTP 자격 증명을
define('FS_METHOD','direct');
이 https://wordpress.org/support/article/changing-file-permissions/ 에서 wordpress 문서를 읽는 것이 가장 좋습니다.
- 모든 파일은 httpd 프로세스에 사용 된 사용자 계정이 아닌 실제 사용자 계정이 소유해야합니다.
- 웹 서버 프로세스 권한 검사에 대한 특정 그룹 요구 사항이 없으면 그룹 소유권은 관련이 없습니다. 일반적으로 그렇지 않습니다.
- 모든 디렉토리는 755 또는 750이어야합니다.
- 모든 파일은 644 또는 640이어야합니다. 예외 : wp-config.php는 서버의 다른 사용자가 읽을 수 없도록 440 또는 400이어야합니다.
- 디렉토리를 업로드하지 않아도 777이 주어지지 않아야합니다. php 프로세스는 파일의 소유자로 실행되므로 소유자 권한을 가지며 755 디렉토리에도 쓸 수 있습니다.
권한을 다음과 같이 설정했습니다.
# Set all files and directories user and group to wp-user
chown wp-user:wp-user -R *
# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/
# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;
# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
필자의 경우 웹에서 해당 사용자가 소유 한 파일에 액세스하지 못하게하는 아파치 기본 사용자와 다른 WordPress에 대한 특정 사용자를 만들었습니다.
그런 다음 아파치 사용자가 업로드 폴더를 처리하고 최종적으로 충분한 파일 및 폴더 권한을 설정하도록 권한을 부여합니다.
편집
W3C Total Cache를 사용하는 경우 다음도 수행해야합니다.
rm -rf wp-content/cache/config
rm -rf wp-content/cache/object
rm -rf wp-content/cache/db
rm -rf wp-content/cache/minify
rm -rf wp-content/cache/page_enhanced
그럼 작동합니다!
편집
WordPress 사이트를 개발하는 동안 환경마다 다른 파일 권한을 권장합니다.
프로덕션 환경에서는 파일 시스템을 수정하기 위해 사용자에게 액세스 권한을 부여하지 않고 리소스를 업로드하고 백업을 수행하기 위해 특정 플러그인에 특정 폴더에 대한 액세스 권한 만 부여합니다. 그러나 Git에서 프로젝트를 관리하고 서버의 경우 준비 또는 프로덕션에서 플러그인을 업데이트하지 않습니다. 프로덕션 파일 설정을 여기에 둡니다.
# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/uploads/
www-data : www-data = 아파치 또는 nginx 사용자 및 그룹
준비는 복제와 동일한 프로덕션 권한을 공유합니다.
마지막으로, 개발 환경은 플러그인, 번역, 모든 것을 업데이트 할 수 있습니다 ...
# Set uploads folder user and group to www-data
chown www-data:www-data -R wp-content/
# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/themes
# Set uploads folder user and group to www-data
chown your-user:root-group -R wp-content/plugins/your-plugin
www-data : www-data = 아파치 또는 nginx 사용자 및 그룹 your-user : root-group = 현재 사용자 및 루트 그룹
이러한 권한을 통해 권한 을 요청하지 않고도 폴더 themes
및 your-plugin
폴더 를 개발할 수 있습니다 . 나머지 컨텐츠는 Apache 또는 Nginx 사용자가 소유하여 WP가 파일 시스템을 관리 할 수 있도록합니다.
git repo를 만들기 전에 먼저 다음 명령을 실행하십시오.
# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;
# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
파일에 대한 올바른 권한은 644입니다. 폴더에 대한 올바른 권한은 755입니다.
권한을 변경하려면 터미널과 다음 명령을 사용하십시오.
find foldername -type d -exec chmod 755 {} \;
find foldername -type f -exec chmod 644 {} \;
폴더는 755, 파일은 644입니다.
기본 워드 프레스 사이트에는 다음 규칙이 권장됩니다.
wp-content 내의 폴더에 대해 0755 권한을 설정하십시오.
chmod -R 0755 플러그인
chmod -R 0755 업로드
chmod -R 0755 업그레이드
apache user가 위의 wp-content 디렉토리에 대한 소유자가되게하십시오.
chown 아파치 업로드
chown 아파치 업그레이드
chown 아파치 플러그인
실제로 일부 플러그인은 워드 프레스의 루트 문서를 변경하므로 사용하려는 플러그인에 따라 다릅니다. 그러나 일반적으로 나는 wordpress 디렉토리에 이와 같은 것을 추천합니다.
이렇게하면 모든 단일 파일 / 폴더에서 "루트"(또는 사용중인 모든 것)가 사용자로 할당되며 R은 재귀를 의미하므로 "html"폴더에서 멈추지 않습니다. R을 사용하지 않은 경우 "html"디렉토리에만 적용됩니다.
sudo chown -R root:www-data /var/www/html
이렇게하면 "wp-content"의 소유자 / 그룹이 "www-data"로 설정되어 웹 서버가 관리자 패널을 통해 플러그인을 설치할 수 있습니다.
chown -R www-data:www-data /var/www/html/wp-content
이렇게하면 "html"폴더 (하위 디렉토리에있는 파일 포함)에있는 모든 단일 파일의 권한이 644로 설정되므로 외부 사용자는 파일을 실행할 수없고 파일을 수정할 수 없으며 그룹은 파일을 실행할 수 없으며 파일 만 수정할 수 있습니다 사용자는 파일을 수정 / 읽을 수 있지만 여전히 파일을 실행할 수는 없습니다. 이것은 html 폴더의 소유자와 wp-content 폴더를 제외한 다른 모든 폴더가 "루트"(또는 사용자)이기 때문에 "html"폴더에서 모든 종류의 실행을 막기 때문에 중요합니다. wp-content 폴더 외부의 파일을 수정하여 웹 서버에 취약점이 있거나 누군가가 사이트에 무단으로 액세스 한 경우에도 플러그인을 제외한 기본 사이트를 삭제할 수 없습니다.
sudo find /var/www/html -type f -exec chmod 644 {} +
이것은 "wp-config.php"에 대한 액세스 권한을 rw-r -----이 권한을 가진 사용자 / 그룹으로 제한합니다.
chmod 640 /var/www/html/wp-config.php
플러그인 또는 업데이트가 업데이트 할 수 없다고 불평 한 경우 SSH에 액세스하여이 명령을 사용하고 관리자 패널을 통해 업데이트 / 설치할 수있는 "www-data"(웹 서버)에 임시 권한을 부여한 다음 되 돌리십시오. "루트"또는 사용자가 완료되면 다시
chown -R www-data /var/www/html
그리고 Nginx (아파치와 동일한 절차)에서 wp-admin 폴더를 무단 액세스 및 검사로부터 보호합니다. nginx가 설치되어 있어도 비밀번호를 암호화하려면 apache2-utils가 필요합니다. 동일한 파일에 더 많은 사용자를 추가하려면 c를 생략하십시오.
sudo apt-get install apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd userName
이제이 위치를 방문하십시오
/etc/nginx/sites-available/
이 코드를 사용하여 비밀번호로 "wp-admin"폴더를 보호하십시오. 이제 "wp-admin"에 액세스하려고하면 비밀번호 / 사용자 이름을 묻습니다. 여기서 암호화 된 비밀번호가 포함 된 ".htpasswd"파일을 사용합니다.
location ^~ /wp-admin {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
index index.php index.html index.htm;
}
이제 nginx를 다시 시작하십시오.
sudo /etc/init.d/nginx restart
명령 :
chown www-data:www-data -R *
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;
ftp-user는 파일을 업로드하는 데 사용하는 사용자입니다.
chown -R ftp-user:www-data wp-content
chmod -R 775 wp-content
$(whoami)
대신 사용할 수 있습니다 ftp-user
. 자신의 서버 (로컬, VPN 등)를 사용하는 경우 기본적으로 현재 사용자 ( root가 아님)가 FTP 사용자입니다.
웹 사이트가 안전하고 폴더에 대한 올바른 권한을 사용하고 있는지 확인하려면 다음과 같은 보안 플러그인을 사용하십시오.
https://en-ca.wordpress.org/plugins/all-in-one-wp-security-and-firewall/
https://en-ca.wordpress.org/plugins/wordfence/
이 플러그인은 Wordpress 설치를 스캔하여 잠재적 인 문제를 알려줍니다. 또한 안전하지 않은 폴더 권한에 대해 경고합니다. 그 외에도이 플러그인은 폴더에 할당 할 권한을 권장합니다.
이것이 정확한지 여부는 알 수 없지만 Google Compute App Engine에서 Bitnami 이미지를 사용하고 있습니다. 플러그인과 마이그레이션에 문제가 있으며 chmod'ing 권한으로 문제를 해결 한 후 모든 세 가지 문제를 해결하는 세 줄을 발견했습니다. 그것이 올바른 방법인지 확실하지 않지만 나를 위해 일했습니다.
sudo chown -R bitnami:daemon /opt/bitnami/apps/wordpress/htdocs/
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type f -exec chmod 664 {} \;
sudo find /opt/bitnami/apps/wordpress/htdocs/ -type d -exec chmod 775 {} \;
내 사이트의 모든 읽기 및 고민을 기반으로 해킹당한 후 Wordfence라는 Wordpress 용 보안 플러그인에 대한 권한이 포함 된 위 목록을 만들었습니다. (관련되지 않음)
이 예에서 워드 프레스 문서 루트는 /var/www/html/example.com/public_html입니다.
www-data가 다음과 같이 문서 루트에 쓸 수 있도록 권한을여십시오.
cd /var/www/html/example.com
sudo chown -R www-data:www-data public_html/
이제 사이트의 대시 보드에서 관리자로서 업데이트를 수행 할 수 있습니다.
다음 단계에 따라 업데이트 후 보안 사이트가 완료됩니다.
sudo chown -R wp-user:wp-user public_html/
위의 명령은 워드 프레스 설치의 모든 권한을 워드 프레스 FTP 사용자로 변경합니다.
cd public_html/wp-content
sudo chown -R www-data:wp-user wflogs
sudo chown -R www-data:wp-user uploads
위의 명령은 보안 플러그인 Wordfence가 로그에 액세스 할 수 있도록합니다. 업로드 디렉토리는 www-data에서 쓸 수도 있습니다.
cd plugins
sudo chown -R www-data:wp-user wordfence/
위의 명령은 또한 보안 플러그인이 올바른 기능을 위해 읽기 쓰기 액세스 권한을 요구했는지 확인합니다.
디렉토리 및 파일 권한
# Set all directories permissions to 755
find . -type d -exec chmod 755 {} \;
# Set all files permissions to 644
find . -type f -exec chmod 644 {} \;
wp-user만이이 파일을 읽을 수 있고 다른 사람은 읽을 수 없도록 wp-config.php의 권한을 640으로 설정하십시오. 440의 권한이 위의 파일 소유권으로 작동하지 않았습니다.
sudo chmod 640 wp-config.php
SSH를 사용한 Wordpress 자동 업데이트는 PHP5에서 잘 작동했지만 Ubuntu 16.04와 함께 php7.0-ssh2 번들 문제로 인해 PHP7.0에서 고장 났으며 올바른 버전을 설치하고 작동시키는 방법을 찾을 수 없었습니다. 다행히도 ssh-sftp-updater-support (무료) 라는 매우 안정적인 플러그인 은 libssh2없이 SFTP를 사용한 자동 업데이트를 가능하게합니다. 따라서 필요에 따라 드문 경우를 제외하고 위의 권한을 풀지 않아도됩니다.