Mój administrator serwera chce, abym ustawił publiczne uprawnienia do zapisu w katalogu

9

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.

Alex Coplan
źródło
12
Uciekaj od tego faceta i nie oglądaj się za siebie.
user9517
Naprawdę nie jest opcją ... zobacz komentarze do odpowiedzi SvenW ...
Alex Coplan,

Odpowiedzi:

13

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.

Rilindo
źródło
2
Chciałbym móc dwukrotnie głosować.
Wesley,
Problem polega na tym, że strona internetowa nie powinna zapisywać plików w obrębie własnej struktury, a nie samych uprawnień.
JamesRyan,
Masz rację. W zależności od danych prawdopodobnie zechcesz zapisać plik poza publicznym katalogiem głównym.
Rilindo,
Tutaj piszę do /datafolderu - 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/imgfolderze)
Alex Coplan
Więc obrazy muszą być publiczne? To wszystko wyjaśniło.
Rilindo,
18
Leave it as public, it'll be fine

I reckon it's an ip conflict somewhere in the domain resolution, 
but I'm not worried about it.

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 777uprawnień 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.

Sven
źródło
dzięki - moja myśl dotyczy dokładnie uprawnień - tak naprawdę nie mam możliwości hostowania go w innym miejscu, ponieważ firma, dla której rozwijam się, nie zapłaci za to, polecił mi tego faceta i powiedział, że dostaną go zrób to za darmo - z tego co mogę powiedzieć, po prostu uciekam z jednego z jego wirtualnych serwerów. Jak więc to normalnie działa, w jaki sposób skrypt PHP może działać jako „użytkownik”, a tym samym być w stanie pisać do czegokolwiek na stronie?
Alex Coplan,
Poinformowałbym ich o tym, co dostaną „za darmo”. Nie mam dużego doświadczenia z żadnym hostingiem współdzielonym, więc nie mogę tego komentować. Wszystkie moje strony działają na serwerach internetowych Debiana, a foldery, które muszą być zapisywalne, będą należeć do nich www-dataz 700uprawnieniami, ale prawdopodobnie nie zadziała to w twoim przypadku.
Sven
Myślę, że płacą mu również za swoją główną stronę, dlatego - jeśli jest to jakaś pomoc na dole dowolnej strony błędu serwera, to mówiApache/2.2.9 (Debian) PHP/5.2.6-1
Alex Coplan,
także to nie jest udostępniane vps
Alex Coplan
2
Cóż, próbuję dowiedzieć się, jakie uprawnienia i prawa własności twoje pliki mogą zostać przeniesione na serwer. Jeśli jest to użytkownik, który nie jest przynajmniej członkiem www-datagrupy, musisz zmienić użytkowników / grupy po przeniesieniu lub faktycznie użyć 777uprawnień. Ale to nie ma sensu, nie możemy ci w ten sposób pomóc.
Sven