第一步:

1.查看有没有安装vsftpd:

rpm -qa | grep vsftpd


2.yum安装vsftpd:

yum install vsftpd


3.查看每次开机时自动运行及手工启动它

chkconfig --list vsftpd:

vsftpd          0:off   1:off   2:off    3:off    4:off    5:off    6:off

chkconfig --level 2345 vsftpd on

chkconfig --list vsftpd

vsftpd          0:off   1:off   2:on    3:on    4:on    5:on    6:off


或者chkconfig vsftpd on

service vsftpd start

netstat -tl 可以查看ftp端口是否在侦听了!


第二步:配置vsftpd服务的宿主

#useradd vsftpdadmin -s /sbin/nologin

这个vsftpdadmin只是用来替换root的,并不需要登录


第三步:建立ftp虚拟宿主帐户

#useradd ftpuser -s /sbin/nologin

这ftpuser只个虚拟帐户的宿主,本身是不用登录的


第四步:配置vsftpd.conf

更改配置前最好备份一下然后再改

vim /etc/vsftpd/vsftpd.conf



修改下面红色字体的部分为蓝色字体的形式,紫色字体是配置原有的

anonymous_enable=YES  -->  anonymous_enable=NO   //不允许匿名用户访问,默认是允许。

#chroot_list_enable=YES  -->  chroot_list_enable=YES      //不允许FTP用户离开自己主目录,默认是被注释掉的。

#chroot_list_file=/etc/vsftpd/chroot_list --> chroot_list_file=/etc/vsftpd/chroot_list  //如果开启了chroot_list_enable=YES,那么一定要开启这个,这条是锁定登录用户只能家目录的位置,如果不开启用户登录时就会报500 OOPS的错。

注意:/etc/vsftp/chroot_list本身是不存在的,这要建立vim /etc/vsftp/chroot_list,然后将帐户输入一行一个,保存就可以了

local_enable=YES      //允许本地用户访问,默认就是YES,不用改

write_enable=YES      //允许写入,默认是YES,不用改

local_umask=022       //上传后文件的权限掩码,不用改

dirmessage_enable=YES //开启目录标语,默认是YES,开不开无所谓,我是默认就行

xferlog_enable=YES    //开启日志,默认是YES,不用改

connect_from_port_20=YES   //设定连接端口20

xferlog_std_format=YES   //设定vsftpd的服务日志保存路径,不用改

(这步后面要有几个操作才能运行,也就是touch这个文件(见第五步),因为它本身不存在,而且还要给文件写入的权限)

#idle_session_timeout=600  -->  idle_session_timeout=600  //会话超时,客户端连接到ftp但未操作,默认被注释掉,可根据个人情况修改

#async_abor_enable=YES  -->   async_abor_enable=YES     //支持异步传输功能,默认是注释掉的,去掉注释

#ascii_upload_enable=YES  -->   ascii_upload_enable=YES   //支持ASCII模式的下载功能,默认是注释掉的,去掉注释

#ascii_download_enable=YES  -->   ascii_download_enable=YES   //支持ASCII模式的上传功能,默认是注释掉的,去掉注释

#ftpd_banner=Welcome to blah FTP service  //FTP的登录欢迎语,本身是被注释掉的,去不去都行

#chroot_local_user=YES  --> chroot_local_user=YES    //禁止本地用户登出自己的FTP主目录,本身被注释掉,去掉注释

pam_service_name=vsftpd  //设定pam服务下vsftpdd的验证配置文件名,不用改

userlist_enable=YES    //拒绝登录用户名单,不用改

TCP_wrappers=YES    //限制主机对VSFTP服务器的访问,不用改(通过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)

增加

guest_enable=YES    //设定启用虚拟用户功能。

guest_username=ftpuser   //指定虚拟用户的宿主用户。

virtual_use_local_privs=YES   //设定虚拟用户的权限符合他们的宿主用户。

user_config_dir=/etc/vsftpd/vconf   //设定虚拟用户个人Vsftp的配置文件存放路径



第五步:建立日志文件

#touch /var/log/vsftpd.log    //日志文件

#chown vsftpdadmin.vsftpdadmin /var/log/vsftpd.log   //属于vsftpdadmin这个宿主


第六步:建立虚拟用户文件

#mkdir /etc/vsftpd/vconf/

#touch /etc/vsftpd/vconf/vir_user


第七步:建立虚拟用户

#vim /etc/vsftpd/vconf/vir_user

virtualuser           //用户名

12345678           //密码


注意:第一行用户名,第二行是上一行用户名的密码,其他人的以此类推


第八步:生成数据库

#db_load -T -t hash -f /etc/vsftpd/vconf/vir_user /etc/vsftpd/vconf/vir_user.db


第九步:设置数据库文件的访问权限

#chmod 600 /etc/vsftpd/vconf/vir_user.db

#chmod 600 /etc/vsftpd/vconf/vir_user


第十步:修改/etc/pam.d/vsftpd内容

echo "auth required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" > /etc/pam.d/vsftpd

echo "account required pam_userdb.so db=/etc/vsftpd/vconf/vir_user" >> /etc/pam.d/vsftpd


第十步:创建用户的配置文件

注意:用户配置文件的名字要和创建的“虚拟用户”名字对应

#touch /etc/vsftpd/vconf/virtualuser

#vim /etc/vsftpd/vconf/virtualuser

输入:

local_root=/home/virtualuser           //虚拟用户的个人目录路径

anonymous_enable=NO

write_enable=YES

local_umask=022

anon_upload_enable=NO

anon_mkdir_write_enable=NO

idle_session_timeout=600

data_connection_timeout=120

max_clients=10

max_per_ip=5

local_max_rate=1048576     //本地用户的最大传输速度,单位是Byts/s,我设定的是10M



第十一步:建立虚拟用户目录

如果不建立虚拟用户的个人目录,那么所有的虚拟用户登录后所在的目录都是同一个目录下

# mkdir /home/virtualuser

# chown ftpuser.ftpuser ./virtualuser

# chmod 600 /home/virtualuser

配置就此完成,如果想增加新的用户,只要按照上面的第七步、第十步进行就可以了。




关闭iptables

打开SElinux

vim/etc/sysconfig/selinux

设置SELINUX=enforcing

重启后生效


登入出现错误:

(1)500 oops config file not owned by correct user or not a file

user_config_dir 参数指定的虚拟用户目录下,虚拟用户文件的所有者改为root就行了,


比如现在我用虚拟用户 aa登录ftp , user_config_dir=/etc/vsftpd/vconf 然后把/etc/vsftpd/vconf 目下的virtualuser文件,所有者改为root就行了。

chown root:root


(2)500 OOPS: cannot change directory:/home/test


500 OOPS: priv_sock_get_cmd

查看一下#getsebool -a|grep ftp

#setsebool ftpd_disable_trans 1

#setsebool ftp_home_dir 1

Setsebool –P 永久生效

#setsebool -P ftpd_disable_trans 1

#setsebool -P ftp_home_dir 1

#chmod 777 /home/virtualuser

#chown root:root /home/virtualuser

#chown root:root /etc/vsftpd/vconf


参考网址:http://www.linuxidc.com/Linux/2012-02/53433.htm

不都是正确的活出先一起错误 要在google搜索答案!