Linux下的vsFTPd 架设基础及方法
1,vsFTPd server简介
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息。FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。
2,vsFTPd server的安装(RHEl5)
首先查看一下是否安装了vsftpd的RPM包:
[root@localhost~]# rpm –qa|grep vsftpd
默认的情况下是没有安装vsftpd 这个包的。这个时候要安装的话就必须从RHEL5中的第二张光盘找到vsftpd-2.0.5-10.el5.i386.rpm包进行安装。
[root@localhost~]# rpm –ivh vsftpd-2.0.5-10.el5.i386.rpm
正常情况下,安装树立进行。
启动vsftpd服务,看能否正常启动。
[root@localhost~]# /etc/rc.d/init.d/vsftpd start
查看进程:
[root@localhost~]# ps –eaf|grep vsftp
如果有正在运行一般只有开启 TCP-21端口
[root@localhost~]#netstat –anp|grep :21
可以看见由root 用户正在使用该进程所包含的端口,如果FTP工作是被动的话还需要采用其他的端口,在此为了方便起见,我们先把防火墙的相关信息清空。
[root@localhost~]#iptables -F
这样我们就可以在Windows下,最常用的就是用浏览器匿名访问,
我们也可以用账户的形式:
选择“文件”菜单下的“登录”,然后输入用户名和密码。
那么我们先创建一个名为”abc”的账户,密码为vsftpdd:
[root@localhost~]# useradd abc
[root@localhost~]# passwd abc
两次键入“vsftp”即可,如果是以账户登录的话就可以上传文件。此时应说vsftpd server 正常工作,介绍下配置方法。
3,vsFTPd server的配置方法
主配置文件在/etc/vsftpd/vsftpd.conf
可以先查看一下初始内容:
[root@localhost~]# vi /etc/vsftpd/vsftpd.conf
这个时候先认识其中一些语句及其意义:
Anonymous_enable=yes #允许匿名登陆
Dirmessage_enable=yes #切换目录时,显示目录下.message的内容
Local_umask=022 #FTP上本地的文件权限,默认是077
Connect_form_port_20=yes #启用FTP数据端口的数据连接
Xferlog_enable=yes #激活上传和下传的日志
Xferlog_std_format=yes #使用标准的日志格式
Ftpd_banner=XXXXX #显示欢迎信息
Pam_service_name=vsftpd #验证方式
Listen=yes # 独立的VSFTPD服务器
Anon_upload_enable=yes # 匿名用户上传权限
Anon_mkdir_write_enable=yes #创建目录的同时可以在此目录中上传文件
Write_enable=yes #本地用户写的权限
Anon_other_write_enable=yes #匿名帐号可以有删除的权限
Anon_world_readable_only=no #匿名用户浏览权限
Ascii_upload_enable=yes #启用上传的ASCII传输方式
Ascii_download_enable=yes #启用下载的ASCII传输方式
Banner_file=/var/vsftpd_banner_file #用户连接后欢迎信息使用的是此文件中的相关信息
Idle_session_timeout=600(秒) #用户会话空闲后10分钟
Data_connection_timeout=120(秒) #将数据连接空闲2分钟断
Accept_timeout =60(秒) # 将客户端空闲1分钟后断
Connect_timeout=60(秒) #中断1分钟后又重新连接
Local_max_rate=50000(bite) #本地用户传输率50K
Anon_max_rate=30000(bite) #匿名用户传输率30K
Pasv_min_port=5000 #将客户端的数据连接端口改在
Pasv_max_port=6000 #5000—6000之间
Max_clients=200 # FTP的最大连接数
Max_per_ip=4 #每IP的最大连接数
Listen_port=5555 #从5555端口进行数据连接
Local_enble=yes #本地帐户能够登陆
Write_enable=no #本地帐户登陆后无权删除和修改文件
Chroot_local_user=yes #本地所有帐户都只能在自家目录
Chroot_list_enable=yes #文件中的名单可以调用
Chroot_list_file=/etc/vsftpd.chroot_list 前提是chroot_local_user=no
Userlist_enable=yes #在指定的文件中的用户不可以访问
Userlist_deny=yes
Userlist_file=/etc/vsftpd.user_list
Banner_fail =/路径/文件名 #连接失败时显示文件中的内容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 #将虚拟服务绑定到某端口
Guest_enable=yes #虚拟用户可以登陆
Guest_username=所设的用户名 #将虚拟用户映射为本地用户
Chown_uploads=yes # 改变上传文件的所有者为root
Chown_username=root
Deny_email_enable=yes #是否允许禁止匿名用户使用某些邮件地址
Banned_email_file=//任意指定的路径/xx/
Pasv_enable=yes #服务器端用被动模式
User_config_dir=/任意指定的路径//任意文件目录 指定虚拟用户存放配置文件的路径。
4,vsFTPd server的匿名服务配置方法(rhel5)
首先看看/etc/passwd:
[root@localhost~]# more /etc/passwd, 有个FTP用户,可以知道起主目录为/var/ftp 也就是我们经常配置好VSFTP后的默认共享文件夹。
[root@localhost~]# cd /var/ftp
先可以复制一个文件(以vsftpd.conf)
[root@localhost~]# cp /etc/vsftpd/vsftpd.conf ./
那么的复制成功,一般情况下匿名是上传不了文件的,那么我们不需要上传时,怎么办?
修改配置文件来实现:
Wirte_enable =yes
Anon_upload_enable=yes
保存退出,重启服务,返回windows 重新连接VSFTPD SERVER.结果还是上传不了,纳闷,原来这个时候受系统权限限制。为了保证能过匿名上传,那么接下来做如下的操作:】
在/var/ftp下创建一个upload子目录
[root@localhost~]# cd /var/ftp
[root@localhost~]# mkdir upload
默认情况下upload这个文件是由root操作,其他的用户是没有W权限的。
使用系统命令将upload文件改为FTP组 FTP账号:
[root@localhost~]# chowm ftp.ftp upload
[root@localhost~]# ls
查看一下,返回windows,重新打开IE,可以看见upload, 那么就再次上传一个文件。但不可以删除文件。这个要删除在配置文件中增加语句
[root@localhost~]# vi /etc/vsftpd/vsftpd.conf
在原有的文件中添加
anon_other_wirte_enable =yes #因为要删除FTP文件
存档,重启。重新连接。
匿名登录创建子目录的配置:
[root@localhost~]# vi /etc/vsftpd/vsftpd.conf
在原有的文件中添加
Anon_mkdir_write_enable =yes
5,vsFTPd server的虚拟用户服务配置方法
[root@localhost~]# cd
[root@localhost~]# vi ftpuser.txt
在编辑状态下加入虚拟用户的账号和密码:
User1
Pass1
User2
Pass2
User3
Pass3
注意格式一定要对(如上)保存
生成虚拟数据库,首先要确保DB库和工具包
先查看下:
[root@localhost~]# rpm –qa|grep db4
看是否有了,为了安装db 4,从第二张光盘里安装
[root@localhost~]# rpm –ivh db4-untils-4.3.29-9.fe4.i386.rpm
正常安装顺利进行。
[root@localhost~]# db _load –T –t hash –f ./ftpuser.txt /etc/vsftpd/ftpuse.db
[root@localhost~]# chmod 600 /etc/vsftpd/ftpuse.db
[root@localhost~]# vi /etc/pen.d/vsftpd.login
输入内容:
Auth required /livb/security/pam_userdb db=/etc/vsftpd/ftpuser
他将调用数据库。
创建虚拟账号
[root@localhost~]#useradd –d /home/ftpsite –s /abin/nologin ftp_virt
[root@localhost~]#chmod 700 /home/ftpsite
修改配置文件:
原有的不变,添加:
guest_enable=yes
guest username=ftp_vrit
pas_service_name = sftpd_login
存盘退出 重新启动VSFTPD服务 ,关闭原来的连接。
使用虚拟的账号登录。这个是侯的本地用户不能使用的。
设置虚拟账户的权限
[root@localhost~]#virtual_use_local_prive=yes 设置跟本地的权限一样
不同的权限设置
在配置文件添加语句:
User_config_dir*/etc/varftpd
存盘退出
在给对应的虚拟账户创建相应的子目录:
[root@localhost~]# mkdir user1
[root@localhost~]# mkdir uesr2 为user1账户的主目录
[root@localhost~]# chown ftp_virt user1
[root@localhost~]# chown ftp_virt user2
[root@localhost~]# vi /etc/vsftpd/user1
输入内容:
Local _root- /home/ftpsite/user1 #表示user1其主目录
存盘退出。(其他的虚拟目录同样)
返回windows下测试,分别来登录两个连接,可以上传文件
返回RHEL5系统
进入USER1账户的主目录,使用LS命令看看是否有了刚刚上传的文件名称以及相关信息。