Apache가 홈 디렉토리에 심볼릭 링크 됨-권한 오류


15

내 홈 폴더 내의 /var/www/Webroot디렉토리 로 연결하는 데 몇 가지 문제가 있습니다. 나는 이것이 리눅스 권한에 대한 이해 부족으로 인한 것이라고 생각합니다.

알다시피 symlinks는 연결하려는 디렉토리와 연결하려는 디렉토리의 형태를 취해야하므로 제 경우에는 다음을 실행했습니다.

sudo ln -s ~/Webroot/* /var/www/

내가 실행하는 경우이 종류의, 근무하고 ls/var/www/난 내에서 모든 파일을 볼 수 있습니다 Webroot디렉토리.

Webroot폴더 에있는 파일을 실행하려고 할 때마다 403 권한 오류가 발생합니다. Webroot 디렉토리의 파일이 나에 의해 생성되고 Apache 인스턴스가 www-data로 실행 중이기 때문에 이것이됩니까?

이 경우, 실행하기 위해 생성하는 모든 파일에 대한 권한을 변경해야합니까?

이전에 기본 기본 호스트의 디렉토리 루트를 Webroot폴더로 가리키는 로컬 아파치 인스턴스를 실행했습니다 .이 인스턴스에서는 권한을 변경할 필요가 없었습니다. 도움을 주시면 감사하겠습니다.


아파치가 심볼릭 링크를 따르지 않도록 구성되어 있는지 확인 했습니까? ...이 문제가 한 번 발생했습니다. 다른 포럼의 관련 스레드는 다음과 같습니다. linuxforums.org/forum/servers/…
RobotHumans

답변:


15

이것은 좋은 습관이 아닙니다. 나는 Weboide에 동의합니다. 그러나이 목표를 달성하는 간단한 방법이 있습니다.

1). 아파치 userdir 모듈을 활성화하십시오.

sudo  a2enmod userdir

이것은 아파치 userdir 모듈을 활성화합니다. 이제 웹 사이트의 내용을 ~/Webroot/홈 디렉토리 에 넣을 수 있습니다 .

참고 : 기본 폴더는 ~/public_html

2). 에 필요한 사항을 변경하십시오 /etc/apache2/mods-enabled/userdir.conf.

삼). 아파치를 다시 시작

sudo /etc/init.d/apache2 restart

이제 브라우저를 http : // ip-address / ~ username 으로 이동하여 사이트에 액세스 할 수 있습니다 . 이 사이트에 대한 가상 호스트를 설정할 수도 있습니다.

PHP 파일을 실행하려면 하나 이상의 단계를 수행해야합니다.

를 편집하고 /etc/apache2/mods-enabled/php5.conf다음 줄을 주석으로 처리하십시오.

 <IfModule mod_userdir.c>
        <Directory /home/*/public_html>
            php_admin_value engine Off
        </Directory>
    </IfModule>
</IfModule>

그런 다음 아파치를 다시 시작하십시오.

그게 다야. 끝났습니다.

참조 : https : //wiki.ubuntu.com/UserDirectoryPHP

도움이 되었기를 바랍니다. 어려움이 있으면 여기에 게시하십시오.


7

원하는 것을 달성하는 것은 좋은 습관이 아닙니다.

PHP를 사용하는 경우 suexec , suphp 또는 php-fpmfastcgi를 .


귀하의 문제에 대한 것이 맞습니다. 이는 Webroot파일이와 다른 사용자가 소유하고 있다는 사실에서 권한 문제입니다 www-data.

다음은 문제를 해결하기위한 나쁘지 않은 솔루션입니다. sudo 또는 로그인을 루트로 사용해야 할 수도 있습니다. 실행할 모든 명령을 완전히 이해해야합니다 !!

Webroot그룹 소유권이 설정되도록 폴더와 하위 폴더 및 파일을 변경 www-data하고 적절한 권한을 설정하십시오.

# set the group ownership to be www-data
chgrp -R www-data /path/to/home/Webroot/
# make sure www-data has read & write permissions (change it to `g=r` if you want to only give read-only access)
chmod -vR g=rw /path/to/home/Webroot/
# make sure www-data can access the folders by adding the group execute bit field to directories
find /path/to/home/Webroot/ -type d -print0 | xargs -0p chmod -v g+x

편집 : 일반 사용자 계정을 사용하여 파일 / 폴더를 추가하는 경우 해당 명령을 다시 실행해야합니다.


2

Debian Lenny와 거의 같은 일을했지만 비 hax 모드로 변경하여 아파치를 올바르게 구성했습니다. 그러나 심볼릭 링크로 :

$ ll /home
drwxr-xr-x  8 root   root   4,0K nov 14 14.59 .
drwxrwxrwx  7 root   root   4,0K nov 14 21.24 www -> /var/www

~~ / Webroot 의 허용을 확인해야한다고 생각합니다 .dir (~)이 읽기 보호되어 있다고 생각 합니다. 이를 실행해야합니다.

$ ls -la /home

올바른 권한을 설정하려면 다음을 사용하십시오.

# chmod 755 /home
# chmod 755 /home/<YOURNAME>
# chown <YOURNAME>:www-data -R /home/<YOURNAME>/Webroot
# chmod 775 -R /home/<YOURNAME>/Webroot

나는 그것이 도움이 될 것이라고 생각하지만 이것에 대해 더 많은 정보를 제공하십시오. 나는 당신의 디렉토리에서 Webroot를 꺼내는 것이 좋습니다. 에 / 집에 나 같은 , 그것은 보안 문제가 될 수 있기 때문이다.

"#"는 루트 권한을 의미 합니다 ( 예 : 쓰기 는 sudo 명령 이전을; "$"는 단일 사용자 허용을 의미합니다


0

대상뿐만 아니라 부모에 대한 권한도 확인해야합니다.


왜? 이것이 Apache 제한입니까 아니면 파일 시스템 제한입니까?
Flimm

죄송합니다. 나는 정보를 확인하지 않았으며 단지 개인적인 경험에 근거한 것입니다.
zVictor

0

나는이 문제에 직면했다. 그러나 홈 디렉토리 그룹을 www-data로 변경하는 아이디어는 마음에 들지 않았습니다. 이 문제는 virtualHost의 구성 파일을 수정하여 간단히 해결할 수 있습니다. 다음을 포함하도록 디렉토리 태그를 구성하십시오.

<Directory "your directory here">
   Order allow,deny
   Allow from all
   Require all granted
</Directory>

Require all granted것 같아요 새로운 기능입니다; 기본값은 denied입니다.

이 페이지를 참조하십시오 : http://httpd.apache.org/docs/current/mod/core.html#directory

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