Mam kilka folderów z instalacjami Magento.
na przykład
www / magento1 www / magento2
Wszystkie zawarte w nich pliki / foldery są własnością odpowiednio root: magento1 i root: magento2.
Mam 3755 perms dla wszystkich folderów, 644 dla wszystkich katalogów na początek. Zapobiega to pisaniu w dowolnym folderze lub pliku przez osoby inne niż root.
Następnie dodaję uprawnienia do zapisu grupowego dla folderów / plików, do których deweloperzy powinni móc pisać. Np. Nie mogą pisać do plików podstawowych, ale mogą pisać do modułów / skórek, które nie są rdzeniami.
W porządku. Jedyne, co nie jest w porządku, to to, że nie chcę, aby mogli odczytać nazwę użytkownika / hasło bazy danych mysql z magento1 / app / etc / local.xml. Nie chcę, aby mieli dostęp do bazy danych, w której przechowywane są poufne informacje. Nie chcę też, aby nieuczciwy programista usunął kilka tabel lub co masz.
Ale apache musi mieć dostęp do odczytu tego samego pliku.
Oto „rozwiązanie”, które nie działa: Usuń uprawnienia do odczytu z grupy, ale pozostaw je innym. Czemu? Ponieważ to uniemożliwia programistom czytanie z ich aplikacji / etc / local.xml, ale pozwala im czytać wszystkie pozostałe.
Co ja robię?
EDYCJA: Tak, devs = programiści i będą mieli dostęp do SSH i FTP.
źródło
Odpowiedzi:
Zakładając, że podobnie jak w Debianie, apache działa jako użytkownik www-data i grupa www-data, rozwiązaniem jest
Użytkownik root może zawsze czytać i zapisywać wszystkie pliki.
źródło
username
i nie udzielam ŻADNYCH uprawnień „innym”, a jedynie czytam / wykonuję dla grupy. Np. 750 dla folderów 640 dla plików. To uniemożliwia użytkownikom wzajemne widzenie plików. Potem dodać użytkownika Apache (www-data
lubapache
, lub cokolwiek) do każdego użytkownika, grupy , tak że apache może tylko do odczytu. Możesz przyznać grupowe uprawnienia do zapisu tam, gdzie apache ich potrzebuje (np. Wvar
folderze Magento ).suEXEC
.Zakładając, że devs = programiści ...
Czego nie wyjaśniono, w jaki sposób deweloperzy uzyskują dostęp do systemu - ssh? ftp?
jeśli jest to tylko dostęp do ftp, możesz wykluczyć plik konfiguracyjny z udostępniania / pokazywania przez ftp.
Alternatywnie możesz uruchomić apache pod pewną nazwą użytkownika (zwykle jest skonfigurowany tak, aby działał jak nikt, czasami jako konto użytkownika). Jeśli pozwolisz czytać „innym” / „światu”, każdy może to przeczytać. Więc idź inną drogą - uczyń ją czytelną tylko dla użytkownika i ustaw własność użytkownika na apache użytkownika, i całkowicie zamknij dostęp do grupy i innych. W ten sposób apache chętnie go czyta, a nikt inny nie może (zapisać roota). Musisz jednak naśladować tego użytkownika, jeśli chcesz interweniować w pliku. Na przykład
su - username
źródło
chown apache:apache local.xml
a następnie,chmod 400 local.xml
aby był czytelny tylko przez apache. Ahh, widzę, że ktoś już to powiedział. :)