环境:CentOS6.5+vsFTP vsftpd-2.2.2-13.el6_6.1.x86_64
第一步:安装vsftp pam db4
yum install vsftpd pam* db4* -y
关闭防火墙
#/etc/init.d/iptables stop
#chkconfig –level 35 iptables off
关闭setenforce
#setenforce 0
在多用户和界面模式vsftpd开机启动
#chkconfig --level 35 vsftpd on
第二步:创建虚拟用户验证数据库
先创建文本文件再通过ddb_load生成数据库,要使用db_load必须安装下述三个包
#rpm -qa |grep db4
db4-utils-4.7.25-18.el6_4.x86_64
db4-4.7.25-18.el6_4.x86_64
db4-devel-4.7.25-18.el6_4.x86_64
先创建用户文件
#vi /etc/vsftpd/vsftpd_login.txt
ftp01 ##用户名
123123 ##密码,奇数行为用户名,偶数行为密码
ftp02
321321
生成数据库
db_load -T -t hash -f vsftpd_logins.tst /etc/vsftpd/vsftpd_login.db
第三步:修改/etc/pam.d/vsftpd内容
注释掉所有的行,然后在最后添加两行即可。这个文件主要是指定验证的配置文件,如果需要ftpusers起作用,则把第三行的#去掉即可,注释掉原有配置后,则系统本地用户名不能再登陆vsftpd,如果需要登陆,则需要按照上重新生成数据库
[root@localhost vsftpd_user_conf]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session optional pam_keyinit.so force revoke
#auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth required pam_shells.so
#auth include password-auth
#account include password-auth
#session required pam_loginuid.so
#session include password-auth
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
第四步:建立ftp虚拟宿主帐户
#useradd -d /var/ftp/ftpuser ftpuser -s /sbin/nologin 这ftpuser只个虚拟帐户的宿主,本身是不用登录的
由于linux的权限控制是以用户ID来区分,所以vsftpd创建的虚拟账号linux并不认同,必须给这些虚拟账号分批载体
第五步:配置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,那么一定要开启这个,这条是锁定登录用户所在的主目录的位置
注意:
1:如果设置为
chroot_local_user=YES
chroot_list_enable=YES(这行可以没有, 也可以有)
chroot_list_file=/etc/vsftpd.chroot_list
那么, 凡是加在文件vsftpd.chroot_list中的用户都是不受限止的用户
即可以浏览其主目录的上级目录。
所以, 如果不希望某用户能够浏览其主目录上级目录中的内容,可以如上设置, 然后在文件vsftpd.chroot_list中不添加该用户即可(此时, 在该文件中的用户都是可以浏览其主目录之外的目录的).
或者, 设置如下
chroot_local_user=NO
chroot_list_enable=YES(这行必须要有, 否则文件vsftpd.chroot_list不会起作用)
chroot_list_file=/etc/vsftpd.chroot_list
然后把所有不希望有这种浏览其主目录之上的各目录权限的用户添加到文件vsftpd.chroot_list(此时, 在该文件中的用户都是不可以浏览其主目录之外的目录的)中即可(一行一个用户名).
/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 //是否启用user_list
TCP_wrappers=YES //限制主机对VSFTP服务器的访问,不用改(通过/etc/hosts.deny和/etc/hosts.allow这两个文件来配置)
#userlist_deny
userlist_deny=NO //只user_list里面的用户登陆,如果为YES,则不允许登陆
user_config_dir=/etc/vsftpd/vsftpd_user_conf //指定虚拟用户的个人配置文件
第六步:建立虚拟账号的配置文件以及虚拟账号的主目录
在user_config_dir指定路径下,建立与虚拟帐号同名的配置文件并添加相应的配置字段
[root@localhost vsftpd]# mkdir vsftpd_user_conf
[root@localhost vsftpd]#mkdir /var/ftp/public
[root@localhost vsftpd]#mkdir /var/ftp/personal
[root@localhost vsftpd]#chown ftpuser:ftpuser /var/ftp/public
[root@localhost vsftpd]#chown ftpuser:ftpuser /var/ftp/personal
[root@localhost vsftpd]#chmod -R 700 /var/ftp/public
[root@localhost vsftpd]#chmod -R 700 /var/ftp/personal
[root@localhost vsftpd_user_conf]# touch /etc/vsftpd/vsftpd_login/ftp01
[root@localhost vsftpd_user_conf]# touch /etc/vsftpd/vsftpd_login/ftp02
修改ftp01的配置文件
guest_enable=yes 开启虚拟帐号登录
guest_username=ftp01 设置ftp对应的系统帐号为ftp01
anon_world_readable_only=no 不允许匿名用户浏览器整个服务器的文件系统
local_root=/var/ftp/public 指定该虚拟账号的主目录(如果没有这条,这默认会进入系统用户ftp01的主目录,如果ftp01的主目录的其他人权限不允许读,则看不到一个文件)
修改ftp02的配置文件
guest_enable=yes 开启虚拟帐号登录
guest_username=ftp02l 设置ftp对应的系统帐号为ftp02
anon_other_write_enable=YES: 允许匿名账号具有删除.更名权限
anon_mkdir_write_enable=yes:允许创建文件夹
anon_upload_enable=yes: 开启匿名帐号的上传功能
anon_world_readable_only=no:不允许匿名用户浏览整个服务器的文件系统
local_root=/var/ftp/personal 指定该虚拟账号的主目录
原文:http://bigwenwen.blog.51cto.com/998172/1575448