수퍼 유저 / 관리자 대신 새로 생성 된 파일 및 폴더를 www-data로 만듭니다.


13

나는 지금까지 권한으로 어려움을 겪고 있으며 다른 질문을 게시했지만 아직 문제를 해결할 방법없이 문제가 무엇인지 확인했습니다.

내 설정 :

  • LAMP 스택이있는 Ubuntu 데스크탑
  • 5 "사용자"나는 sudo useradd -r -s /bin/false USERNAME로컬 네트워크 공유 폴더 (예 : 네트워크의 컴퓨터가 / var / www 폴더에 연결하고 Samba를 사용하여 공유)에 액세스하는 데 사용 하고이를 사용하여 우분투 서버에서 만든 사용자를 만들었습니다 .
  • 편집 : 목적은 로컬 네트워크의 모든 컴퓨터가 동일한 웹 사이트에서 로컬로 작동 할 수있는 일종의 "마스터 로컬 호스트"를 만드는 것입니다 (고정 IP 주소가 없으므로 다른 곳에서 서버에 액세스 할 수 없음) .

내 문제:

현재 /var/www/html네트워크의 컴퓨터를 사용하여 새 폴더를 만들 때 (예 : / var / www / html / testsite1 폴더 만들기)이 폴더는 boris:www-data내 우분투 데스크탑 설치의 주 관리자 인 "boris" 가 자동으로 소유합니다. , 실제로 ls -l새로 작성된 폴더에서 실행할 때 boris : www-data 가 표시되어 현재 설정에 문제가 있습니다 (주로 LifeInTheGrid의 wordpress에 Duplicator Plugin 사용). 그러나 두 내 /var/www내이 /var/www/html소유하고 있습니다www-data:www-data

따라서 어떻게 할 수 있는지 알고 싶습니다.

  • / var / www 및 / var / www / html 아래의 모든 파일 및 디렉토리의 www-data : www-data로 소유권을 변경하십시오.

  • 확인 모든 파일 또는 내가 자동으로 www가 데이터가 소유합니다 내 네트워크의 사용자의로 만듭니다 폴더 : www가 데이터 (는 복사기 플러그인이 난 경우 무엇 그대로 즉, 자동으로 PHP 스크립트에 의해 생성 된 파일을 포함 틀리지 않음).

그렇게 할 방법이 있습니까?

참고 : 저는 Linux 및 명령 줄과 관련된 것을 가진 초심자이지만 빨리 따라 잡습니다.

참고 2 : umask는 이미 0002로 설정되어 있습니다

편집하다:

이것을 시도 :

sudo chown -R www-data:www-data /var/www/

그런 다음 다음을 수행하여 setuid 및 setgid 비트를 설정하십시오.

sudo chmod u+s /var/www/html
sudo chmod g+s /var/www/html

그런 다음 로그 오프하고 아파치를 다시 시작한 다음 네트워크 IP (정적이 아닌 로컬 IP)를 통해 서버에 연결된 Mac을 사용하여 새 폴더를 만들려고했습니다.

나는 달렸다

ls -l on /var/www/html

출력은 여전히 ​​:

drwxr-sr-x 2 boris   www-data  testsite1

노트 :

이미 아파치 구성과 envvars를 이미 확인했으며 이미 설정되어 있습니다.

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

편집 : 나는 boris : www-data가 소유 할 모든 것을 설정하고 envvars apache config를 boris : www-data로 설정하는 등 거꾸로 시도했습니다. 작동했습니다!

여기 내가 한 일이 있습니다.

envvar를 다음으로 변경

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

sudo chown -R boris:www-data /var/www/

Apachem을 다시 시작하고 새 폴더를 만들고 파일을 추가하고 플러그인을 실행 한 후 이제는 좋다고 말합니다 !!!


보안 상 www-data 사용자 또는 그룹이 파일을 소유하도록 설정하는 것은 좋지 않습니다. 드물게 웹 서버에 쓰기 액세스가 필요한 특정 파일이 필요할 수 있습니다. 당신이 이루려고하는 것이 무엇입니까?
thomasrutter 2016 년

답변:


11

질문 # 1에 대한 답 : 재귀chown

