Problemy z uprawnieniami FTP i Apache

10

Mam problemy z tym, który użytkownik powinien być właścicielem mojego katalogu www - ftp czy apache? Ustawiony na użytkownika ftp, użytkownik może dodawać, usuwać i łatwo modyfikować pliki, ale akcje systemu plików php generują błędy odmowy uprawnień (oczywiście, ponieważ wymagają od użytkownika apache). Jeśli jednak katalog www zostanie przeniesiony do apache, ftpuser nie będzie mógł wykonać niektórych czynności, takich jak modyfikacja i usunięcie pliku. Czy ktoś napotkał kiedyś podobny problem? Jaka jest poprawka? Dzięki

promień
źródło

Odpowiedzi:

12

Po to są grupy.

Możesz dodać ftpużytkownika do apachegrupy i odwrotnie. Lub jeszcze lepiej, możesz dodać je do trzeciej grupy, którą utworzysz specjalnie w tym celu.

na przykład

# groupadd mygroup
# useradd -G moja grupa ftp
# useradd -G mygroup apache
# chown -R: moja grupa / var / www
# chmod -R g + rw / var / www

Te polecenia wykonują następujące czynności:

  1. Tworzy nową grupę „mygroup”
  2. Dodaje użytkownika ftp do mojej grupy
  3. Dodaje użytkownika apache do mojej grupy
  4. Rekurencyjnie przyznaje prawa własności grupy do treści / var / www / mygroup
  5. Rekurencyjnie przyznaje grupowe uprawnienia do odczytu i zapisu do treści / var / www /

Musisz tylko upewnić się, że pliki dodane w przyszłości należą do grupy „mygroup” i mają odpowiednie uprawnienia zarówno dla apache, jak i ftp do ich odczytu / zapisu.

hobodave
źródło
3
Połączenie znaku „ find /var/www -type d -print0 | xargs -0 chmod g+s /var/www” z umaską 002 zapewni, że nowe pliki i katalogi w katalogu / var / www odziedziczą odpowiednią grupę i uprawnienia dla grupy na dostęp r / w. Wiele dystrybucji Linuksa ma teraz domyślnie umask 002 (te same, które domyślnie tworzą nową grupę dla każdego nowego użytkownika)
freiheit
Ta odpowiedź działa idealnie! Ale mam jeden problem, w którym użytkownik nadal może przeglądać wszystkie inne katalogi poza. Czy var/wwwistnieje metoda ograniczenia tego?
maxisme
3
Linie 2 i 3 nie będą działać, jeśli użytkownicy już istnieją (w CentOS 7). W tym przypadku użyj usermodnp.usermod -G mygroup ftp
nick
Prosty, zrozumiały, zrozumiały! Doskonały! Dzięki, @hobodave!
GTodorov
4

Większość treści powinna należeć do użytkownika innego niż apache. Zakładając, że używasz FTP do aktualizacji treści, możesz ustawić wszystkie pliki, które mają być własnością ftp: apache. Sugerowałbym użycie SCP dla SFTP zamiast ftp. Pliki powinny mieć uprawnienia 644 lub 640, a uprawnienia do katalogów 755 lub 750.

W przypadku plików i katalogów aplikacja musi pisać, aby dodać dostęp do zapisu grupowego.

BillThor
źródło
0

Miałem podobny problem ze stroną php zbudowaną, która kopiowałaby folder na serwerze o innej nazwie. Naprawiłem to, wyłączając tryb awaryjny php.

Karl
źródło
2
Tryb bezpieczny PHP istnieje nie bez powodu. Wyłączenie go wcale nie jest dobrym pomysłem.
user9517,