Jestem stosunkowo nowy w tworzeniu stron internetowych, więc proszę o cierpliwość.
Jestem przede wszystkim programistą iPhone'ów, ale niedawno stworzyłem witrynę dla innej osoby korzystającej z hostingu współdzielonego. Mógłbym pisać do plików w PHP na tej stronie w porządku, bez konieczności myślenia o uprawnieniach.
Jestem w trakcie wdrażania usługi internetowej dla nowej aplikacji, którą tworzę, ale tak naprawdę nie działa płynnie. Najważniejsza różnica tutaj polega na tym, że korzystam z cudzego serwera i po prostu mam dostęp do FTP / DB.
Zasadniczo mam mnóstwo plików PHP, które składają się na mój CMS, tak jak:
mysite.com/admin/manage_news.php
mysite.com/admin/manage_events.php
Skrypty te następnie edytują bazę danych lub pliki. Mogą współdziałać z DB dobrze, jednak moje skrypty nie mogą zapisywać w systemie plików. Mogą na przykład próbować zapisywać w następujących plikach:
mysite.com/data/img/event_1.png
mysite.com/data/somefile.txt
Działa to dobrze w mojej instalacji MAMP (lokalnie), ale po wdrożeniu na serwerze PHP wyrzucał błędy przy każdej próbie zapisu ... coś takiego:
Nie można otworzyć pliku „../data/img/someimage.png” do zapisu.
Wysłałem więc e-maila do faceta, który obsługuje serwer, a on wrócił, mówiąc:
Czy to działa za zgodą publiczną? (777)
I tak się stało - ale byłem bardzo ostrożny w korzystaniu z uprawnień publicznych, więc od razu go wyłączyłem. Wysłałem mu e-maila z informacją „jak mogę zmusić moje skrypty PHP do pisania przy użyciu standardowych uprawnień użytkownika”, a on powiedział:
Zostaw to jako publiczne, będzie dobrze
Uważam, że jest to konflikt IP gdzieś w rozdzielczości domeny, ale nie martwię się o to.
Następnie wysłałem mu e-maila z informacją „z pewnością jest to niepewne” lub coś w tym stylu, a on odpowiedział:
w rzeczywistości istnieją miliony stron internetowych, w tym kilka, którymi zarządzam, które mają 777 w różnych folderach, to tylko sposób na życie.
Czy ktoś mógłby mi dać pomysł na rozwiązanie, które mógłbym mu dać? Lub co mogę zrobić, aby uniknąć konieczności używania 777? Naprawdę nie podoba mi się pomysł, aby jakiekolwiek foldery w mojej witrynie / serwisie były dostępne do publicznego zapisu.
Byłbym bardzo wdzięczny za twoją radę, ponieważ bardzo mało wiem o serwerach internetowych.
źródło
Odpowiedzi:
Rozbijmy to :
Potrzebujesz użytkownika uruchamiającego skrypt do odczytu, wykonywania i zapisu w katalogu, więc powinno to być:
7 = (r) ead, (w) obrzęd, e (x) ecute
Inni użytkownicy należący do tej samej grupy powinni mieć możliwość uruchomienia pliku php w katalogu, ale nie mogą do niego pisać (z oczywistych powodów); niekoniecznie muszą czytać pliki PHP. Dlatego musimy podać tylko uprawnienia do wykonywania:
1 = e (x) ecute
To samo dla społeczeństwa. W rzeczywistości to wszystko, czego potrzebujesz dla zewnętrznych użytkowników, którzy muszą przeglądać pliki php i statyczne:
1 = e (x) ecute
Zatem absolutnym minimum powinno być:
711
Potwierdziłem powyższe ustawienia własną konfiguracją, więc powinno działać; jest to jednak domyślny użytkownik sieci. Jeśli przesyłasz przy użyciu loginu innego niż www, pliki i katalogi prawdopodobnie będą należały do innego użytkownika. W takim przypadku domyślny użytkownik sieci może nie być w stanie odczytać lub zapisać plików, które są własnością użytkownika. W tym momencie prawdopodobnie musisz dodać domyślnego użytkownika sieci do swojej grupy (administrator systemu będzie musiał to zrobić), a następnie dać uprawnienia do odczytu, zapisu i wykonywania użytkownikom należącym do grupy:
771
I to prawdopodobnie zadziałałoby. Albo to, albo sysadmin zmieni właściciela tych plików i grupę na domyślnego użytkownika serwera WWW (ale NIE ZEZWOLENIA!). Jeśli to nadal nie zadziała, przykładowe dane wyjściowe uprawnień (coś w rodzaju „ls -la wewnątrz katalogu”) pomogłyby nam rozwiązać ten problem dalej. To powiedziawszy, o ile musisz tylko przyznać uprawnienia do wykonywania opinii publicznej ( lub „inne”), powinno być w porządku z punktu widzenia bezpieczeństwa.
źródło
/data
folderu - ten folder zawiera skrypty PHP, które składają się na moją usługę internetową JSON, oraz kilka obrazów używanych do treści przekazywanych w serwisie internetowym (w/data/img
folderze)Ten facet jest idiotą i to kompletna bzdura. Prawa dostępu nie mają nic wspólnego z adresem IP lub rozwiązywaniem domen, on po prostu wyrzuca słowa.
Biorąc pod uwagę jakość tego „administratora”, polecam hostowanie witryny w innym miejscu, ponieważ jest bardzo prawdopodobne, że jest ona administrowana bardzo źle i niepewnie. Po prostu nałożenie
777
uprawnień na coś, aby działało, jest pewnym znakiem, że nie rozumie on trochę tego, co robi.To, jakie prawa dostępu są naprawdę potrzebne, zależy od sposobu użytkowania i konfiguracji systemu i trudno jest coś powiedzieć, nie wiedząc o tym.
źródło
www-data
z700
uprawnieniami, ale prawdopodobnie nie zadziała to w twoim przypadku.Apache/2.2.9 (Debian) PHP/5.2.6-1
www-data
grupy, musisz zmienić użytkowników / grupy po przeniesieniu lub faktycznie użyć777
uprawnień. Ale to nie ma sensu, nie możemy ci w ten sposób pomóc.