Nechci umožnit ostatním přístup ke čtení, takže jsem přidal svého uživatele a apache
uživatele do skupiny s názvem apachme
a pak nastavte tuto skupinu na všechny soubory a složky, které chci apache
mít přístup, včetně kořenového adresáře webové stránky. Poté jsem skupině a vlastníkovi udělil všechna oprávnění. Poté, co tento Apache stále nemůže přistupovat k souborům, aniž by nastavil oprávnění ke čtení povolit vše (rwxrwxr--(0774)
).
Složka, která obsahuje soubor indexu, je vlastněna apache
se skupinou apachme
a oprávnění rwxrwxr-x(0775)
s tímto dostávám chybu 500 a měním ji na 0774
nechá to běžet dobře
Ty slouží pouze k potvrzení, pod jakým uživatelem apache běží a že byl přidán do skupiny.
Přijatá odpověď:
Z bezpečnostního hlediska není opravdu dobrý nápad nastavovat webové stránky se stejným uživatelem Apache. Uživatel Apache by měl být schopen číst webové stránky, ale ne na ně psát.
Jako takové je ve standardní konfiguraci normální, že webové struktury jsou čitelné pro všechny, a když je potřeba zapisovat, normálně do nich může zapisovat uživatel Apache, což je bezpečnostní noční můra.
Jednou ze strategií, jak se tomu vyhnout, je instalace/použití mod_ruid2. https://github.com/mind04/mod-ruid2
Pokud jde o Debian, stačí udělat:
apt-get install libapache2-mod-ruid2
Upozorňujeme, že výchozí uživatel Apache se liší podle distribuce. V Debianu je to www-data, v RH/CentOS je to apache a v SuSE wwwrun. Od této chvíle jej budu označovat jako výchozího uživatele Apache.
Pokud ve vhost nedefinujete žádné direktivy, bude se chovat tradičním způsobem; jinak se chování změní.
Myšlenka spočívá v tom, že ve vhostu běží proces s uživatelem, který má práva k vhost, a jako takové budou mít soubory toto vlastnictví, a jak si přejete, ostatní uživatelé je nebudou moci číst. Normálně definujete uživatele pro vhost.
V direktivách Virtualhost nebo Directory ve vhost definujete uživatele a skupinu, kteří budou pro tento adresář aktivní. User:usergroup je to, co budou efektivní oprávnění, která bude Apache používat při přístupu k virtuálnímu hostiteli/adresáři, a jako takový bude moci každý uživatel, který patří do této skupiny, zapisovat/vidět adresáře.
<Directory "/vhostdir/">
RMode config
RUidGid user usergroup
....
Při psaní adresářů lze nyní soubory vytvářet jako 660 s vlastnictvím uživatel:skupina uživatelů, pokud jsou spravovány skupinou uživatelů. Podobně mohou být soubory vytvořeny také jiným uživatelem s oprávněním ke čtení pro svět; nicméně pro zápis to nebude výchozí uživatel Apache, ale tento jiný uživatel.
Výhody mod_ruid2 jsou pak:
- v prostředí virtuálního hostingu uživatelé nemohou číst soubory ostatních uživatelů;
- v jednom uživateli můžete stále vytvářet soubory jako další uživatel a ani výchozí uživatel Apache, ani uživatel ruid2 je nebudou moci přepsat
- Důležitější je, že zapsané soubory se nyní budou provádět s uživatelem ruid2 a již ne globálně s výchozím uživatelem Apache.
Ze stránky github:
ABOUT mod_ruid2 je modul suexec pro Apache 2.0, 2.2 a 2.4, založený
na mod_ruid a mod_suid2-běží pouze na Linuxu, protože pouze linuxové jádro implementovalo požadované schopnosti procesu.
-má lepší výkon než mod_suid2, protože nepotřebuje zabíjet httpd děti po jednom požadavku. využívá schopnosti jádra
a po obdržení nového požadavku suid znovu.
-jsou zde určité bezpečnostní problémy, například pokud útočník úspěšně zneužije proces httpd, může nastavit efektivní schopnosti a
setuid na root. doporučuji použít nějakou bezpečnostní záplatu v jádře
(grsec), nebo tak něco..-existují dva hlavní provozní režimy:stat a config
1. config je výchozí, musíte definovat uid a gid. Pokud není definováno [ug]id, použije se výchozí uživatel a skupina.
- stat httpd setuid a setgid na uid a gid požadovaného souboru(script)/adresáře to je dobré, pokud používáte mod_vhost_alias
pro virtuální hostingINSTALOVAT
1. stáhněte a nainstalujte nejnovější libcap odtud
2. spusťte /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c
3. nakonfigurujte httpd.conf
4. restartujte apacheMOŽNOSTI KONFIGURACE:RMode config|stat (výchozí je config) RUidGid
user|#uid group|#gid – když je RMode config, nastavte toto uid a gidRMinUidGid user|#uid group|#gid – když je uid/gid
nastaveno na výchozí uid/gid RDefaultUidGid user|#uid group|#gid RGroups group1 group2 – další skupiny nastavené pomocí setgroups @none –
vymazat všechny dříve definované skupiny.RDocumentChrRoot – Nastaví chroot adresář a kořen dokumentu uvnitř
PŘÍKLAD:
<VirtualHost example.com> ServerAdmin [email protected] RDocumentChRoot /home /example.com/public_html ServerName example.com ServerAlias www.example.com RMode config # unnecessary since config is the default RUidGid user1 group1 RGroups apachetmp <Directory /home/example.com/public_html/dir> RMode stat </Directory> <Directory /home/example.com/public_html/dir/test> RMode config RUidGid user2 group2 RGroups groups1 </Directory> <Directory /home/example.com/public_html/dir/test/123> RUidGid user3 group3 </Directory> <Location /yustadir> RMode config RUidGid user4 user4 RGroups groups4 </Location>