ftp的简单配置
所需环境:redhat enterprise 5.4

1.把防火墙和selinux关了,以免影响后面的试验。
#iptables -F
#setenforce 0

2.安装vsftpd软件包,启动服务,然后查看21号端口是否处于监听状态。
#yum install vsftpd
#service vsftpd start
#netstat -tnlp |grep 21

这样,我们的ftp服务器就可以工作了,在浏览器中输入你的ip就可以访问了。具体的配置的选项,可以参考下面的文章。

3.vsftpd的几个配置文件
  1./etc/vsftpd/vsftpd.conf
    这个是vsftpd的主配置文件,几乎所有的功能都可以在这里实现
  2./etc/pam.d/vsftpd
    这是vsftpd使用PAM模块时的相关配置文件,主要用来作为身份认证之用,
    还有阻止某些用户账号的功能也是通过这个文件实现的。
  3./etc/vsftpd/ftpusers
    这个文件与上面那个文件有关系,也就是PAM模块/etc/pam.d/vsftpd 中所指定
    的那个无法登录的用户的配置文件,在这里还可以自己修改的,不必非要使用默认的。
  4./etc/vsftpd/user_list
    这个文件是否能够生效与/etc/vsftpd/vsftpd.conf文件中定义的两个参数有关
    分别是userlist_enable,userlist_deny,这个文件是否起作用与主配文件vsftpd.conf
    内的“userlist_deny={YES|NO}”有关
  5./etc/vsftpd.chroot_list,这个文件默认是不存在的,所以需要自己手动建立,这个     文件的主要功能是将某些用户锁在它们的家目录下,这个文件是否生效与主配文件
     /etc/vsftpd/vsftpd.conf中的两个参数有关
     分别是chroot_list_enable,chroot_list_file两个参数。
  6./usr/sbin/vsftpd
     这个就是vsftpd的主要执行文件,vsftpd只有这一个执行文件。

上面这些文件就是vsftpd的所有配置文件了。

4.简单说明一下vsftpd.conf的设置说明。

与主机相关的设置

(1) connect_from_port_20=YES|NO
ftp工作在主动模式下,数据传输使用的端口
(2) listen_port=21
vsftpd命令传输的端口
(3)pasv_enable=YES|NO
启动被动连接模式,尽量设为YES
(4)write_enable=YES|NO
是否允许用户上传数据
(5)connect_timeout=60
单位是秒,在主动模式下,发出的连接请求在60秒内得不到客户端的响应,就不再等待并
强制断线
(6)accept_timeout=60
单位是秒,在被动模式下,服务端等待客户端连接,如果超过60秒还没有回应,那么就要强制断线,不再等待。这个设置与connect_timeout类似,只不过一个是管理主动连接,一个
管理被动连接
(7)data_connection_timeout=300
不论是主动连接还是被动连接,只要服务器与客户端的数据连接已经建立,但可能是由于网络等问题,导致在300秒内还没有顺利的完成数据的传输,那么客户端的连接就会被vsftpd强制断开。
(8)idle_session_timeout=300
如果在300秒内还没有命令操作,则强制断开
(9)max_clients=0
如果vsftpd是以stand alone方式工作的,那么这个设置项目可以设置在同一时间内最多有多少client可以同时连上vsftpd,等于0则表明不作限制。尽量把这个值设置一下,不要等于0
(10)pasv_max_port=0,pasv_min_port=0
与被动模式下连接的端口有关,如果想使用65400 ~~ 65410 这个11个端口来进行被动连接
,可以这样设置:pasv_min_port=65400,pasv_max_port=65410
如果是0的话,则表示随机选取而不用限制。

与实体用户相关的设置

