![웹 서버를 작성하는 데 사용할 수 있는 Apache 그룹을 어떻게 확인할 수 있나요?](https://linux55.com/image/43439/%EC%9B%B9%20%EC%84%9C%EB%B2%84%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EB%8D%B0%20%EC%82%AC%EC%9A%A9%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20Apache%20%EA%B7%B8%EB%A3%B9%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
WordPress를 작동시키려고 합니다. 현재 다음 오류 메시지가 나타납니다.
Could not create directory. /var/www/html/wp-content/upgrade/theme_name
테마를 업로드하려고 할 때. 권한설정입니다/var/www/html/wp-content/upgrade/
drwxrwxr-x 3 ec2-user apache 4096 Jun 21 00:30 upgrade
chmod 777 upgrade
오류를 없애십시오. 그러나 이는 모범 사례로 간주되지 않습니다. 하지만 내 생각엔 이것도 효과가 있을 것 같은데... 왜 안될까요?
아마도 위 권한에 웹서버가 포함되지 않았을 것으로 추측됩니다. 웹 서버에서 쓰기를 허용하려면 어떤 그룹을 사용해야 합니까?
(내 설정은 Amazon EC2, Amazon Linux AMI(httpd 포함)입니다)
답변1
저는 Amazon EC2에 대해 아무것도 모르지만 다음을 할 수 있어야 합니다.
다음과 유사한 명령을 사용하여 Apache를 실행하는 사용자의 이름을 검색합니다.
ps aux | grep apache # The username should be in the first column.
이 사용자가 속한 그룹을 검색하려면 다음 명령을 사용하십시오
groups(1)
.groups [USERNAME]
답변2
다음 명령줄 방법을 사용하여 Apache 그룹 이름을 찾을 수 있습니다.
WWW_GROUP=`ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | cut -d\ -f 2| uniq`
echo Apache group is: $WWW_GROUP
사용자를 얻으려면 다음을 확인하세요.명령줄에서 Apache 사용자를 확인하는 방법은 무엇입니까?
답변3
chmod 777 업그레이드로 오류가 사라졌습니다.
음, 이 경우에는 작성자의 자격 증명이 공개되어야 하며 ls -ld /var/www/html/wp-content/upgrade/theme_name
이를 사용하여 정확한 액세스 권한을 부여할 수 있습니다.
1777
(as )를 사용하는 것이 더 좋습니다 /tmp
. 왜냐하면 최소한 파일 소유자만 링크를 해제할 수 있다는 것을 보장하기 때문입니다.
답변4
패드가 테스트나 서브쉘 등을 채우려는 경우 다음이 잘 작동합니다.
ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}' | groups | awk '{print $2}'
위에서 마지막 명령은 두 번째 그룹을 선택합니다. 왜냐하면 첫 번째 그룹은 일반적으로 sys
유용하지 않기 때문입니다.
목록을 원하시면모두awk '{print $2}
Apache 그룹에서 아래와 같이 마지막 파이프라인 섹션을 삭제합니다 .
ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}' | groups
Apache 사용자 이름을 원할 경우 이전 단계를 수행하고 groups
다음과 같이 파이프라인 부분을 제거합니다.
ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}'
나는 상황이 완전히 자신의 통제 범위 내에 있지 않는 한 상황에 대해 가정하는 것을 권장하지 않습니다. 프로그래밍 방식으로 사용자를 결정해야 하고 특정 환경에서 항상 실행될지 확실하지 않은 경우(또는 누군가가 apache.conf에서 사용자 정의 이름/그룹으로 변경했는지 확실하지 않은 경우) 실용적입니다. 확인하는 방법. .env
로컬라이저 액세스를 위해 파일의 일부 공통 키 아래에 이를 입력 하거나, 교대로 에코 bash_profile
하거나 bashrc
시스템 전체를 확인하기 위한 일관된 변수를 원하는 경우 다음과 같이 할 수 있습니다.
echo export "WEBSERVER_USERNAME=$(ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}')" >> ~/.bash_profile
echo export "WEBSERVER_USERGROUP=$(ps -ef | egrep '(httpd|apache2|apache)' | grep -v "$(whoami)" | grep -v root | head -n1 | awk '{print $1}' | groups | awk '{print $2}')" >> ~/.bash_profile
source ~/.bash_profile
다른 장소들:...
# chown a dir to the webserver universally
# for typical 755 directory permission
# Good for production environment web app folders
sudo chown "${WEBSERVER_USERNAME}:${WEBSERVER_USERGROUP}" /path/to/dir
# chown to your user and the webserver usergroup
# for shared 775 cli/http directory perms
# good for dev environment, localhost, or anywhere that
# you have to do a lot of cli file edits to web folders/files
sudo chown "$(whoami):${WEBSERVER_USERGROUP} /path/to/dir
또는 백만 번 찾을 필요 없이 필요한 것이 무엇이든 가능합니다.