Domyślne uprawnienia do przesyłania plików vsFTPd na Ubuntu nie działają

14

Mam serwer z systemem Ubuntu 12.10 x64 i ostatnią wersją vsFTPd.

Mój użytkownik example.com ma włączony folder domowy /var/www/example.com,

Wewnątrz utworzyłem folder public_html, 777nadałem mu uprawnienia i usunąłem uprawnienia do zapisu w folderze użytkownika domowego. Wszystko działa dobrze, ale:

Każdy plik przesłany przez FTP (za pomocą SmartFTP) otrzymuje wartość chmod równą 0.

Moja vsftpd.confpowiązana była tylko jedna linia:

local_umask=022.

Próbowałem zmienić na:

file_open_mode=777
local_umask=002

Tak więc moje pliki zostaną 775przesłane natychmiast po przesłaniu.

Ale tylko moje przesłane foldery otrzymują 775uprawnienia.

Dostałem moje przesłane pliki 1411 permissions

Czy ktoś może mi pomóc w rozwiązaniu tego?

lucasmx
źródło
musisz wyrazić zgodę na użytkownika FTP.
Gex

Odpowiedzi:

11

Skończyło się na tym

file_open_mode=0777
local_umask=022

na stronie vsftpd.conf. Problem polegał na tym, że zarówno użytkownik FTP, jak i użytkownik www-data potrzebowali uprawnień do zapisu, więc musiałem dołączyć www-data i ftpuser do grupy użytkowników www-data, a CHMOD -R 775 wszystkie pliki na / var / www - w ten sposób, z 775 CHMOD grupa miałaby uprawnienia do odczytu, zapisu i wykonania. Teraz działa idealnie.

lucasmx
źródło
1
nie zapomnij, aby ponownie uruchomić serwer FTP: sudo service restart vsftpd
Nahid
7

Mam odpowiedź:

Ponieważ www-data jest użytkownikiem odpowiedzialnym za serwer WWW, a twój normalny użytkownik jest odpowiedzialny za serwer ftp, musisz najpierw uczynić ich obojgiem członkami tej samej grupy: grupy www-data.

Tworzenie niestandardowego użytkownika:

useradd –d /var/www/asasd.com -g www-data -m yourusername w ten sposób katalogiem domowym będzie /var/www/asasd.com, a użytkownik będzie w grupie danych www .

następnie zmień hasło użytkownika, wpisując passwd.

Następnie trzeba stworzyć public_html folderu wewnątrz twoja_nazwa_użytkownika katalogu domowym, jak FTP nie będą mogli pisać w głównym katalogu domowym, trzeba utworzyć podfolder.

Usuń uprawnienia do zapisu w folderze z twoją nazwą użytkownika chmod a-w /var/www/asasd.com

Następnie zastosuj nowe uprawnienia do podfolderu: chmod -R 775 /var/www/asasd.com/public_html (pamiętaj, że musisz użyć 775 chmod, ponieważ potrzebujesz uprawnień do zapisu grupy, a nie uprawnień użytkownika do zapisu, ponieważ chcesz, aby cała grupa (ftp i www-data) była w stanie pisać). folder dla danych www chown -R www-data:www-data /var/www/asasd.com/public_html

W ten sposób musisz mieć możliwość korzystania z FTP i mieć działający serwer WWW.

Powodzenia!

Zabawne, że ta informacja jest tak trudna do znalezienia. Czy ludzie nie dzielą się już wiedzą?

lucasmx
źródło
„musisz najpierw uczynić ich obojgami członkami tej samej grupy: grupa www-data” Jak umieścić mojego użytkownika ftp w grupie www-data?
Czarny
Działa idealnie. Dzięki @lucasmx
Enrique Becerra
0

Miałem również problem z tym, że uprawnienia do pliku zostały zmienione, gdy przesyłam plik przez ftp. Jest to naprawione przez zmianę jednej linii w moimvsftpd.conf

local_umask=val(like 022,007,etc.,)

Vijay
źródło
Chcesz ulepszyć i trochę to otworzyć? Dlaczego jest to lepsze niż poprzednie alternatywy i co tak naprawdę robi , skoro tego rodzaju składnia w ogóle nie jest opisana na stronie podręcznika: local_umaskmusi być pojedynczą wartością i musi mieć 0prefiks dla wartości ósemkowej.
Esa Jokinen
-4

musisz zmienić własność tego pliku:

chown root:root /home/username
Gex
źródło