웹 서버를 작성하는 데 사용할 수 있는 Apache 그룹을 어떻게 확인할 수 있나요?

웹 서버를 작성하는 데 사용할 수 있는 Apache 그룹을 어떻게 확인할 수 있나요?

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에 대해 아무것도 모르지만 다음을 할 수 있어야 합니다.

  1. 다음과 유사한 명령을 사용하여 Apache를 실행하는 사용자의 이름을 검색합니다.

    ps aux | grep apache # The username should be in the first column.
    
  2. 이 사용자가 속한 그룹을 검색하려면 다음 명령을 사용하십시오 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

또는 백만 번 찾을 필요 없이 필요한 것이 무엇이든 가능합니다.

관련 정보