특정 이메일 주소에 대해 스크립트로 파이프하도록 Qmail을 설정했습니다. 그러나 스크립트의 일부가 작동하지 않는 파일을 만듭니다.PHP Qmail이 권한으로 인해 스크립트를 작동하지 않습니까?
쓰기를 시도하는 폴더의 그룹은 쓰기 권한 (775)을 가진 apache
입니다. id popuser
으로 확인한 아파치 그룹에 popuser
을 추가했습니다. 이 정보는 아래 정보를 기반으로 불필요한 것일 수 있습니다.
get_current_uid() = [file/folder OWNER] (we'll call him Bob, he is a user not a group)
getmyuid() = Bob
: 나는 PHP 스크립트 내부 get_current_uid()
, getmyuid()
, getmygid()
, exec("whoami")
을 사용했습니다
(I 아파치 차/유효 그룹 둘을 시도하고, 차 한) getmygid() = Bob
exec("whoami") = [blank]
777에 쓰려는 디렉토리를 설정하면 모든 것이 잘 작동합니다. 즉, 사용 권한을 포함하는 것이 원인입니다. 이 경우 파일은 소유되며 그룹은 popuser
입니다 (위의 uid/gid 비트의 결과는 아닙니다). 적어도 현재 사용자는 popuser
이고 실제로는 Bob
이 아님을 의미합니다.
결과적으로 chmod를 0644로 할 수 있지만 chown/chgrp (다른 그룹의 UI가 파일을 관리 할 수 있도록 아파치가 필요합니다). 디렉토리 세계 쓰기를 필요가 없습니다 시도에서
, 나는 후 파일이 생성되기 전에에서chmod('/path/to/dir', 0777);
및
chmod('/path/to/dir', 0775);
붙어했지만, 실패로이 분명히 또한
popuser
로 실행됩니다.
내가해야 할 일은, 간단히 말해서, Bob
/apache
(소유자/그룹)가 Bob
로 실행하고 있다고 큐메일을 사용하여 쓰기 권한이 디렉토리에 파일을 생성하지만, 실제로 popuser
로 실행됩니다.
바라건대 말이 되네.
내 해결 방법은 현재 popuser가 그룹 인 Bob이 소유 한 별도의 디렉토리를 만드는 것입니다. 해당 디렉토리를 사용하여 파일을 만들고 file_get_contents를 사용하여 다른 httpd 프로세스를 호출 한 다음 파일을 읽은 다음 올바른 디렉토리에 쓰고 원본 스크립트에서 임시 파일을 삭제하십시오. 내 즐겨 찾기가 아닙니다. – Aeisor