현재 위치: > 최신 기사 목록> PHP Umask 함수를 사용할 때 디렉토리 권한을 설정하기 위해 어떤 주요 포인트를주의해야합니까?

PHP Umask 함수를 사용할 때 디렉토리 권한을 설정하기 위해 어떤 주요 포인트를주의해야합니까?

gitbox 2025-08-27

1. Umask () 의 ​​작동 방식을 이해하십시오

Umask ()는 실제로 파일이나 디렉토리에 직접 권한을 설정하지 않습니다. 마스크를 통해 파일 또는 디렉토리 권한의 값을 제한합니다. 각 파일과 디렉토리에는 생성 된 경우 (일반적으로 파일) 및 777 (디렉토리)을 작성할 때 기본 권한이 있습니다. 그러나 Umask ()는 이러한 기본값에 대해 약간의 수행 "및"작동 (및)을 수행하여 실제 권한을 설정합니다.

예를 들어, 기본 권한 777은 최종 권한 값을 계산하기 위해 UMASK 값으로 계산됩니다. 예를 들어:

  • 기본 디렉토리 권한 : 777

  • Umask 값 : 022

계산 결과는 755 , 즉 디렉토리의 권한은 RWXR-XR-X 입니다.


2. Umask () 함수를 사용하여 디렉토리 권한을 설정하는 방법

PHP에서는 Umask () 함수를 통해 프로세스의 Umask를 설정할 수 있습니다. 설정 후 PHP는 후속 생성에서 파일 또는 디렉토리를 작성할 때 Umask 값의 영향을받습니다. 일반적으로 디렉토리가 생성되기 전에 Umask 값을 설정해야합니다.

예를 들어, 다음 코드는 UMASK를 0022로 설정하여 PHP가 만든 디렉토리의 권한이 755입니다.

 <span><span><span class="hljs-comment">// 설정 umask</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);

</span><span><span class="hljs-comment">// 디렉토리를 만듭니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mkdir</span></span><span>(</span><span><span class="hljs-string">'new_directory'</span></span><span>);
</span></span>

위의 예에서, mkdir () 함수는 755의 권한이있는 디렉토리를 만듭니다. 기본 허가 777 마이즈 UMASK 022 후 최종 디렉토리 권한은 755입니다.


3. 권한을 설정할 때 일반적인 오류 및 예방 조치

3.1 권한이 너무 느슨하도록주의하십시오

특히 공개 또는 공유 서버 환경에서 디렉토리 권한을 설정할 때 과도한 권한이 보안 위험으로 이어질 수 있습니다. 예를 들어, 디렉토리 권한을 777 (완전히 열린)으로 설정하면 많은 경우에도 불안한 디렉토리 컨텐츠를 읽고, 쓰고, 실행할 수 있습니다. 이 문제를 피하기 위해 755 또는 750과 같은 최소한 보수적 인 권한을 사용하는 것이 좋습니다.

3.2 Umask 는 새로 생성 된 파일 및 디렉토리에만 유효합니다.

Umask () 에 의해 설정된 권한 마스크는 현재 프로세스에서 생성 된 파일 또는 디렉토리에만 영향을 미칩니다. Umask ()는 기존 파일 또는 디렉토리에 영향을 미치지 않습니다. 생성 된 파일 또는 디렉토리에 대한 권한을 수정 해야하는 경우 chmod () 함수를 사용할 수 있습니다.

 <span><span><span class="hljs-title function_ invoke__">chmod</span></span><span>(</span><span><span class="hljs-string">'existing_directory'</span></span><span>, </span><span><span class="hljs-number">0755</span></span><span>);
</span></span>

3.3 PHP의 안전 모드 및 Open_basedir 설정과의 호환성

일부 PHP 구성 환경 (예 : PHP의 안전 모드 활성화 또는 Open_basedir 등)에서는 PHP의 파일 및 디렉토리 작동 권한이 제한 될 수 있습니다. Umask () 를 통해 권한을 설정하더라도 이러한 구성에 의해 제한 될 수 있습니다. 따라서 이러한 환경에서 umask ()를 사용할 때 특별한주의가 필요합니다.


4. 웹 응용 프로그램에서 umask ()를 사용하는 실제 시나리오

4.1 파일 업로드

파일 업로드를 지원하는 웹 응용 프로그램에서 업로드 된 파일에는 종종 특정 권한이 필요합니다. umask ()를 사용하여 파일이 생성 될 때 권한을 제어하십시오. 예를 들어, 사용자가 업로드 한 파일을 처리 할 때 적절한 Umask 값을 설정하여 업로드 된 파일에 너무 느슨한 권한이 없는지 확인할 수 있습니다.

 <span><span><span class="hljs-comment">// 설정 umask,파일 권한이 없는지 확인하십시오 777</span></span><span>
</span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0022</span></span><span>);

</span><span><span class="hljs-comment">// 프로세스 업로드 된 파일</span></span><span>
</span><span><span class="hljs-title function_ invoke__">move_uploaded_file</span></span><span>(</span><span><span class="hljs-variable">$tmp_name</span></span><span>, </span><span><span class="hljs-variable">$destination</span></span><span>);
</span></span>

4.2 캐시 디렉토리를 만듭니다

웹 응용 프로그램에서 캐시 디렉토리는 일반적으로 임시 데이터를 저장하는 데 사용됩니다. 악의적 인 사용자가 캐시 된 디렉토리를 수정하는 것을 방지하려면 적절한 UMASK를 설정하여 디렉토리에 올바른 권한이 있는지 확인할 수 있습니다.

 <span><span><span class="hljs-title function_ invoke__">umask</span></span><span>(</span><span><span class="hljs-number">0027</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">mkdir</span></span><span>(</span><span><span class="hljs-string">'/path/to/cache'</span></span><span>, </span><span><span class="hljs-number">0775</span></span><span>);
</span></span>

이 예에서는 캐시 디렉토리가 권한 775로 생성되며 파일 소유자와 동일한 사용자 그룹에만 읽기 및 쓰기 권한이있는 반면 다른 사용자는 디렉토리의 내용을 수정할 수 없습니다.