아파치 문서 루트를위한 최고의 권한 / 소유권


14

아파치 문서 루트의 올바른 권한 또는 소유권을 설정하는 데 도움이 필요합니다. 필요한 것은 다음과 같습니다.

  • 다른 웹 사이트에 저장된 /var/www/html/<site>
  • 두 명의 사용자가 ssh를 통해 웹 사이트를 업데이트 / 관리해야합니다.
  • 소유권은 아파치 사용자와 달라야합니다 (보안을 위해)

어떻게해야합니까? 현재 모든 파일은 세계에서 쓸 수 있으므로 좋지 않습니다. 서버는 CentOS 5.5를 실행합니다

감사


docroot 보안을위한 다른 옵션에 대한 자세한 답변은 serverfault.com/questions/357108/…를
Quinn Comendant

나는 그것이 별도의 위치에서 각 웹 사이트를 저장하는 것이 좋습니다 생각 다음 각 시스템 관리자의 사용자가 소유 한 유일한 자신의 웹 사이트 (DocumentRoot에 사용이 가상 호스트에 모두 넣어하지 않음) 및 아파치 그룹으로 두 웹 사이트 디렉토리의 그룹 소유자를 설정
회계사

답변:


22

새로운 그룹 만들기

groupadd webadmin

그룹에 사용자 추가

usermod -a -G webadmin user1
usermod -a -G webadmin user2

사이트 디렉토리의 소유권 변경

chown root:webadmin /var/www/html/

사이트 디렉토리의 권한 변경

chmod 2775 /var/www/html/ -R

이제 누구나 아파치 사용자를 포함하여 파일을 읽을 수 있지만 루트 및 웹 관리자 만 내용을 수정할 수 있습니다.


좋아 보인다. 그러나 사용자가 새 파일을 만들거나 업데이트 된 파일을 복사하면 어떻게됩니까? 해당 권한이 자동으로 적용됩니까? 아니면 매번 질식하고 chmod해야합니까?
Marco

복사 된 파일은 권한 / 소유권을 유지합니다. 새 파일에 대한 기본 파일 권한은 umask명령 으로 처리됩니다 . 자세한 정보는 여기 osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy

3
dir setgid webadmin으로 새 파일을 작성하도록 할 수 있습니다
covener

1
^ +1. 빠른 방법은 다음과 같습니다. >> chmod 2775 -R / var / www / html /
James Broadhead

@James ta, 업데이트
Andy

2

-o acl로 파티션을 마운트하는 것을 선호합니다. 이를 통해 사용자 그룹 기타 권한 만 지정하는 대신 setfacl 명령을 사용하여 파일 및 폴더에 대한 세분화 된 권한을 부여 할 수 있습니다.

따라서 / etc / fstab의 파티션 행에 acl을 넣거나 mount -o remount, acl / mnt / xy로 다시 마운트 한 다음 nobody : nobody에게 웹 디렉토리의 소유권을 부여하십시오. Chmod를 770으로 설정하고 setfacl을 사용하여 필요한 폴더에만 쓰기 권한을 부여하십시오 (예 : 업로드 폴더에 대해 www-data (또는 웹 서버를 실행하는 사용자에게) 쓰기 권한을 부여하고 전체 디렉토리에 대해 자신의 사용자에게 쓰기 권한을 부여하십시오.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

이제 아무도 웹 서버와 자신의 사용자를 제외하고 파일을 읽을 수 없습니다. 폴더의 모든 파일에 쓸 수 있으며 웹 서버는 업로드 폴더에만 쓸 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.