2013-01-20 13 views
6

Mam zainstalowany Apache 2.2 w CentOS 6. Wszystko działało dobrze, gdy folder apache był w domyślnej lokalizacji /var/www/html. Następnie skonfigurowałem wirtualny host w folderze domowym mojego użytkownika. Po tym apache zaczął pokazywać Forbidden You don't have permission error, gdy próbowałem przejść do localhost lub 127.0.0.1 z przeglądarki.Nie masz uprawnień błąd w Apache w CentOS

jest to kod użyłem w httpd.conf

<VirtualHost *:80> 
     DocumentRoot "/home/anjan/workspace/mfs" 
     ServerName anjan-centOS 
     <Directory "/home/anjan/workspace/mfs"> 
       Options Indexes FollowSymLinks MultiViews 
       AllowOverride All 
       Order Deny,Allow 
       Allow from all 
     </Directory> 
</VirtualHost> 

ja też wyłączył SElinux jak wspomniano w niektórych artykułów, ale na próżno. Gdyby ktoś mógł mi pomóc, byłbym bardzo wdzięczny.

+0

To wygląda na podstawowy problem z uprawnieniami, a nie na Apache. Jakim użytkownikiem jest Apache działający jako? Czy ten użytkownik ma dostęp do '/ home/anjan/workspace/mfs'? – larsks

+1

Dobrym sposobem sprawdzenia, czy apache potrafi odczytać katalog, jest 'sudo -u apache ls/home/anjan/worskapce/mfs' –

+0

@CoreyHenderson Zmieniono uprawnienia do plików każdego pliku i folderu na' -rw-rw-rw - ale wciąż nie ma szczęścia. Jakieś pomysły, dlaczego? – th1rdey3

Odpowiedz

6

Rozwiązałem problem. Po wtrącanie za zgodą systemu I okazało się, że user "anjan" kto jest właścicielem /home/anjan miał odczyt/zapis/wykonanie zgodę na /home/anjan ale group "anjan", tworzony podczas user "anjan" został stworzony nie mają żadnych uprawnień w ogóle.

ls -l /home/ 

pokazał

drwx------. 28 anjan anjan 4096 Jan 21 13:19 anjan 

więc zmieniłem uprawnienia z tego polecenia

chmod -R 770 /home/anjan 
ls -l /home/ 
drwxrwx---. 28 anjan anjan 4096 Jan 21 13:19 anjan 

I okazało się, pod którym użytkownik moje apache działa od this wątku. Był uruchomiony pod user "apache"

, więc dodałem user "apache" do group "anjan" za pomocą tego polecenia.

po tym voila. Koniec z błędem Forbidden.

P.S. Zrobiłem wszystko jako root.

UPDATE Wygląda na to, że podany link jest zepsuty. Heres inny.

Na wszelki wypadek (w celu uniknięcia przyszłych niedziałających linków), kopiowanie polecenia tutaj. W terminalu typu -

ps axo user,group,comm | grep apache 
+0

Całkowicie pracował dla RHEL! To był brakujący link. Dzięki za to! – rcd

1

Jest to (przynajmniej dla mnie) wątpliwy projekt. Zasadniczo oznacza to, że użytkownik Apache ma dostęp do WRITE do wszystkich plików tego użytkownika, w tym do sekretów, na przykład ssh-keys.

Nie fajnie, jeśli atakuje cracker Apache.

prostą modyfikację będzie podczas pracy jako „Anjan”

chmod -R g-rwx ~ # undo the unsafe -R first 
chmod g+rx ~ ~/workspace 
chmod -R g+rx ~/workspace/mfs 

Jeśli apache jest członkiem „Anjan” grupy.

Moja rekomendacja jest użycie ACL: s jeśli system plików obsługuje to.

Czy teraz SELinux działa?Powinno tak być i jeśli nadal jest tak, że polityka SELinux blokuje dostęp Apache do workspace/mfs, pewna liczba wiadomości z programu sealert powinna być widoczna w var/log/messages. Ten problem jest zwykle rozwiązywany przez rozsądne użycie setsebol.

Wyłączenie SELinux bo coś nie działa i polecając tę ​​metodę jest njaa ....

Oryginalny problemem jest to, że Apache działa jak sama i dlatego jest osunął się w drugiej kategorii przy obliczaniu uprawnień.

chmod o+rx ~anjan/ ~anjan/workspace/ ~anjan/workspace/mfs 

powinno wystarczyć.

CentOS 6 to bezpłatna (jak w wersji z wolnym piwem) wersja RedHat Enterprise Linux i jako taka dokument RedHata https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Managing_Confined_Services/ jest koniecznością.

+0

Podałeś prawidłowy punkt. Ale w moim przypadku konfigurowałem środowisko dev, dlatego umieściłem kody w katalogu domowym użytkowników. Ale dla produkcji myślę, że nie jest dobrym pomysłem umieszczanie kodów w katalogu domowym użytkowników. – th1rdey3

Powiązane problemy