루트가 아닌 프로세스가 보안을 손상시키지 않고 모든 홈 디렉토리에 액세스(읽기 및 쓰기)하도록 허용하는 방법에 대한 아이디어가 있습니까? 일반 사용자는 서로의 홈 디렉토리에 액세스할 수 없어야 합니다.
모든 아이디어를 환영합니다. 심지어 미친 아이디어도 환영합니다(nfs 및 kerberos 설정?) :)
기본적으로 루트가 아닌 프로세스가 웹 서버 프로세스인 사용자의 홈 디렉터리에 대한 웹 인터페이스를 만들어야 합니다.
새 파일의 소유자는 홈 디렉토리 사용자여야 합니다. 가능합니까?
답변1
완전한 답변을 원하시면 추가 정보가 필요합니다. 내가 이해한 바에 따르면, 당신은 조사하고 싶을 수도 있습니다액세스 제어 목록. 이는 많은 Unices에서 지원되며 어떤 사용자가 어떤 파일에 액세스할 수 있는지 더 효과적으로 제어할 수 있습니다.
주의를 기울이고 100% 편안하지 않다면 먼저 가상 머신에서 사용해 보세요.
답변2
내 생각에 어려움은 홈 디렉토리가 귀하의 환경에서 공개적으로 실행 가능하지 않다는 것입니다.
하나 넣어도 돼액세스 제어 목록모든 홈 디렉터리에서 해당 디렉터리의 특정 사용자나 그룹에 실행 권한을 부여합니다. 그러면 웹 서버가 사용자의 홈 디렉터리에 있는 모든 파일에 액세스하여 잠재적으로 권한을 상승시킬 수 있는 수단을 제공할 수 있습니다(적어도 이는 로컬 파일 액세스 취약점의 영향을 증폭시킵니다). 예를 들어, Solaris 또는 Linux에서는 acl
기본 파일 시스템이 이 옵션으로 마운트되었는지 확인한 후 다음을 실행합니다.
setfacl -m user:www-data:x /home/*
(이를 계정 생성 설정에 통합하세요). 그런 다음 사용자에게 해당 ~/public_html
디렉토리가 사용자가 읽을 수 있어야 한다고 알려주십시오 www-data
. 다음 명령을 실행할 수 있습니다.
setfacl -R -m default:user:www-data:rx ~/public_html
setfacl -R -m user:www-data:rx ~/public_html
또 다른 가능성은 public_html
모든 사용자의 디렉토리를 파일 시스템의 별도 위치에 마운트하는 것입니다. 이 접근 방식의 장점은 홈 디렉터리에 대한 권한이 중요하지 않으며 웹 서버가 루트 모드에서 실행될 수도 있다는 것입니다. Linux에서는 홈 디렉터리에 대해 다음을 수행할 수 있습니다.
mount --bind /home/joe/public_html /srv/homepages/joe
디렉토리 public_html
와 그 내용은 여전히 액세스 가능해야 합니다 www-data
.
Linux 바인드 설치 방법의 변형은 다음을 사용합니다.파일 시스템 바인딩파일 시스템. 이 방법은 public_html
웹 서버에서 아래의 모든 파일을 읽을 수 있다는 점을 제외하고는 binfs(대부분의 유니스)를 지원하고 ACL 설정이 필요하지 않은 모든 운영 체제에서 작동합니다 .
bindfs -u www-data -p 500 /home/joe/public_html /srv/homepages/joe