chmod
CentOS 파일 권한에 대해 기본적으로 이해하고 있습니다. 777은 111111111을 나타내며, rwx
이는 각 루트, 그룹, 사용자 등을 나타냅니다. 내가 알 수 없는 것은 Apache, FTP, PHP가 모두 제대로 작동하도록 설정하는 방법입니다.
proFTPd 서버와 Apache 서버가 있습니다. Apache 서버가 PHP 파일을 읽고 실행할 수 있도록 proFTPd 서버에 대한 권한을 어떻게 설정해야 합니까? 초기 설정에서 Apache는 FTP를 통해 업로드된 파일을 읽을 수 없었습니다. FTP 사용자와 Apache 서버를 같은 그룹에 두어야 합니까?
표준 호스팅 시스템에서 권한 시스템(FTP-Apache-PHP)은 어떻게 작동합니까?
답변1
Apache에서 FTP를 작동시키려고 하지 말고 가장 안전한 또 다른 접근 방식을 취하십시오.
suPHP와 suExec를 사용하면 Apache는 필요한 모든 것을 만들기 위해 해당 사용자를 사용하게 되며 ftp는 이미 해당 사용자 자체를 사용하게 됩니다.
centOS에서 suPHP를 사용하여 아파치를 컴파일하는 방법은 다음과 같습니다. http://markus.revti.com/2010/03/installing-suphp-on-centos-5/
목록에 올바른 저장소가 있으면 다음을 시도해 볼 수 있습니다.yum install mod_suphp
꽤 간단한 방법인 것 같은데, 문제가 생길 것 같지 않습니다.
궁금한 점이 있으시면 알려주세요. 최선을 다해 도와드리겠습니다.
답변2
Apache는 특정 사용자(일반적으로 httpd)로 실행되지만 PHP는 구성 방법에 따라 동일하거나 다른 사용자로 실행될 수 있습니다.
- PHP가 모듈로 실행되면 Apache와 동일한 사용자가 됩니다.
- PHP가 CGI로 실행되는 경우(매우 드물게) Apache가 suexec를 사용하도록 구성되지 않는 한(이 경우 사용자는 구성에 포함됩니다) 일반적으로 동일한 사용자로 실행됩니다.
- PHP가 FastCGI로 실행 중인 경우 구성된 사용자로 실행됩니다.
상황은 suPHP의 경우 더욱 복잡합니다. 이는 스크립트 파일을 소유한 uid를 사용하여 스크립트가 실행된다는 점을 제외하면 CGI의 상황과 유사합니다.
여기에 대한 제한 사항은 다음과 같습니다.
웹 서버 uid(및 PHP uid)가 쓸 수 있는 디렉터리/파일은 매우 제한되어야 하며, 이러한 쓰기 가능한 위치에서 코드 삽입 공격을 방지하려면 특별한 주의가 필요합니다.
일반적으로 일반 사용자는 다른 UID에 파일을 쓸 수 없으며 PHP 코드 파일을 유지 관리해야 할 수도 있습니다(예: 사용자 쓰기 가능).
웹 서버에서 PHP 파일을 실행할 수 있는지 여부는 파일의 실행 가능 비트와는 아무런 관련이 없습니다(그러나 파일이 포함된 디렉터리의 실행 가능 비트와는 많은 관련이 있습니다).
FTP 사용자와 Apache 서버를 같은 그룹에 두어야 합니까?
아마도 그렇지 않을 것입니다. 웹서버/PHP를 "기타"로 생각하는 것이 좋습니다. 따라서 웹서버가 액세스할 수 있는 모든 것(PHP 포함)에 대한 권한은 다음과 같아야 합니다.
- 사용자: 읽기, 쓰기
- 그룹: 정책에 따라 다름
- 기타 독서
즉0644(위의 실행 권한과 관련 없음), 디렉터리의 경우:
- 사용자: 읽기, 쓰기, 실행
- 그룹: 정책에 따라 다름
- 기타: 읽기, 실행
즉0755