(1)guest_enable=YES|NO
若这个值设为YES,那么任何非匿名用户登录的账号,均会被假设为guest访客。
访客在vsftpd中默认取得ftp这个用户的相关权限,但可以通过guest_username来修改
(2)guest_username=ftp
在guest_enable=YES时才会生效,指定访客的身份而已。
(3)local_enable=YES|NO
这个值设为YES时,/etc/passwd中的账号才可以以实体用户的方式登录vsftpd主机。
(4)chroot_local_user=YES|NO
将用户锁在它们的默认目录下,这个设置在vsftpd中默认为NO,因为下面两个设置项,
所以可以不使用它。
(5)chroot_list_enable=YES|NO
是否将某些实体用户限制在他们的默认目录下,默认为NO
(6)chroot_list_file=/etc/vsftpd/chroot_list
如果chroot_list_enable=YES,那么写在这个文件中的账号将锁在他们的默认家目录下,
一行一个账号即可。
(7)userlist_enable=YES|NO
是否启用vsftpd的阻止机制来阻止某些不受欢迎的账号登陆ftp服务器。与下面两个设置项有关。
(8)userlist_deny=YES|NO
这个设置只有userlist_enable=YES时才起作用,且当用户账号写入到某个文件中时,在该文件中的用户将无法登陆ftp服务器的。这个文件的设置与下面选项有关
(9)userlist_file=file-path
若上面的userlist_deny=YES时,这里配置文件才有用处,在这个文件内的账号都无法登陆主机。

与匿名用户登陆的设置值

(1)annonymous_enable=YES|NO
设置为允许anonymous登录ftp主机,默认为YES,下面的所有相关设置都需要将此项设置为
annonymous_enable=YES时才能生效
(2)anon_world_readable_only=YES|NO
仅允许anonymous具有下载可读文件的权限,默认为YES
(3)anon_other_write_enable=YES|NO
是否允许anonymous具有写入的权限?默认为NO,
(4)anon_mkdir_write_enable=YES|NO
是否让anonymous具有建立目录的权限,如果为YES,则anon_other_write_enable必须为YES
才行。
(5)anon_upload_enable=YES|NO
是否让anonymous具有上传数据的权限,默认为NO,如果要设为YES,则anon_other_write_enable必须为YES才行
(6)anon_umask=077
限制匿名用户的权限,如果是077,则匿名用户上传上来的文件权限为-rw------

其它的配置
tcp_wrappers-YES|NO
pam_service_name=vsftpd

建立虚拟账号
1.建立虚拟ftp用户的账号数据库文件
2.创建ftp根目录及虚拟用户映射的系统用户
3.建立支持虚拟用户的PAM认证文件
4.在vsftpd.conf文件中添加支持配置选项
5.为个别虚拟用户建立独立的配置文件
6.重新加载vsftpd配置文件
7.使用虚拟ftp账户访问测试

下面我们就来一步一步做出来

1.#cd
2.#vim login.txt
在login.txt写入下面两个账号。奇数行为账号,偶数行为相应的账号的密码,如下
user1
123456
user2
redhat

然后保存退出。

3.使用db_load工具把login.txt转换成数据库文件
先查一下db4-tuils这个工具装了没,
#rpm -q db4-tuils  若没装,用yum装上即可
#yum install db4-tuils
#db_load -T -t hash -f login.txt /etc/vsftpd/login.db
#chmod 600 /etc/vsftpd/login.db

4.建立ftp根目录及虚拟账号所映射的系统账号
#useradd -d /var/ftproot -s /sbin/nologin -M virtual
#chmod go+rx /var/ftproot

5.建立支持虚拟用户的PAM认证文件
vim /etc/pam.d/vsftpd.vu ,添加如下内容后,保存退出
auth        required    pam_userdb.so    db=/etc/vsftpd/login
account        required    pam_userdb.so    db=/etc/vsftpd/login

6.在/etc/vsftpd/vsftpd.conf中添加如下内容
guest_enable=YES
guest_username=virtual
pam_service_name=vsftpd.vu  (这一项是改的,不是添加的)

7.为个别用户添加独立配置文件,这里我们以user1为例
#mkdir /etc/vsftpd/vsftpd_user_conf
#cd /etc/vsftpd/vsftd_user_conf
#vim user1   (添加如下内容)
anonymous_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES

保存退出
为个别用户添加独立配置文件时,在/etc/vsftpd/vsftpd_user_conf目录中
新建与虚拟用户相同的文件名,在该文件中就可以添加该虚拟用户相应的权限了。

8.重新加载ftp主配文件
#service vsftpd restart
然后就可以用虚拟账号验证登录了。