Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-01-13 18:51:19

  Odin - Użytkownik

Odin
Użytkownik
Zarejestrowany: 2012-10-25

LAMP - uprawnienia Apache

Witam.
Jest serwer z apache, każdy użytkownik ma katalog public_html w /home, dla przykładu /home/ag/public_html
Na koncie ag i pozostałych są różne CMS-y, skrypty muszą mieć prawo do tworzenia katalogów i plików (np. logi, wysyłanie danych, itd.).

Teraz moje pytanie, jakie ustawić poprawne i najbezpieczniejsze prawa katalogom i plikom (podejrzewam, że 644), aby serwer Apache mógł działać?

Możliwości:
- Wszystko na 777 - raczej odpada ;)
- 775 dla katalogów, przy ustawieniu użytkownika ag na właściciela, a grupę www-data - może, ale to chyba też nie najbezpieczniejszy sposób.
- 755 - to chyba najlepsze wyjście.

Jak to się powinno ustawić poprawnie? Nie odsyłajcie do Google, są różne informacje, a chciałbym poznać poprawny sposób (pewnie kilku innych początkujących również).

Pozdrawiam.

Offline

 

#2  2013-01-13 20:05:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: LAMP - uprawnienia Apache

- 755 - to chyba najlepsze wyjście.

Domyślne i prawidłowe ustawienie, pod warunkiem. że public_html i jego zawartość  też ma 755 dla plików wykonywalnych i folderów, 644 dla innych plików, i należy należy od użytkownika i grupy innej niż Apache, który te pliki wyświetla.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2013-01-14 06:42:46

  Odin - Użytkownik

Odin
Użytkownik
Zarejestrowany: 2012-10-25

Re: LAMP - uprawnienia Apache

Problem jest taki właśnie,  że gdy nie ustawie grupy www-data i chmod na 775 dla public_html i jego folderów to aplikacja wypluwa błędy,  że nie ma uprawnień  np. Do zapisu pliku sesji, upload zdjec przez panel, itd.

Mógłbyś opis jak to zrobić, żeby skrypt miał prawa do zapisu pewnych plików na serwerze i uploadu przy zachowaniu chmod 755?

Offline

 

#4  2013-01-14 08:01:43

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: LAMP - uprawnienia Apache

Ja uprawnienia w takich przypadkach załatwiam takim skryptem:

Kod:

#!/bin/bash
find $HOME/public_html/  -type d -exec chmod 755 '{}' \;
find $HOME/public_html/ -type f -iname '*.php'  -exec chmod 755 '{}' \;
find $HOME/public_html/  -type f -iname '*.js'  -exec chmod 644 '{}' \;
find $HOME/public_html/  -type f -iname '*.jpg'  -exec chmod 644 '{}' \;
find $HOME/public_html/ -type f -iname '*.gif'  -exec chmod 644 '{}' \;
find $HOME/public_html/ -type f -iname '*.png'  -exec chmod 644 '{}' \;
find $HOME/public_html/ -type f -iname '*.pdf'  -exec chmod 644 '{}' \;
find $HOME/public_html/ -type f -iname '*.cgi'  -exec chmod 755 '{}' \;
find $HOME/public_html/ -type d -iname 'tmp'  -exec chmod 777 '{}' \;
find $HOME/public_html/ -type d -iname 'cache'  -exec chmod 777 '{}' \;

to jest wersja specjalnie dopasowana do $HOME/public_thml - i jeszcze mi się nie zdażyło, żeby coś nie działało, na standardowych skryptach typu CMS typu Joomla i podobne.

To jest wersja do php w ramach Apacha, jeśli php obrabiane jest po cgi przez php-fpm, pliki php  wcale nie muszą mieć atrybutu wykonania.

Jakby trzeba coś przerobić, to skrypt jest w bashu, wykorzystuje komendy find i chmod.
RTFM:

Kod:

man find

Kod:

man chmod

Jeśli Apache nie będzie miał dostępu do public_html, to zobacz 2 rzeczy:

Kod:

sudo -u apache bash
ls -l /home/{nazwa_użytkownika}/public_html

