Назад | Перейти на главную страницу

FTP с использованием VSFTPD «Доступ запрещен»

Я использую Ubuntu 10.04 i386. Я использую Cyberduck (клиент FTP GUI) для подключения к моему серверу mysub.domainname.com (здесь изменено).

Вот что я хочу делать:

1) Измените корень apache2 с /var/www к /home/myuser/webroot для обслуживания файлов типа index.html

2) Разрешить FTP писать в /home/myuser/webroot

3) Разрешить myuser войти в систему с его пользователем / передать комбо с FTP и читать / писать где угодно в пределах myuser папка

Корневая папка Apache2 работает нормально. Переход на myserver.com/index.html работает. Но я не могу заставить FTP писать, хотя я изменил эти строки в etc/vsftpd.conf:

listen=YES
#listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
#local_umask=022
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
#xferlog_std_format=YES
#idle_session_timeout=600
#data_connection_timeout=120
#nopriv_user=ftpsecure
#async_abor_enable=YES
#ascii_upload_enable=YES
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
# chroot_list_enable below.
#chroot_local_user=YES
#chroot_local_user=YES
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Эта проблема

Всякий раз, когда я пытаюсь создать папку в /home/myuser или /home/myuser/webroot Я получаю ошибку Create directory operation failed. в моей программе FTP Cyberduck.

Может быть полезная информация:

drwxrwsr-x 2 myuser www-data 4096 2011-04-18 03:04 webroot

и здесь я тоже изменил разрешения:

-rw-rwSr-- 1 myuser root 69 2011-04-18 02:14 index.html

... НО не повезло. Я все еще не могу загружать или писать по FTP. Любые предложения или указатели были бы замечательными, я совершенно не понимаю этого.

ОБНОВИТЬ:

Я попытался включить анонимный вход для FTP, и мне даже не удалось заставить это работать ... Я думаю, что единственное решение - полностью очистить систему от vsftpd и apache2 и просто начать заново

Для разрешений вам необходимо, чтобы папка и файлы в ней принадлежали myuser чтобы к ним можно было получить доступ из учетной записи myuser.

Если apache (или ваши скрипты) должны записывать в папку, то лучше всего использовать chgrp для назначения конкретных местоположений, которые должны быть записаны в группу www-data, затем chmod g+w это место или файл. Если вы предоставляете доступ на запись к папке, chmod g+sw предоставит доступ на запись в папку и гарантирует, что файлы, созданные в ней, также будут принадлежать к группе www-data.

Файлы и каталоги в этом случае будут выглядеть примерно так:

drwxrwxr-x 2 myuser   www-data    4096 2011-04-18 03:04 webroot
-rw-rw-r-- 1 myuser   www-data    1000 2011-04-18 03:04 index.html
drwxrwsr-x 2 myuser   www-data    4096 2011-04-18 03:04 folderwithg+ws

Однако вы должны быть очень осторожны, предоставляя доступ на запись к файлам и папкам в apache, иначе злоумышленник может найти способ заставить ваши скрипты перезаписать себя или заменить index.html или что-то еще.

В противном случае, если apache не нужно записывать в каталог вашего документа, с разрешениями должно быть все в порядке, если все подкаталоги и файлы доступны для чтения всем (а каталоги доступны для всех).

Для SSL / TLS вам не хватает

ssl_enable=YES

Вы можете заставить пользователей использовать шифрование:

force_local_logins_ssl=YES
force_local_data_ssl=YES

И есть ssl_ciphers= вариант, если вы хотите ограничить его ВЫСОКИМ или конкретным списком шифров. Если вы хотите "неявный SSL" (вместо AUTH SSL или AUTH TLS команды для запуска шифрования, шифрование согласовывается в начале соединения), то это implicit_ssl=YES