www-data 사용자에게 내 홈 폴더의 폴더를 어떻게 제공합니까?


31

폴더가 있습니다 : /home/myuser/folderA

www-data 사용자에게 위의 내용에 대한 쓰기 권한을 부여하고 'myuser'는 계속해서 일반 액세스 권한을 갖습니다 (어쨌든 myuser의 홈 폴더이므로).

어떤 명령을 사용해야합니까?

참고 :의 www-data다른 폴더에 액세스 하고 싶지 않습니다 /home/myuser/.

미리 감사드립니다.

답변:


46

먼저 그룹에 자신을 추가 www-data

usermod -a -G www-data (your username)

그때:

chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA

/home/myuser다른 사용자의 액세스를 허용하지 않는 한 트릭을 수행해야 합니다.

첫 번째 명령은 폴더의 그룹 소유권을 웹 서버의 소유권으로 변경합니다. 두 번째 명령은 www-data그룹의 구성원에게 읽기, 쓰기, 디렉토리 입력 권한을 제공하며 그룹 s플래그는 해당 디렉토리 내부에서 생성 된 모든 파일이 www-data그룹으로 사용되도록합니다 . myuser따라서 www-data사용자가 액세스 할 수있는 파일을 만들면 파일이 생성 됩니다.

Nb. 이는 또한 umask사용자 계정과 웹 서버 의 설정에 따라 다릅니다. folderA에서 생성 된 파일에 그룹 rw액세스 권한 이 있어야 합니다 (그리고 필요 그룹 내에 생성 된 디렉토리 rwx)

웹 서버에 /home/myuserdir (quite sensible)에 대한 권한 이 없으면 다른 작업을 수행하지 않으면 액세스 할 수 없습니다. 두 솔른 :

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (이것은 추악한 해킹이므로 재부팅 후에 반복해야합니다. 그러나 강력한 속임수를 사용하여 SSH jails 내에서 폴더에 액세스 할 수 있습니다.)

  2. 공유 폴더를 다른 곳으로 이동하면됩니다 (예 :) /home/shared-stuff/folderA.

두 번째 옵션이 가장 좋습니다. folderA의 내용이 실제로 공개되어 있고 누가 보는지 신경 쓰지 않고 다음과 같이 설정할 수 있다고 가정 해 봅시다.

sudo mkdir -m777 /home/shared-stuff

그런 다음 위와 같은 권한을 가진 folderA와 www-data가 다른 권한으로 액세스 할 수없는 folderB를 넣을 수 있습니다.

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB

무엇 sg+rwxs?
T.Todua

"그룹 스티커"비트. "첫 번째 ..."로 시작하는
단락

6

또 다른 방법은 아파치 설정에서 사용자 이름을 직접 변경하는 것입니다. 이것은 로컬 시스템 인 경우 폴더의 모든 권한을 손상시킬 수있는 이미지를 다른 곳에 저장하는 것입니다. 또한 사용자가 1 명이고 www-data에 관심이없는 경우에도해야합니다!

$ sudo vi /etc/apache2/apache2.conf

사용자와 그룹을 찾아서
User <Your User>
Group <Your Group>

$ sudo service apache2 restart

이 솔루션은 그렇게 안전하지 않은 것 같습니다. 누구나이 설정으로 어떤 종류의 보안 위협이 발생하는지 알고 있습니까?
Fleuv

나는 그것이 안전하지 않다고 확신합니다. 그래서 로컬 컴퓨터의 정밀도 만 부여했습니다.
Shadowbob

이 솔루션은 귀하의 폴더에 아파치에 대한 모든 액세스를 제공합니다 ...
Loenix
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.