Debian의 Apache에서 기본 umask를 어떻게 설정합니까?


14

002기본적으로 umask (즉, 그룹 rw) 를 갖기 위해 apache2로 작성된 파일이 필요합니다 .

나는 umask 002/ etc / apache2 / envvars에 넣으려고 시도 했지만이 스크립트는 아파치 시작 ( apache2ctl graceful)의 일부로 실행되지만 umask는 효과가 없습니다. 아마도 시작 프로세스에서 더 어딘가에 (예를 들어, 사용자가에서 root로 다운 그레이드 될 때) 아마도 www-data이것을 넣는 것이 더 좋은 곳이있을 것입니다.

Fedora에 대한 게시물과 umask를 넣을 것을 제안하는 글을 읽었 /etc/init.d/apache2지만 데비안 (Squeeze)에서는 이러한 적용 / 작업이 없습니다.

도울 수 있니?


1
"/etc/init.d/apache2 restart"또는 "service apache2 restart"를 사용하여 Apache를 다시 시작해야합니다.
Jens Bradler

그렇습니다.
artfulrobot

새 파일 (WebDAV, PHP)을 어떻게 작성합니까?
Jens Bradler

내 테스트에서는 file_put_contents ()를 사용하고 있습니다. 그러나이 문제를 해결하려고하는 코드는 Drupal의 Less 모듈입니다 (처리 된 Less CSS 파일의 캐시 된 버전을 생성합니다). 내 특정 문제는 drush cc all모든 www 데이터 생성 캐시 파일에서 오류가 발생하여 사용자로 실행할 수 없다는 것입니다.
artfulrobot

답변:


11

umask 설정이 적용되도록하려면 간단한 테스트를 사용하고 다른 웹 응용 프로그램을 사용하지 마십시오. 이러한 애플리케이션이 Apache의 umask 설정과 독립적으로 권한을 변경하는 경우가 있습니다.

간단한 테스트 PHP 스크립트 :

<?php
if ($fp = fopen(time() . '.txt', 'w')) {
  fwrite($fp, 'This is a simple test.');
  fclose($fp);
  echo "done";
} else {
  echo "error - cannot create file";
}
?>

www-data 사용자에게이 간단한 테스트 파일을 설치 한 폴더에 대한 쓰기 권한이 있는지 확인하십시오.

새 umask를 실행하려면 / etc / apache2 / envvars 파일이 Apache 시작 파일 /etc/init.d/apache2 내에서 사용되는지 확인하십시오.

...
PIDFILE=$(. /etc/apache2/envvars && echo $APACHE_PID_FILE)
...

/ etc / apache2 / envvars에 umask를 설정하십시오.

...
# umask 002 to create files with 0664 and folders with 0775
umask 002

Apache를 다시 시작하십시오.

service apache2 restart

차이점을 확인하십시오.

#> ls -l *.txt
-rw-rw-r-- 1 www-data www-data  14 2012-05-01 15:56 1335880583.txt
-rw-r--r-- 1 www-data www-data  14 2012-05-01 15:55 1335880540.txt

감사합니다! 내가 그것을 읽는 바보처럼 느끼게하더라도 (그룹 rw에 대해 잘못된 8 진수를
가짐

당신의 작은 PHP 스 니펫은 내 정신을 저장했습니다. PDO Sqlite3 Wordpress 플러그인은 항상 데이터베이스 파일에 대해서만 그룹을 읽도록 설정합니다.
Daniel Sokolowski

2

여러 사이트를 실행하는 경우 다음과 같이 디렉토리 당 ACL (Access Control List)을 사용하여 기본 그룹 권한을 설정할 수 있습니다.

setid모든 새 파일이 디렉토리에서 그룹을 상속 받도록 플래그를 설정하십시오 .

# chmod g+s wordpress

새 파일 rw에 그룹 권한을 부여하십시오 (예 : 그 때문에 www-data파일에 쓸 수 업로드 사용자가 SFTPed :

# setfacl --default --modify group::rwx wordpress 

ACL이 다음과 같은지 확인하십시오.

# getfacl wordpress
# file: wordpress
# owner: carissacosgrove
# group: www-data
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

작동하는지 확인하기 위해 파일을 작성하십시오.

# ll test
-rw-rw-r-- 1 root www-data 0 Feb 17 01:09 test

응용 프로그램이 의도적으로 권한을 줄인 파일을 쓰려고 할 때 문제가되지 않습니까?
berbt

- 모든에서, 응용 프로그램은 실제로 처음에 조금 나를 혼동 감소 권한으로 작성합니다 stackoverflow.com/questions/28454551/...
다니엘 Sokolowski

1
이 명령 setfacl --default --modify group:rwx wordpress에 콜론이없는 것 같습니다 . 그것은해야한다setfacl --default --modify group::rwx wordpress
마르코스

2

(systemd를 사용하는 데비안 스트레치-감사합니다!)

넣어 UMask=0002, 아파치 systemd 서비스 유닛 파일에 서비스 장치를 다시로드 한 다음 아파치를 다시 시작합니다.

$ pwd
/etc/systemd/system/multi-user.target.wants

$ 고양이 아파치
[단위]
Description = 아파치 HTTP 서버
After = network.target remote-fs.target nss-lookup.target

[서비스].
.
.
.
UMask = 0002

$ sudo systemctl 데몬 재로드
$ sudo systemctl 재시작 아파치 2

데비안 스퀴즈는 systemd를 사용하지 않았습니다.
womble

아 네, 원래 질문의 본문이 끝날 때 그들은 데비안 스퀴즈라고 말합니다. 질문은 오늘부터 ~ 8 년 전부터 있었고 2019 년 말 현재 최신 데비안 제목에서 제기 된 문제를 해결하려고 노력했기 때문에 내가 게시 한 것입니다. 8 년 전과 달리 오늘날 솔루션을 검색하는 대부분의 사람들이 내 솔루션의 이점을 누릴 수 있다고 생각합니다.
duplexddaann
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.