내 홈 폴더 내의 /var/www/
새 Webroot
디렉토리 로 연결하는 데 몇 가지 문제가 있습니다. 나는 이것이 리눅스 권한에 대한 이해 부족으로 인한 것이라고 생각합니다.
알다시피 symlinks는 연결하려는 디렉토리와 연결하려는 디렉토리의 형태를 취해야하므로 제 경우에는 다음을 실행했습니다.
sudo ln -s ~/Webroot/* /var/www/
내가 실행하는 경우이 종류의, 근무하고 ls
에 /var/www/
난 내에서 모든 파일을 볼 수 있습니다 Webroot
디렉토리.
내 Webroot
폴더 에있는 파일을 실행하려고 할 때마다 403 권한 오류가 발생합니다. Webroot 디렉토리의 파일이 나에 의해 생성되고 Apache 인스턴스가 www-data로 실행 중이기 때문에 이것이됩니까?
이 경우, 실행하기 위해 생성하는 모든 파일에 대한 권한을 변경해야합니까?
이전에 기본 기본 호스트의 디렉토리 루트를 Webroot
폴더로 가리키는 로컬 아파치 인스턴스를 실행했습니다 .이 인스턴스에서는 권한을 변경할 필요가 없었습니다. 도움을 주시면 감사하겠습니다.
답변
이것은 좋은 습관이 아닙니다. 나는 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
도움이 되었기를 바랍니다. 어려움이 있으면 여기에 게시하십시오.
답변
원하는 것을 달성하는 것은 좋은 습관이 아닙니다.
PHP를 사용하는 경우 suexec , suphp 또는 php-fpm 및 fastcgi를 .
귀하의 문제에 대한 것이 맞습니다. 이는 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
편집 : 일반 사용자 계정을 사용하여 파일 / 폴더를 추가하는 경우 해당 명령을 다시 실행해야합니다.
답변
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 명령 이전을; “$”는 단일 사용자 허용을 의미합니다
답변
대상뿐만 아니라 부모에 대한 권한도 확인해야합니다.
답변
나는이 문제에 직면했다. 그러나 홈 디렉토리 그룹을 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