一、vsftpd安装

1、查看是否安装了ftp相关的安装包 [root@test~]# rpm -qa | grep vsftpd 查看系统中是否安装了vsftpd服务,如果没有安装,先安装下服务 [root@test~]# yum -y install vsftpd //这里如果没有配置 yum源,也可以直接用rpm的方式安装 查看一下是否安装成功 [root@test~]# rpm -qa | grep vsftpd vsftpd-2.2.2-24.e16.x86_64 //看到这个文件,说明安装成功了 ** 2、启动服务并设置开机自动启动** [root@test~]# service vsftpd start //启动服务 [root@test~]# service vsftpd stop //关闭服务 [root@test~]# service vsftpd restart // 重启服务 [root@test~]#chkconfig --level 3 5 vstpd on //设置自启 [root@test~]#chkconfig --list vsftpd //查看是否设置成功 vsftpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off ** 3、配置vsftpd文件** ** vsftpd** 主要有三个配置文件,都位于/etc/vsftpd目录下: ** ftpusers** //是用户控制文件,在这个文件里面的用户,默认是不可以使用vsftpd服务的 user_list //默认功能和第一个一样,但是通过配置,我们可以让只有在第二个文件里的用户才能使用vsftpd服务,这样新加入的用户就不会自动拥有vsftp的使用权,这样可以让vsftpd服务器更加安全 vsftpd.conf //ftp服务器的主配置文件

二、匿名访问(可上传可下载)

vsftpd 安装好,启动,默认匿名用户就是可以访问的 ,只是不能上传(如果不行,可以试着关闭防火墙[root@test~]#service iptables stop)接下主要介绍的匿名用户上传权限 匿名用户上传需要注意三个地方: A、上传目录的写入权限 B、服务器的配置支持上传 C、selinux支持上传 ** 1、设置目录写入权限** [root@test~]# cd /var/ftp //切换到ftp目录下 [root@test ftp]# mkdir upftp //新建一个upftp目录 [root@test ftp]#chown ftp upftp //更改目录所有者(默认是root,更改成ftp,目录默认权限是755) ** 2、配置vftpd的配置文件** [root@test~]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak //备份配置文件(个人习惯) [root@test~]# vi /etc/vsftpd/vsftpd.conf #anon_upload_enable=YES //匿名上传 #anon_mkdir_write_enable=YES //匿名写入 取消上面两行的注释(也就是去掉这两行前面的#号) 保存退出 3、修改selinux [root@test~]#getsebool -a | grep ftp //显示ftp所有的boo值,通过管道 [root@test~]#setsebool -P allow_ftpd_anon_write on //打开匿名写入管道 修改上下文 [root@test~]#ls -Zd /var/ftp/upftp [root@test~]#chcon -t public_content_rw_t /var/ftp/upftp

准备就绪,只待重启服务器

[root@test~]#reboot

重启后,匿名应该就可以直接访问上传下载了

三、基本用户访问

基本用户的访问控制,需要注意两个方面: A、配置文件的修改 B、selinux的修改 1、修改vsftpd的配置文件 [root@test~]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO //禁止匿名访问 anon_upload_enable=YES // 注释这行(也就是在这行前面加#号)
anon_mkdir_write_enable=YES // 注释这行(也就是在这行前面加#号) 保存退出 2、修改selinux [root@test~]#getsebool -a | grep ftp //显示ftp所有的boo值,通过管道 [root@test~]#setsebool -P allow_ftpd_anon_write off //关闭匿名上传通道(之前打开的) [root@test~]#setsebool -P ftp_home_dir on
3、创建虚拟用户 [root@test~]#useradd user1 //添加用户user1 [root@test~]#usermod -s /sbin/nologin user1 //禁止用户user1登录系统 [root@test~]#passwd user1 //设置密码 重启vsftpd服务,然后测试 **PS1:**上面这样配置,风险很大,危险性较高;连接上的FTP用户,不仅可以访问自己的家目录,还可以自由切换到其他目录下 因些,下面需要使用chroot功能 [root@test~]# vi /etc/vsftpd/vsftpd.conf #chroot_list_enable=YES #chroot_list_file=/etc/vsftpd/chroot_list 取消上面两行的注释(也就是去掉这两行前面的#号) 保存退出 chroot list默认是不存在的,需要我们手动建立,把user1这个用户加到这个文件中,重启vsftpd服务 再测试,可以发现用户锁定在了自己的家目录下,不能切换 还有一点,提醒大家,匿名用户登陆,默认是choot了的 **PS2:**系统添加一个用户也默认有ftp的登陆权限,也存在一定的风险,所以我们要制定更严格的ftp用户策略,我们将通过下面的配置,使只有在user_list文件中的用户才能登录系统 [root@test~]# vi /etc/vsftpd/vsftpd.conf userlist_enable=YES //这行系统默认存在 userlist_deny=NO //这行需要自己手动添加 userlist_file=/etc/vsftpd/user_list //这行需要自己手动添加(可以在文未添加) 保存,退出,重启vsftpd服务 再测试,会发现此时user1用户已经无法再登录了 然后把user1用户加入到user_list文件中,重启服务,这样user1用户就可以访问了 注意:优先权 ftpusers(拒绝)>user_list(系统用户,虚拟用户)>chroot_list(虚拟用户) 如果ftp用户存在ftpusers文件中,无论是否加入其它两个文件,都是无法访问ftp服务的; 如果ftp用户只存在chroot_list中,也是无法访问ftp服务的; 虚拟用户即要加入chroot_list(锁定在自家目录下)文件中,也需要加入user_list(访问ftp服务权限)文件中

参考文档:http://blog.51cto.com/redking/134839 http://blog.51cto.com/redking/136218