1.安装vsftp

sudo apt-get install vsftpd

2.配置

vsftp默认目录为/srv/ftp,更改为其他路径的话,例如/home/ftp

mkdir /home/ftp

addgroupftp

chown ftp:ftp /home/ftp #修改ftp默认目录属性

**#新增FTP用户: adduser --shell /bin/false --home /home/ftp your_usr_name

把需要开通FTP的用户名加入到ftp群组:usermod -aG ftp your_usr_name**

#如果你的/etc/shells里面没有包含/bin/false,则你用上述的方法建立的用户将法访问

#FTP,解决方法:编辑/etc/shells,加入/bin/false这行。

vim /etc/passwd

修改ftp用户的主目录,将/srv/ftp更改为/home/ftp

配置解释:

vim /etc/vsftpd.conf

**listen=YES #开启监听网络

listen_ipv6=YES

anonymous_enable=YES #设置匿名登录,NO的时候,可以通过ftp组用户登录,或者系统用户登录;配置完之后要设置一下权限才能登录
local_enable=YES #则允许通过本地用户帐号访问
write_enable=NO #所有FTP用户都无法写入
anon_upload_enable=NO #关闭匿名用户的上传权限
anon_mkdir_write_enable=NO #关闭匿名用户新建目录的权限
dirmessage_enable=YES #用户登录FTP后可以列出当前目录底下的文件、目录
xferlog_enable=NO #开启登录、上传、下载等事件的日志功能
connect_from_port_20=YES #服务器的端口设为20
chown_uploads=NO #chown_username=whoever指定具体的某个用户,用来作为匿名用户上传文件后的所有者

chown_username=whoever

xferlog_file=/var/log/vsftpd.log

xferlog_std_format=NO #标准的ftpd日志格式

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_local_user=YES
chroot_list_enable=NO
**chroot_list_file=/etc/vsftpd.chroot_list

/*chroot_local_user、 chroot_list_enable、chroot_list_file
这个组合用于指示用户可否切换到默认目录以外的目录。
其中,chroot_list_file默认是/etc/vsftpd.chroot_list,该文件定义一个用户列表。
若chroot_local_user 设置为NO,chroot_list_enable设置为NO,则所有用户都是可以切换到默认目录以外的。
若chroot_local_user 设置为YES,chroot_list_enable设置为NO,则锁定FTP登录用户只能在其默认目录活动,不允许切换到默认目录以外。
若chroot_local_user 设置为YES,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动。
若chroot_local_user设置为NO,chroot_list_enable设置为YES,则chroot_list_file所指定的文件里面的用户列表都被限定在各自的默认目录活动,而列表以外的用户则可以访问默认目录以外的目录。

*/

#ls_recurse_enable=YES

secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
anon_root=/home/ftp #指定一个目录,用做匿名用户登录后的默认目录
local_root=/home/ftp #指定一个目录,用做在每个本地系统用户登录后的默认目录
userlist_file=/etc/vsftpd.user_list
userlist_enable=YES
userlist_deny=YES

/*userlist_file、userlist_enable、userlist_deny
这个组合用于指示用户可否访问FTP服务。
其中,userlist_file默认是/etc/vsftpd.user_list,该文件定义一个用户列表。
若userlist_enable设置为YES,userlist_deny设置为NO,则只有userlist_file所指定的文件里面的用户列表里面的用户可以访问FTP。
若userlist_enable设置为YES,userlist_deny设置为YES,则userlist_file所指定的文件里面的用户列表里面的用户都被拒绝访问FTP。
若userlist_enable设置为NO,userlist_deny设置为YES,则这个列表没有实际用处,起不到限制的作用!因为所有用户都可访问FTP。

*/

3.新建文件(有的话,可以不建)

touch /etc/vsftpd.chroot_list #放能访问默认目录以外内容的用户
touch/etc/vsftpd.user_list #放冻结用户

4.重启一下你的vsftp

sudo/etc/init.d/vsftpdrestart

5.如果匿名用户还是不允许访问

chownroot:root /home/ftp #设置为ftp所有就只能让 本地用户和ftp组的用户去访问

chmod 755 /home/ftp

========================================================================================================

下面把完整配置发出来,太可恶了,竟然末尾有空格,结果就拒绝访问了;

1.设置匿名用户访问的配置:

**listen=YES

listen_ipv6=YES

anonymous_enable=YES
no_anon_password=NO
download_enable=YES
dirlist_enable=YES
local_enable=YES

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

chown_uploads=NO

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_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd.chroot_list

ls_recurse_enable=YES

secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
anon_root=/home/ftp
local_root=/home/ftp
userlist_file=/etc/vsftpd.user_list
userlist_enable=NO
userlist_deny=YES
**#########################################################################

chownroot:root /home/ftp #设置为ftp所有就只能让 本地用户和ftp组的用户去访问

chmod 755 /home/ftp

2.设置本地用户或ftp用户访问(阅读userlist部分,可以限制指定用户不能访问)

**listen=YES

listen_ipv6=YES

anonymous_enable=NO

no_anon_password=NO

local_enable=YES

write_enable=NO

anon_upload_enable=NO

anon_mkdir_write_enable=NO

dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES

chown_uploads=NO

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_local_user=YES
chroot_list_enable=NO
chroot_list_file=/etc/vsftpd.chroot_list

ls_recurse_enable=YES

secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
anon_root=/home/ftp
local_root=/home/ftp
userlist_file=/etc/vsftpd.user_list
userlist_enable=NO
userlist_deny=YES
##############################################################**

addgroupftp

chown ftp:ftp /home/ftp #修改ftp默认目录属性

**#新增FTP用户:adduser --shell/bin/false--home/home/ftp your_usr_name

把需要开通FTP的用户名加入到ftp群组:usermod -aG ftp your_usr_name**

#如果你的/etc/shells里面没有包含/bin/false,则你用上述的方法建立的用户将法访问

#FTP,解决方法:编辑/etc/shells,加入/bin/false这行。