Apache의 사용자 이름(전용)을 얻는 방법은 무엇입니까?

Apache의 사용자 이름(전용)을 얻는 방법은 무엇입니까?

Apache2 사용자에게 자동 chown'in 파일을 위한 Bash 스크립트를 작성하려고 합니다. 하지만 그 전에 사용자 이름이 무엇인지 100% 확신해야 합니까? 나는 일반적으로 www-data라는 것을 알고 있습니다. 하지만 예를 들어 사용자 이름이 어떻게든 변경되기 전에 확인해야 합니다.

Apache2의 사용자 이름만 반환하는 문자열을 찾고 있습니다.

저도 알고 있고 # ps -aux | grep apache2다른 많은 사람들도 알고 있지만 대량의 데이터를 반환하므로 사용자 이름만 있으면 됩니다.

어떤 도움이라도 대단히 감사하겠습니다!

감사합니다.

답변1

Apache2의 사용자 이름과 그룹 ID는 구성 파일의 지시문에 의해 설정됩니다. 이는 파일의 에 있습니다 /etc/apache2/envvars.

해당 파일을 검사하면 의심했던 대로 기본적으로 www-data. 또한 파일에서 볼 수 있듯이 사용자 그룹은 기본적으로 동일한 이름으로 설정됩니다.

이제 유효 사용자가 있으므로 apache이를 사용하여 파일을 해당 사용자로 변경할 수 있습니다.

$ sudo chown -R www-data:www-data myhtmldirectory

그러면 myhtmldirectory와 그 아래의 모든 파일 및 디렉토리의 사용자 및 그룹 소유자가 www-data.

사용자 소유자만 변경하려면 :www-data그룹용 부분을 삭제하세요.

올바른 usrID를 갖는 가장 확실한 방법은 다음과 같습니다.

$ awk -F= '$1 == "export APACHE_RUN_USER" {print $2}' /etc/apache2/envvars

이 줄은 시작된 현재 세션에 대한 envvars 파일을 구문 분석합니다.

답변2

일치하는 프로세스의 유효 사용자 이름을 찾으려면 apache2다음을 사용하십시오.

ps -o euser= -C apache2

옵션 -o은 출력 형식을 설정합니다. 우리의 경우에는 유효한 사용자 이름인 euser. 후행은 일반 헤더 행을 억제하도록 =지시합니다 . ps이런 방식으로 출력은 일치하는 사용자 이름으로만 구성됩니다 apache2.

나는 apache2를 실행하고 있지 않습니다. 예를 들면 다음과 같습니다.

$ ps -o euser= -C mount.ntfs
root
$ ps -o euser= -C atd
daemon

답변3

apache2 사용자 이름만 반환하는 매우 쉬운 솔루션을 찾았습니다.

ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'

감사해요.

관련 정보