Najlepsze uprawnienia / własność dla katalogu głównego dokumentu Apache

14

Potrzebuję pomocy przy ustawianiu prawidłowych uprawnień lub własności katalogu głównego dokumentu Apache. Oto czego potrzebuję:

  • różne strony internetowe przechowywane w /var/www/html/<site>
  • dwóch użytkowników powinno aktualizować / zarządzać stronami za pośrednictwem ssh
  • własność powinna być inna niż użytkownik apache (dla bezpieczeństwa)

W jaki sposób mogę to zrobić? W tej chwili wszystkie pliki można zapisywać na całym świecie, co nie jest dobre. Serwer działa w CentOS 5.5

Dzięki

Marco
źródło
Aby uzyskać bardziej szczegółową odpowiedź z innymi opcjami zabezpieczenia pliku docroot, zobacz serverfault.com/questions/357108/…
Quinn Comendant
Myślę, że lepiej, aby zapisać każdą stronę w innym miejscu (nie umieścić zarówno na DocumentRoot, stosowanie 2 hostów wirtualnych), a następnie każdy użytkownik administrator posiada tylko własnej stronie i ustawić się z właścicielem grupy obydwu stron internetowych katalogach jak grupy Apache
księgowy

Odpowiedzi:

22

Utwórz nową grupę

groupadd webadmin

Dodaj użytkowników do grupy

usermod -a -G webadmin user1
usermod -a -G webadmin user2

Zmień własność katalogu witryn

chown root:webadmin /var/www/html/

Zmień uprawnienia do katalogu witryn

chmod 2775 /var/www/html/ -R

Teraz każdy może czytać pliki (w tym użytkownik apache), ale tylko root i webadmin mogą modyfikować ich zawartość.

Andy
źródło
To dobrze wygląda. Ale co się stanie, jeśli użytkownik utworzy nowe pliki lub skopiuje zaktualizowane pliki. Czy te uprawnienia są stosowane automatycznie? A może za każdym razem musi chown i chmod?
Marco
Skopiowane pliki zachowują uprawnienia / własność. Domyślne uprawnienia do nowych plików są obsługiwane przez umaskpolecenie. Więcej informacji tutaj osr507doc.sco.com/en/OSUserG/_default_perms_new_file.html
Andy
3
możesz ustawić webadmin dir setgid, aby pomóc z nowymi plikami
covener
1
^ +1. Szybki sposób to: >> chmod 2775 -R / var / www / html /
James Broadhead
@ James ta, zaktualizowano
Andy,
2

Wolę zamontować partycję za pomocą -o acl. Pozwala to na użycie polecenia setfacl w celu nadania ustawionym drobiazgowym uprawnieniom plików i folderów, zamiast określania tylko uprawnień innych użytkowników.

Więc umieść acl w linii partycji w / etc / fstab, lub podłącz ponownie za pomocą mount -o remount, acl / mnt / xy, a następnie przekaż własność swojego katalogu internetowego nikomu: nikomu. Chmod do 770 i użyj setfacl, aby dać uprawnienia do zapisu tylko w folderach, które go potrzebują, np. nadaj www-data (lub użytkownikowi, na którym działa twój serwer) uprawnienia do zapisu dla folderu wysyłania i daj uprawnienia do zapisu własnemu użytkownikowi dla całego katalogu.

mkdir dir
chown nobody:nobody dir
setfacl -m u:www-data:r-x,d:u:www-data:r-x dir
setfacl -m u:www-data:rwx,d:u:www-data:rwx dir/upload
setfacl -m u:youruser:rwx,d:u:youruser:rwx dir

Teraz nikt nie może odczytać twoich plików oprócz twojego serwera i twojego użytkownika. Możesz pisać do każdego pliku w folderze, a serwer WWW może zapisywać tylko w folderze wysyłania.

K. Norbert
źródło