재귀 chown를 사용하면 소유권과 그룹을 원하는 것으로 설정할 수 있습니다 /var/www/.... 다음 명령을 사용해야합니다.

sudo chown -R www-data:www-data /var/www/

이를 통해 모든 파일과 폴더가 해당 소유권 내부에서 내부적으로 설정됩니다.


질문 # 2에 대한 반답 : setgid비트

파일에서 기본 그룹 소유권을 원하면 폴더 에서 setgid비트를 설정하십시오 /var/www/html. 그런 다음 폴더에 명시된대로 해당 그룹으로 새 파일을 작성해야합니다.

sudo chmod g+s /var/www/html

그러나 www-data디렉토리에 쓰지 않는 사용자가 아닌 경우 쓰기 권한을 설정해야하며 , 그렇게하지 않으면주의하지 않으면 보안 허점을 열 수 있습니다.

당신은 권한으로 끝나게됩니다 $USER:www-data. 소유자를 변경하려면 chown방법 # 1에 표시된대로 를 사용하십시오 (적절한 설정에서는 웹 파일에 액세스하기 위해 사용자 소유자 권한이 아닌 그룹 권한에 의존해야 함).


PHP 워드 프레스 복제기 문제

권한 문제는 사용자 / 그룹 PHP가 +x디렉토리에서 디렉토리를 편집하고 쓰기 위해 읽고 쓸 필요가있을 때 실행 된다는 것 입니다.

PHP는 www-data기본 구성을 사용하는 Ubuntu 설치에서 기본적으로 실행됩니다 . 이상적으로는 Duplicator Plugin이 PHP 플러그인 인 것처럼 붙어서 위의 단계로 문제를 해결할 수 있습니다.

이상적으로 Duplicator 플러그인의 설명서를 확인하여 실행 및 작동에 필요한 권한을 확인해야합니다.


나는 setuid 방법을 좋아한다 :)
Rinzwind

