1、开启防火墙ftp端口
vi /etc/sysconfig/iptables #编辑防火墙配置文件-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT(允许21端口通过防火墙) -A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT(允许20端口通过防火墙) -A INPUT -m state --state NEW -m tcp -p tcp --dport 9000:9045 -j ACCEPT(设置ftp被动模式的端口范围)
注意:如果ftp端口修改为其它的端口(比如2222),这时防火墙就要开启2222端口,这里防火墙是以CentOS 6.0为例
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT(允许2222端口通过防火墙)
/etc/init.d/iptables restart #重启防火墙使配置生效
2、检查系统是否已安装vsftp 系统运维 温馨提醒:qihang01原创内容版权所有,转载请注明出处及原文链接 rpm -q vsftpd package vsftpd is not installed #说明系统没有安装vsftpd3、安装vsftpd yum install vsftpd 按Y回车,系统自动安装 /etc/init.d/vsftpd start #启动vsftpd service vsftpd restart #重启 service vsftpd stop #停止 chkconfig vsftpd on #设置开机时自动运行4、配置vsftp服务器 配置文件说明: /etc/vsftpd/vsftpd.conf vsftpd的核心配置文件 /etc/vsftpd/ftpusers 用于指定哪些用户不能访问FTP服务器 /etc/vsftpd/user_list 指定允许使用vsftpd的用户列表文件 /etc/vsftpd/vsftpd_conf_migrate.sh 是vsftpd操作的一些变量和设置脚本 /var/ftp/ 默认情况下匿名用户的根目录======================================================================== 配置/etc/vsftpd/vsftpd.conf 配置前先备份 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.confbak 恢复文件 cp /etc/vsftpd/vsftpd.confbak /etc/vsftpd/vsftpd.confvi /etc/vsftpd/vsftpd.conf #配置
use_localtime=YES #ftp时间和系统同步,如果启动有错误,请注销reverse_lookup_enable=NO #添加此行,解决客户端登陆缓慢问题!重要!默认vsftpd开启了DNS反响解析!这里需要关闭,如果启动有错误,请注销!listen_port=21 #默认无此行,ftp端口为21,添加listen_port=2222把默认端口修改为2222,注意:防火墙同时要开启2222端口anonymous_enable=NO #禁止匿名用户local_enable=YES设定本地用户可以访问。注意:主要是为虚拟宿主用户,如果该项目设定为NO那么所有虚拟用户将无法访问write_enable=YES #全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)local_umask=022 设定上传后文件的权限掩码。anon_upload_enable=NO 禁止匿名用户上传。anon_mkdir_write_enable=NO 禁止匿名用户建立目录。dirmessage_enable=YES 设定开启目录标语功能。xferlog_enable=YES 设定开启日志记录功能。connect_from_port_20=YES 设定端口20进行数据连接。chown_uploads=NO 设定禁止上传文件更改宿主。xferlog_file=/var/log/vsftpd.log 日志保存路径(先创建好文件)xferlog_std_format=YES #使用标准格式async_abor_enable=YES 设定支持异步传输功能。ascii_upload_enable=YESascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。ftpd_banner=Welcome to Awei FTP servers 设定Vsftpd的登陆标语。chroot_local_user=YES 禁止本地用户登出自己的FTP主目录。pam_service_name=vsftpd 设定PAM服务下Vsftpd的验证配置文件名。因此,PAM验证将参考/etc/pam.d/下的vsftpd文件配置。userlist_enable=YES 设为YES的时候,如果一个用户名是在userlist_file参数指定的文件中, 那么在要求他们输入密码之前,会直接拒绝他们登陆。tcp_wrappers=YES 是否支持tcp_wrappersidle_session_timeout=300 #超时设置data_connection_timeout=1 #空闲1秒后服务器断开#########################################################以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认Vsftpd.conf中不包含这些设定项目,需要自己手动添加配置#########################################################guest_enable=YES 设定启用虚拟用户功能。guest_username=vsftpd 指定虚拟用户的宿主用户(这个是我们后面要新建的用户)user_config_dir=/etc/vsftpd/vconf 设定虚拟用户个人Vsftp的配置文件存放路径。 也就是说,这个被指定的目录里,将存放每个Vsftp虚拟用户个性的配置文件,一个需要注意的 地方就是这些配置文件名必须和虚拟用户名相同。 比如说vsftpd.conf的配置文件,你复制到这个目录下,你要mv一下,配置成虚拟用户的名称virtual_use_local_privs=YES #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。 #当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。pasv_min_port=9000 (设置被动模式的端口范围)pasv_max_port=9045 (设置被动模式的端口范围)accept_timeout=5 #保持5秒connect_timeout=1 #1秒后重新连接
5、先建立虚拟用户名单文件:
touch /etc/vsftpd/virtusers 编辑虚拟用户名单文件:(第一行账号,第二行密码,注意:不能使用root做用户名,系统保留) vi /etc/vsftpd/virtusers web1 123456 web2 123456 web3 123456=======================================================================6、生成虚拟用户数据文件: db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db chmod 600 /etc/vsftpd/virtusers.db #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取=======================================================================7、在/etc/pam.d/vsftpd的文件头部加入以下信息(在后面加入无效) 修改前先备份 cp /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak 恢复cp /etc/pam.d/vsftpdbak /etc/pam.d/vsftpd vi /etc/pam.d/vsftpdauth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/virtusers 注意:如果系统为64为,则上面的lib改为lib64,否则配置失败8、新建一个系统用户vsftpd,用户家目录为/home/wwwroot, 用户登录终端设为/bin/false(即使之不能登录系统)
useradd vsftpd -d /home/wwwroot -s /bin/false
创建对应的用户目录如:
mkdir -p /home/wwwroot/web1
mkdir -p /home/wwwroot/nawang
chown vsftpd:vsftpd /home/wwwroot -R
chown apache:apache /home/wwwroot -R #如果虚拟用户的宿主用户为apache,需要这样设置。9、建立虚拟用户个人Vsftp的配置文件 mkdir /etc/vsftpd/vconf cd /etc/vsftpd/vconf touch web1 web2 web3 #这里创建三个虚拟用户配置文件vi web1 #编辑用户web1配置文件,其他的跟这个配置文件类似
local_root=/home/wwwroot/web1/ write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES
10、最后重启vsftpd服务器
/etc/init.d/vsftpd restart备注:guest_username=vsftpd #指定虚拟用户的宿主用户(就是我们前面新建的用户)
如ftp的目录是指向网站根目录的,用来上传网站程序的话 guest_username=apache #指定虚拟用户的宿主用户为apache运行账户,可以避免很多权限设置问题如果生成虚拟用户数据文件的时候出现以下错误 users.db-bash: db_load: command not found 因为在执行db命令时候软件包没有安装 db4 db4-devel db4-java db4-tcl db4-utils
可以运行yum install db4* 命令安装
方法二
环境: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并不认同,必须给这些虚拟账号分批载体
修改下面红色字体的部分为蓝色字体的形式,紫色字体是配置原有的 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_listTCP_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对应的系统帐号为ftp01anon_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 指定该虚拟账号的主目录