Я использую 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