Apache dowiązany do katalogu domowego - Błędy uprawnień

15

Mam kilka problemów z symlinkowaniem mojego /var/www/do nowego Webrootkatalogu w moim katalogu domowym. Myślę, że wynikają one z mojego niezrozumienia uprawnień do systemu Linux.

O ile mi wiadomo, dowiązania symboliczne powinny mieć postać katalogu, do którego chcesz się połączyć, i katalogu, z którym chcesz się połączyć, więc w moim przypadku uruchomiłem:

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

to jest jakby pracował, jeśli biegnę lsna /var/www/widzę wszystkie pliki w moim Webrootkatalogu.

Ilekroć próbuję uruchomić plik, który znajduje się w moim Webrootfolderze, pojawia się błąd uprawnień 403, czy to dlatego, że pliki w moim katalogu Webroot są tworzone przeze mnie, a instancja apache jest uruchamiana jako www-data?

w takim przypadku, czy to oznacza, że ​​muszę zmienić uprawnienia do każdego pliku, który tworzę, aby go uruchomić?

Wcześniej uruchomiłem lokalną instancję apache, wskazując katalog główny mojego domyślnego vhosta na Webrootfolder, w tym przypadku nie musiałem zmieniać żadnych uprawnień. Każda pomoc będzie mile widziana.

Richzilla
źródło
sprawdziłeś, aby upewnić się, że apache nie jest skonfigurowany tak, aby nie podążał za dowiązaniami symbolicznymi .... miałem ten problem raz. powiązany wątek na innym forum może być tutaj: linuxforums.org/forum/servers/…
RobotHumans

Odpowiedzi:

15

To nie jest dobra praktyka, zgadzam się z Weboide. Istnieje jednak prosty sposób na osiągnięcie tego celu.

1). włączyć moduł apache userdir.

sudo  a2enmod userdir

to włączy moduł apache userdir. Teraz możesz umieścić zawartość strony internetowej ~/Webroot/lub cokolwiek w swoim katalogu domowym.

Uwaga: Domyślnym folderem jest ~/public_html

2). Wprowadź niezbędne zmiany w /etc/apache2/mods-enabled/userdir.conf.

3). Uruchom ponownie apache

sudo /etc/init.d/apache2 restart

Teraz możesz uzyskać dostęp do strony, przechodząc do przeglądarki na http: // adres ip / ~ nazwa użytkownika . Możesz również ustawić wirtualny host dla tej witryny.

Jeśli chcesz uruchomić pliki php, musisz zrobić jeszcze jeden krok

edytuj /etc/apache2/mods-enabled/php5.confi komentuj następujące linie:

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

Następnie uruchom ponownie apache.

Otóż ​​to. Gotowe.

Patrz: https: //wiki.ubuntu.com/UserDirectoryPHP

Mam nadzieję że to pomoże. Jeśli napotkasz jakiekolwiek trudności, opublikuj go tutaj.

aneeshep
źródło
7

To nie jest dobra praktyka, aby osiągnąć to, czego chcesz.

Jeśli używasz PHP, możesz rzucić okiem na suexec , suphp lub php-fpm i fastcgi .


Masz rację co do swojego problemu, jest to problem z uprawnieniami, ponieważ Twoje Webrootpliki są własnością innego użytkownika niż www-data.

Oto niezłe rozwiązanie problemu. Pamiętaj, że prawdopodobnie będziesz musiał użyć sudo lub zalogować się jako root. Upewnij się, że w pełni rozumiesz wszystkie polecenia, które będziesz wykonywać !!

Zmień Webrootfolder, podfoldery i pliki, aby ustawić własność grupy na www-datai ustawić odpowiednie uprawnienia:

# 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

Edycja: Pamiętaj, że z pewnością będziesz musiał ponownie uruchomić te polecenia, jeśli dodasz pliki / foldery za pomocą zwykłego konta użytkownika.

Weboide
źródło
2

Zrobiłem prawie to samo z Debianem Lennym, ale zmieniłem tryb na inny niż hax, poprawnie skonfigurowałem apache. Ale z dowiązaniem symbolicznym:

$ 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

Myślę, że powinieneś sprawdzić uprawnienia ~ i ~ / Webroot , myślę, że twój katalog (~) jest chroniony przed odczytem, ​​to znaczy, musisz uruchomić to:

$ ls -la /home

Aby ustawić odpowiednie zezwolenia, użyj:

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

Myślę, że to powinno pomóc, ale daj mi więcej informacji na ten temat. Sugeruję, abyś wyszedł z katalogu głównego, np. do / home jak ja , ponieważ może to być problem z bezpieczeństwem.

„#” oznacza zezwolenie na rootowanie , np. napisz sudo przed poleceniami; „$” oznacza zezwolenie dla jednego użytkownika

antivirtel
źródło
0

Musisz sprawdzić uprawnienia nie tylko dotyczące miejsca docelowego, ale także jego rodziców.

zVictor
źródło
Dlaczego? Czy jest to ograniczenie Apache czy ograniczenie systemu plików?
Flimm
Przepraszam. Nie sprawdziłem informacji, są one oparte na osobistym doświadczeniu.
zVictor
0

Miałem do czynienia z tym problemem. Ale nie podobał mi się pomysł zmiany grupy mojego katalogu domowego na www-data. Ten problem można po prostu rozwiązać, modyfikując plik konfiguracyjny dla virtualHost. Wystarczy skonfigurować tag Directory, aby je uwzględnić

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

To Require all grantedchyba nowa funkcja; o wartości domyślnej denied.

Zobacz tę stronę w celach informacyjnych: http://httpd.apache.org/docs/current/mod/core.html#directory

Piotr
źródło