이것은 내가 찾던 것입니다 !!!! 유일한 문제 : 그것은 작동하지 않았습니다 :-( 로컬 IP를 통해 서버에 액세스하여 내 Mac에 폴더를 만들었습니다 (즉, 우분투 데스크탑 컴퓨터가 아님). ls -l을 실행할 때 여전히 boris가 소유하고 있습니다 : www- 데이터 :-/
Boris Chevreau 2016 년

폴더가 아닌 파일에 대한 사용자 소유권을 설정했기 때문입니까? 내가 만든 폴더가 www-data : www-data에서 자동으로 소유 할 수 없기 때문입니까?
Boris Chevreau 2016 년

Mac은 Linux와 다르며 실제로 운이 좋지 않으면이 방법이 작동하지 않으며 기본 파일을 설정하기 위해 단순한 권한 (예 : ACL 및 기타 것) 이상을 엉망으로 만들어야합니다. . 또한 '작동하지 않았다'는 모호합니다. 정의가 작동하지 않고 출력을 질문에 대한 편집으로 포함합니다.
토마스 워드

1
디렉토리에 적용된 setuid는 Linux에서 항상 무시됩니다. iirc
muru

6

여러분이 만든 파일이나 폴더 /var/www/html가 사용할 수있는 www-data에 의해 자동으로 소유되도록하기 위해 inotifycron과 비슷하지만 속성 / 파일 생성, 수정 등의 변화가 있는지 폴더 / 파일을 모니터링합니다.

먼저 다음을 사용하여 설치하십시오.

$ sudo apt-get install incron

다음을 사용 incron하여 루트를 사용하도록 허용하십시오 /etc/incron.allow.

$ sudo vim /etc/incron.allow

root파일에 추가 한 다음 저장하고 종료하십시오.

다음을 사용하여 incrontab을 편집하십시오.

$ sudo incrontab -u root -e

다음 줄을 추가하십시오.

/var/www/html IN_CREATE /bin/chown -R www-data:www-data /var/www/html/

저장 및 종료.

이제 /var/www/html디렉토리 에 파일이 생성 되 자마자 자동으로 onwership이로 설정됩니다 www-data:www-data.

incrontab의 줄 설명 :

/var/www/html 모니터 될 디렉토리입니다.

IN_CREATE생성 된 파일을 감시합니다. 그것은의 파일 변경 마스크 .

/bin/chown -R www-data:www-data /var/www/html/ 실행할 명령 / 조치입니다.


가능성이 사용자 소유권 자주 변경하지 않아야하며 사용자 소유권 자체를 재설정 ... 또는 통증이있을 수 있습니다 ACL을 사용 할 수 있습니다 - 그들은 inotify를 및 setgid없이 이런 일을 달성 할 수있다
토마스 구

이 서버의 전체 목적은 "마스터 로컬 호스트"로 사용하는 것입니다. 예를 들어 localhost 웹 사이트를 작성하고 테스트 사이트를 매우 쉽게 편집 / 바꾸기 / 이동 및 작성할 수 있습니다. 모든 것을 수동으로 재설정해야하는 경우 전체 목적을 제거합니다.-/
Boris Chevreau

이 "침식"이 유일한 방법입니까? 왜 그렇게 복잡해야하는지 모르겠습니다. 내가 찾고있는 것은 네트워크의 모든 컴퓨터 가이 서버에서 웹 사이트를 만드는 간단한 방법입니다. 궁극적으로 고정 IP가 없기 때문에 (따라서 보안은 문제가되지 않습니다), 다른 해결 방법이 있습니까?
Boris Chevreau 2016 년

고마워, 매력처럼 작동합니다!
trurl

3

/ var / www 및 / var / www / html 아래의 모든 파일 및 디렉토리의 www-data : www-data로 소유권을 변경하십시오.

cd /var/www/
chown -R  www-data:www-data /var/www/
  • ./html 여기에 포함됩니다 (/ var / www /의 일부로)
  • -R재귀 적으로 만듭니다 (따라서의 모든 디렉토리를 통과합니다 /var/www/).

www.data:www-data가 내 네트워크 사용자와 함께 만들 파일이나 폴더를 자동으로 소유하는지 확인하십시오.

  • / var / www / html / 내부에서 가정합니까?

아파치 설정을 www-data로 설정하십시오. 보다/etc/apache2/envvars

# envvars - default environment variables for apache2ctl

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

이 편집 후 아파치를 다시 시작해야합니다 ( sudo service apache restart).

그것은 내가 틀리지 않은 경우 Duplicator 플러그인이하는 것처럼 PHP 스크립트에 의해 자동으로 생성 된 파일을 포함합니다.

여기서 문제는 아마도 플러그인이 아니라 PHP입니다. 사용자는 PHP와 동일한 프로세스 여야합니다. 따라서 사용자 및 그룹 ( /etc/php5/apache2/php.ini) 인 경우 www-data로 설정해야합니다 .


데비안과 마찬가지로 우분투는 기본적으로 PHP 프로세스 / 작업자를 실행 www-data합니다.
토마스 워드

또한 /var/www/html그룹 소유권 및 읽기 / 쓰기 권한도 문제입니다 . 다른 문제는 사용자가 만든 파일이 있어야 www-data:www-data한다는 것입니다. 내 생각 에는 Wordpress 사용자가 아닌 네트워크 사용자이므로 Linux 파일 권한을 따라야합니다.
토마스 워드

이들은 실제로 네트워크 사용자입니다. sudo useradd -r -s / bin / false USERNAME을 사용하여 우분투 서버에서 만든 사용자이며 로컬 네트워크 공유 폴더에 액세스하는 데 사용됩니다
Boris Chevreau

모든 폴더와 파일의 소유권과 쓰기 권한을 다시 boris : www-data로 변경 한 다음 apache의 envvar를 boris : www-data로 변경하면 어떻게됩니까? 새 파일을 만들 때마다 소유자가 boris : www-data로 설정되어 있기 때문에 문제를 해결할 수 있습니까?
Boris Chevreau

2

나는 그것을 해결했다! 나는 아직도 그것이 아파치 envvars 문제라고 생각하지만 그것이 그 문제를 해결 한 특별한 것인지 확실하지 않습니다 ... 어쨌든 여기 내가 한 일이 있습니다.

envvar를 다음으로 변경

export APACHE_RUN_USER=boris
export APACHE_RUN_GROUP=www-data

sudo chown -R boris:www-data /var/www/

지금까지 작동하고 있습니다. 더 테스트 할 것입니다 ...

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