UFO ET IT

Apache 사용자의 umask 설정

ufoet 2021. 1. 17. 11:36
반응형

Apache 사용자의 umask 설정


LAMP 서버를 설정 중이며 Apache의 umask 설정을 002로 설정하여 모든 Apache 생성 파일이 그룹 쓰기 권한 비트 세트를 갖도록 설정하고 싶습니다 (동일한 그룹의 구성원이 파일을 덮어 쓸 수 있음).

누구든지 이것을하는 방법을 알고 있습니까? Ubuntu에서는 / etc / apache2 / envvars 파일을 사용하여 umask를 구성 할 수 있지만 서버는 CentOS를 실행하고 있습니다.

업데이트이 질문은 내가 얼마 전에 요청한 다른 질문 ( LAMP 서버의 Linux 사용자 및 그룹 )과 관련이 있습니다. 원하는 경우 아파치 사용자가 만든 파일을 편집 할 수있는 서버에 개발자 사용자를 두는 데 가장 적합한 설정이 무엇인지이 다른 질문을 업데이트하십시오.


Apache는 umask부모 프로세스 (즉, Apache를 시작하는 프로세스)에서 상속합니다 . 일반적으로 /etc/init.d/스크립트 여야합니다 . 따라서 umask해당 스크립트에 명령을 입력하십시오 .


CentOS 및 기타 Red Hat 배포판의 경우 umask 설정을 / etc / sysconfig / httpd에 추가하고 아파치를 다시 시작합니다.

[root ~] $ echo "umask 002">> / etc / sysconfig / httpd
[root ~] $ service httpd restart

추가 정보 : Apache2 umask | MDLog : / sysadmin

Debian 및 Ubuntu 시스템의 경우 유사하게 /etc/apache2/envvars.


이것은 "CentOS 7 apache umask"에 대한 Google 검색 결과의 첫 번째 결과 였으므로 CentOS 7에서이 작업을 수행하기 위해 필요한 작업을 공유하겠습니다.

CentOS 7에서는 echo "umask 002" >> /etc/sysconfig/httpd-method가 작동하지 않았습니다.

폴더를 만들어 systemd 시작 파일을 덮어 썼고 거기 에 다음 줄로 umask.conf/etc/systemd/system/httpd.service.d 파일을 만들었습니다 .

[Service]
UMask=0007

부팅되었고 그것은 나를 위해 일했습니다.


umask 명령추가하는 /etc/apache2/envvars것은 파일 이름 (변수 언급 만 해당)뿐만 아니라 해당 파일에서 찾은 다음 주석을 기반으로하기 때문에 나에게 좋은 생각이 아닌 것 같습니다.

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.

이것은 /etc/apache2/envvarsApache 관련 작업을 수행하는 모든 스크립트에서 제공 될 수 있으며 해당 스크립트 (미리 알려지지 않음)의 umask를 변경하는 것은 다소 위험합니다.

반면에, 경우에 의해 생성 된 파일의 사용 권한을 편안 아파치 목표의 umask를 변경의 아이디어는 mod_dav, 당신은 것을 고려해야한다 DAV를 저장소는 아파치에 개인 간주됩니다 해당 파일이 발생할 수 있습니다 접근시키는 다른 프로세스 (다양한 isses 포함 부패) .


Luoti / Spider Man for CentOS7의 답변에 추가 : 변경 후 "부팅"하는 대신 다음 명령을 사용할 수 있습니다.

systemctl daemon-reload
service httpd restart

Debian에서 Apache 용 umask를 설정하는 또 다른 위치는 / etc / default / apache2입니다. 이 파일의 끝에있는 다음 줄 : umask 0002


당신이 하고 싶은 대신 그룹 스티키 비트 (설정하는 것입니다 SetGID귀하의 CGI가 작업 디렉토리에) 비트를 :

chgrp mygroup dir chmod g+s dir

있는지 확인 하십시오 당신이 것을이 작업을 수행 할 때 (사용자) 아파치가있는 mygroup그룹 (에서 /etc/group이 권한을 가지게됩니다).

이렇게하면이 디렉터리 아래에 생성 된 모든 파일이 디렉터리와 동일한 그룹에 속하게됩니다.

이것은 apache가 실행할 수있는 모든 cgi 스크립트에 대해 전역 umask를 설정하는 것보다 더 안전한 접근 방식입니다.

(이것은 git-http-backend일반적으로 Apache에서 실행되는 방법 입니다).


Ubuntu의 경우 svnwrap 도구가 있습니다.

  1. 설치 sudo apt-get install subversion-tools
  2. svn 및 svnserve를 svnwrap으로 래핑합니다.
    sudo ln -s /usr/bin/svnwrap /usr/local/bin/svn
    sudo ln -s /usr/bin/svnwrap /usr/local/bin/svnserve

이 후 file : //, svn + ssh : // 및 http : // 프로토콜을 사용하는 모든 svn 작업은 umask 002로 수행됩니다.


일반적으로 "시도되고 진정한 Apache 방식"에서 벗어나는 것은 권장되지 않습니다. 그러한 것들을 선택하는 데 많은 시간과 어려움을 겪은 경험이 있습니다.

참조 URL : https://stackoverflow.com/questions/428416/setting-the-umask-of-the-apache-user

반응형