FTP使用VSFTPD“访问被拒绝”

我正在运行Ubuntu 10.04 i386。 我使用Cyber​​duck(FTP GUI客户端)连接到我的服务器mysub.domainname.com(在这里改变)。

这是我想要做的:

1)将apache2 root从/var/www更改为/home/myuser/webroot以提供像index.html这样的文件

2)允许FTP写入/home/myuser/webroot

3)允许myuser用他的用户/通过组合与FTPlogin和读/写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创build一个文件夹时,我得到错误Create directory operation failed. 在我的FTP程序中,Cyber​​duck。

也许有用的信息:

 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上传或写入。 任何build议或指针将是伟大的,我很相当失去这一个。

更新:

我尝试启用FTP匿名login,我甚至无法得到这个工作…我认为唯一的解决办法是完全清除系统的vsftpd和apache2,并刚刚开始

对于权限,您需要拥有myuser拥有的文件夹和文件,以便可以从myuser帐户访问它们。

如果apache(或者你的脚本)需要写入这个文件夹,那么最好的办法就是使用chgrp来指定应该写入www-data组的特定位置,然后chmod g+w该位置或文件。 如果您正在对文件夹进行写入访问,则chmod g+sw将为该文件夹提供写入权限,并确保在那里创build的文件也属于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的文件和文件夹的写入权限,否则攻击者可能会想办法让你的脚本覆盖自己或者replaceindex.html,或者其他任何东西。

否则,如果apache不需要写入你的文档目录,那么权限应该没问题,因为所有子目录和文件都是世界可读的(并且目录是世界可访问的)。

对于SSL / TLS,您错过了

 ssl_enable=YES 

您可以强制用户使用encryption:

 force_local_logins_ssl=YES force_local_data_ssl=YES 

还有一个ssl_ciphers=选项,如果你想把它限制为HIGH或者一个特定的密码列表。 如果你想要“隐式SSL”(而不是AUTH SSLAUTH TLS命令来启动encryption,encryption是在连接开始时进行协商),那么implicit_ssl=YES