2012-08-24 3 views
48

PHP에서 umask(0);을 사용하는 목적은 무엇입니까?php umask (0) 목적은 무엇입니까

나는 이것을 몇 번 본적이 있으며 정확히 무엇을하는지 문서에서 파악할 수 없습니다.

누구에게 설명하고 유용하게 사용할 수 있습니까?

+0

http://php.net/manual/en/function.umask.php 이것은 기본적으로 파일 생성을위한 것입니다. – Sammaye

+5

@Sammaye 그는 문서가 정말로 그를 도왔다 고 말하지 않았습니다. –

+1

umask에 대한 php 매뉴얼의 설명서가 매우 나쁩니다. – Adam

답변

43

umask0000 (또는 단지 0)으로 설정하면 새로 생성 된 파일이나 생성 된 디렉터리에 처음에는 권한이 취소되지 않습니다. 즉, umask이 0이면 모든 파일이 0666 또는 world-writable로 생성됩니다. umask 인 디렉토리는 0이고, 디렉토리는 0777입니다.

일반적으로 umask(0)이 표시되면 새로 만든 파일이나 디렉터리에 필요한 사용 권한을 명시 적으로 world-writable 이외의 값으로 설정하려면 chmod()을 직접 호출해야합니다.

umask를 0으로 설정할 때주의하십시오! 이것은 위험 할 수 있으며 대부분 웹 서버가 파일을 수정할 수 있어야하는 "실제"사용자 인 다른 사용자로 실행될 때 나중에 웹 서버에서 작성해야하는 파일을 만드는 데 유용합니다 웹 서버에 의해 생성됩니다. 그렇지 않으면, 시스템의 기본 umask는 0022과 같아서 파일 소유자 만 쓸 수 있지만 다른 것은 허용하지 않습니다. 이 경우 일반 사용자 계정으로 컴퓨터에 로그인 한 경우 PHP에서 웹 서버에 의해 작성된 파일은 이 아니며 사용자가 쓸 수 있습니다..

세계 기록 가능 파일을 작성하는 대신 웹 서버가 작성하는 디렉토리를보다 명확하게 관리하는 것이 좋습니다. 디렉토리 내에서 생성 된 파일에 특정 그룹 권한이 있어야하는 경우 디렉토리에 sgid 비트를 설정하여 내부에있는 새 파일이 그룹 소유권을 상속받을 수 있습니다. 파일에 대한 액세스 권한이 필요한 사용자는 액세스 권한이있는 그룹의 구성원이어야합니다. 이는 세계에서 읽을 수있는 세계 기록 가능한 파일을 만드는 것보다 훨씬 안전합니다.

php > umask(0); 
// Should get created as 666 
php > touch('file1.txt'); 

// "2" perms revoked from group, others, gets created as 644 
php > umask(022); 
php > touch('file2.txt'); 

// All revoked (2,4) from group, others, gets created as 600 
php > umask(066); 
php > touch('file3.txt'); 

-rw-rw-rw- 1 me group  0 Aug 24 15:34 file1.txt 
-rw-r--r-- 1 me group  0 Aug 24 15:35 file2.txt 
-rw------- 1 me group  0 Aug 24 15:37 file3.txt 
3

umask는 기본적으로 파일을 만드는 기본 설정입니다. 기본적으로 기본 chmod를 켠 다음 파일을 쓰고 chmod (chmod)하는 것보다 파일을 쓰는 것이 안전합니다. 하루가 끝날 때까지 파일 쓰기를 끝내고 chmod를 실행하는 시간은 기껏해야 밀리 초가 될 것이므로 나는 이것에 회의적입니다.

umask() sets PHP's umask to mask & 0777 and returns the old umask 

그것은 기본적으로 당신이 OS의 리눅스와 같은에 넣어 무엇에 기본 쓰기 권한을 설정하고 다시 재설정 할 수 있도록 다음 이전을 반환합니다. 이것은 PHP 프로세스 자체에 적용됩니다.

문서 페이지의 설명 : http://php.net/manual/en/function.umask.php은 예를 들어 설명합니다.

관련 문제