I w logach Apacha, Apache od którejś wersji automatycznie zamyka się w chroocie.
Wazglednie spróbuj, czy pójdzie, kiedy podlinkujesz /home/{login}/public_html  do /var/wwww/{login}, i zobacz, czy wtedy otworzy  coś na adresie http://{adres-Apacha}/{login}.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2013-01-14 15:47:55

  Odin - Użytkownik

Odin
Użytkownik
Zarejestrowany: 2012-10-25

Re: LAMP - uprawnienia Apache

Dzięki za skrypt, musiałem go trochę dostosować bo w temp mam jeszcze podkatalogi gdzie są trzymane sesje, itp.

Skrypt php ruszył, działa. Tylko teraz takie moje pytanie, czy tak się robi, że katalogom np. tmp, sessions, upload, itd. nadaje się po prostu chmod 777?

Ja cały czas myślałem, że 777 to zło i robi się to jakoś inaczej, że np. Apache dopisuje się do jakiejś grupy czy jakieś inne czary mary i wtedy chmod 755 ale apache może uploadować zdjęcia na serwer przez skrypt php albo zapisywać sesje, choć z drugiej strony jeśli apache mógłby robi te wszystkie rzeczy to wyszłoby to na to samo co 777 (?).

Offline

 

#6  2013-01-14 22:42:14

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: LAMP - uprawnienia Apache

Standardowo w Linuxie dla wszystkich folderów tmp daje się uprawnienia 1777 - tzn 777 + lepki bit (sticky bit).
Tutaj też możesz taki założyć.
Jeśli natomiast nie chcesz mieć tmp na 777 - to spróbuj inaczej, np prawo zapisu dla www-data, albo jakiś ACL.

Sznurki:
http://en.wikipedia.org/wiki/Sticky_bit
http://pl.wikipedia.org/wiki/chmod


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2013-01-15 00:35:35

  chmuri - [=Centos=]

chmuri
[=Centos=]
Skąd: Wrocław
Zarejestrowany: 2005-11-25
Serwis

Re: LAMP - uprawnienia Apache

zobacz jeszcze mod_rui2


http://wiki.centos.org/ArtWork/Brand?action=AttachFile&do=get&target=centos-logo-light.png

Offline

 

#8  2013-01-18 10:50:02

  Odin - Użytkownik

Odin
Użytkownik
Zarejestrowany: 2012-10-25

Re: LAMP - uprawnienia Apache

Ok, to już chyba ostatnie pytanie.

Zakładamy, że jest taka sytuacja:

/public_html     -  ag:ag - 755
- foldery w public_html      - ag:ag - 755
- pliki w public_html i podfolderach zgodnie ze skryptem Jacekalex -  ag:ag -  644/755
- katalogi, w których skrypt strony musi zapisywać pewne rzeczy typu, temp, upload, itd.    -  ag:www-data - 775

Czy takie rozwiązanie jest bezpieczniejsze niż:

/public_html     -  ag:ag - 755
- foldery w public_html      - ag:ag - 755
- pliki w public_html i podfolderach zgodnie ze skryptem Jacekalex -  ag:ag -  644/755
- katalogi, w których skrypt strony musi zapisywać pewne rzeczy typu, temp, upload, itd.    -  ag:ag - 777

Czy jest to zupełnie obojętne? :)

Offline

 

#9  2013-01-18 12:39:51

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: LAMP - uprawnienia Apache

Jak nie masz mrówek w kompie, to obojętne.
I tak www-data będzie zapisywać i odczytywać, to jest najniebezpieczniejsza usługa.
Jak nie postawisz spieprzonego ftp, to przez prawidłowo skonfigurowany ssh jest się milion razy trudniej włamać, niż przez dziurawe skrypty php.
Natomiast historia języka php pokazuje, że skrypty są tylko dziurawe, lub jeszcze nie napisane :D

W ogóle, jak chcesz lepsiejszą konfigurację, to zainteresuj się systemem ACL (prosta sprawa),  ewentualnie modułami wzmacniającymi bezpieczeństwo, jak Grsecurity czy Selinux (wyższa szkoła jazdy).

Pozdro
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)