Apache 사용자에게 쓰기 권한을 부여하는 방법

Apache 사용자에게 쓰기 권한을 부여하는 방법

저는 서버관리 초보자입니다.

나는 사용자가 내 웹사이트에서 파일을 업로드할 수 있도록 class.upload.php 라이브러리를 사용하고 있습니다. 이를 위해 다음과 같은 전체 경로를 제공했습니다: uploads/gifs/90/x.gif 이 경로는 내 서버에 없지만 생성하고 싶습니다.

내 PHP 로그는 다음을 반환합니다.PHP Warning: mkdir (): Permission denied

내 서버에서 루트 권한으로 업로드 폴더를 생성하면 777라이브러리는 파일을 업로드할 때 나머지 경로를 올바르게 생성합니다. 사용자 아파치는 gifs/90/x.gif를 소유합니다.

위에서 볼 수 있듯이 Apache 사용자에게는 html 폴더에 대한 쓰기 권한이 없습니다. etc/groups에서 Apache가 이 그룹에 속해 있음을 알 수 있습니다. nagcmd: x: 503: nagios, apache

서버의 웹 폴더에는 다음과 같은 권한이 있습니다. drwxr-xr-x 32 root root 4096 Feb 4 17:20 html

라이브러리가 html 폴더 내에 디렉토리를 자동으로 생성하기를 원합니다. 가장 좋은 접근 방식은 무엇입니까?

  1. html/에서 다른 사람에게 쓰기 권한을 할당합니다. drwxr-xr-wx 32 root root 4096 Feb 4 17:20 html

  2. html/에 쓸 수 있도록 nagcmd 그룹에만 권한을 부여합니다(이 작업을 수행하는 방법을 모르겠습니다).

  3. 다른 사람

나는 네트워크 보안을 손상시키고 싶지 않습니다.

미리 감사드립니다.

답변1

이는 시스템에 따라 다릅니다. 그러나 아마도 이라는 사용자 및 그룹이 있고 www-data서버는 해당 사용자 및 그룹으로 실행되고 있을 것입니다.

CAP_CHOWN오직 당신만이 사용자를 변경할 수 있습니다(당신은 루트입니다). 그룹에 파일을 추가할 수 있지만 www-data먼저 관리자에게 그룹에 추가해 달라고 요청해야 합니다.

해당 기능이 없으면 CAP_CHOWN파일 액세스 제어 목록을 사용할 수 있습니다.

setfacl -R -m "g:www-data:rwX" "directory-name"

파일 시스템에 대한 액세스 제어 목록을 활성화해야 할 수도 있습니다. 그러나 이는 높은 권한(FS에서 일회성 활성화 제외)이 필요하지 않으므로 가장 안전한 방법입니다.

관련 정보