파일 사용 권한 확인


14

passthru() 또는 exec()을 통해 운영 체제 별 명령을 실행하지 않고도 file permissions을 어떻게 확인할 수 있습니까?

17

사용 fileperms() 기능

clearstatcache(); 
echo substr(sprintf('%o', fileperms('/etc/passwd')), -4); 

0

파일 권한을 확인하여 무엇을하고 싶습니까?

보안 코드를 작성할 때 거의 항상 "확인한 후 수행"하는 것이 잘못되었습니다. 그 이유는 당신이 무언가를 할 수 있는지 실제로 그것을하고 있는지를 확인하는 사이에, 시스템의 상태가 바뀌면 다른 결과가 생길 수 있기 때문입니다.

예를 들어 파일을 작성하기 전에 파일이 존재하는지 확인하는 경우 파일을 성공적으로 작성했는지 (또는 세부적인 방식으로 확인하지 않았는지) 확인하지 말고 나중에 내용에 의존하십시오. 당신이 작성한 파일은 실제로 공격자가 작성한 파일을 읽을 수 있습니다.

그래서 파일 권한을 확인하는 대신 권한 검사가 성공하면 정상적으로 처리하고 오류를 정상적으로 처리합니다.

+1

'아무튼 아마도 그가 고정 권한에 대한 데몬을 구축하는 것, 권한을 확인하기위한 가능한 이유는 항상있다 다른 프로세스가 그렇게 할 것이므로 파일을 읽거나 쓰려면 스크립트에 의존해야합니다. 20 may. 112011-05-20 14:44:56

+1

다른 예는 특정 파일 권한을 기반으로 게이트 역할을하는 rewriteMap 프로그램입니다. 21 mar. 122012-03-21 16:45:08


11

is_readable(), is_executable() 등의 명령을 사용할 수 있습니다.

+1

is_writable()은 그룹 멤버쉽을 체크하지 않습니다 (PHP 5.5.18부터). 12 nov. 142014-11-12 22:30:01


1

사용 fileperms() 기능과 문자열 :

substr(decoct(fileperms(__FILE__)), -4); // 0644 
substr(decoct(fileperms(__FILE__)), -3); // 644 

당신의 경로 또는 변수

__FILE____DIR__ 바꾸기 : 파일의 경우

substr(decoct(fileperms(__DIR__)), -4); // 0777 
substr(decoct(fileperms(__DIR__)), -3); // 777 


6

실제 코더는 비트 연산이 아닌 문자열을 사용, 이것은 처리 권한의 방법은 훨씬 더 우아) :

function checkPerms($path) 
{ 
    clearstatcache(null, $path); 
    return decoct(fileperms($path) & 0777); 
} 
  0

이것은 무엇을 반환합니까, true/false입니까? 06 may. 142014-05-06 16:08:09