现在的位置: 首页 > 综合 > 正文

Linux下FTP服务器原理简介及简单应用

2012年03月29日 综合 ⁄ 共 4096字 ⁄ 字号 暂无评论

v 常见的FTP服务器程序

Ü Win:IIS、Serv-U

Ü Linux:wu-ftpd,Proftpd,vsftpd(Very Secure FTP Daemon)

v 常见的FTP客户端程序

Ü ftp命令(cmd),浏览器

Ü CuteFTP、FlashFXP、LeapFTP、Filezilla

Ü gftp、kuftp

v FTP连接方式

Ü 控制连接:标准端口为21,用于发送FTP命令信息

Ü 数据连接:标准端口为20,用于上传、下载数据

v 数据连接的建立类型:
Ü 主动模式:服务端从20端口主动向客户端发起连接
Ü 被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接

v FTP传输模式

Ü 文本模式:ASCII模式,以文本序列传输数据

Ü 二进制模式:Binary模式,以二进制序列传输数据

v FTP用户的类型

Ü 匿名用户:anonymous或ftp

Ü 本地用户:
î 帐号名称、密码等信息保存在passwd、shadow文件中

Ü 虚拟用户:
î 使用独立的帐号/密码数据文件

v常用的FTP指令
pwd cd lcd bye help ascii binary
dir !dir get mget put !put

[root@ftp ~]# man 5 vsftpd.conf #参考手册

vsftpd服务基础
vsftpd软件包:

Ü 官方站点:http://vsftpd.beasts.org/

Ü 主程序:/usr/sbin/vsftpd

Ü 服务名:vsftpd

Ü 用户控制列表文件
î /etc/vsftpd/ftpusers
î /etc/vsftpd/user_list

Ü 主配置文件
î /etc/vsftpd/vsftpd.conf
安装vsftpd指令:

[root@ftp ~]# yum info vsftpd

[root@ftp ~]# yum install vsftpd -y

[root@ftp ~]# rpm -qc vsftpd
/etc/vsftpd/vsftpd.conf

v常用的全局配置项

Ü listen=YES:是否以独立运行的方式监听服务

Ü listen_address=192.168.4.1:设置监听的IP地址

Ü listen_port=21:设置监听FTP服务的端口号

Ü write_enable=YES:是否启用写入权限

Ü download_enable=YES:是否允许下载文件

Ü userlist_enable=YES:是否启用user_list列表文件

Ü userlist_deny=YES:是否禁用user_list中的用户

Ü max_clients=0:限制并发客户端连接数

Ü max_per_ip=0:限制同一IP地址的并发连接数

v常用的匿名FTP配置项

Ü anonymous_enable=YES:启用匿名访问

Ü anon_umask=022:匿名用户所上传文件的权限掩码

Ü anon_root=/var/ftp:匿名用户的FTP根目录

Ü anon_upload_enable=YES:允许上传文件

Ü anon_mkdir_write_enable=YES:允许创建目录

Ü anon_other_write_enable=YES:开放其他写入权

Ü anon_max_rate=0:限制最大传输速率,单位为字节

v常用的本地用户FTP配置项

Ü local_enable=YES:是否启用本地系统用户

Ü local_umask=022:本地用户所上传文件的权限掩码

Ü local_root=/var/ftp:设置本地用户的FTP根目录

Ü chroot_local_user=YES:是否将用户禁锢在主目录

Ü local_max_rate=0:限制最大传输速率(字节/秒)

[root@ftp ~]# man 5 vsftpd.conf #参考手册

vsftpd主要设置文件/etc/vsftpd/vsftpd.conf详解:
12 anonymous_enable=YES #匿名账户可以登录

15 local_enable=YES #本地账户可以登录

18 write_enable=YES #本地账户可写权限
22 local_umask=022 #umask值(用于权限控制)
23 anon_umask=022
27 #anon_upload_enable=YES #匿名账户是否上传文件

31 #anon_mkdir_write_enable=YES #匿名账户是否可以创建目录
anon_other_write_enable #匿名账户其它的写权限(删除等)

35 dirmessage_enable=YES #启用目录说明功能

(切换到目录下,显示一些消息,在目录下创建.message文件)
38 xferlog_enable=YES #是否启用日志文件
51 #xferlog_file=/var/log/vsftpd.log #日志文件位置
54 xferlog_std_format=YES #日志格式
41 connect_from_port_20=YES #连接时打开20端口
46 #chown_uploads=YES #上传身份是否改变
47 #chown_username=whoever #改变上传身份
57 #idle_session_timeout=600 #会话超时
60 #data_connection_timeout=120 #连接超时
79 #ascii_upload_enable=YES #是否允许使用ascii上传
80 #ascii_download_enable=YES #是否允许使用ascii下载

83 #ftpd_banner=Welcome to blah FTP service. #欢迎条幅
87 #deny_email_enable=YES #是否拒绝邮箱登陆
88 # (default follows)
89 #banned_email_file=/etc/vsftpd/banned_emails#拒绝邮箱登陆文件
94 chroot_list_enable=YES #允许本地账户切换目录(跳出家目录)

96 chroot_list_file=/etc/vsftpd/chroot_list #此文件中的账户将不能切换家目录(必须结合chroot_list_enable=YES )
#chroot_local_user=YES #禁止所有用户切换根目录

(chroot_list_enable=YES,chroot_local_user=YES,
chroot_list_file=/etc/vsftpd/chroot_list此时只有放入列表中的账户可以切换,其它账户不能切换)

107 listen=YES #监听功能打开
114 pam_service_name=vsftpd #pam可插拔的验证模块

(设置pam的认证服务的配置文件名称,存入/etc/pam.d/目录下)
115 userlist_enable=YES #启用账户限制,启用/etc/vsftpd/user_list文件
userlist_deny=YES #禁止user_list中文件访问,不让输密码

userlist_deny=NO #只允许user_list中账户访问

(/etc/vsftpd/user_list不让输密码,/etc/vsftpd/ftpusers允许输密码)

【说明:在/etc/vsftpd/user_list中 # If userlist_deny=NO, only allow users in this file# If userlist_deny=YES (default), never allow users in this file, and do not even prompt for a password.】
116 tcp_wrappers=YES #启动系统的简易防火墙

pasv_max_port #被动连接的最大端口

pasv_min_port #被动连接的最小端口

local_max_rate=1000000 #本地账户最大传输速率1M/s
anon_max_rate=100000 #匿名账户最大传输速率100K/s
ftp服务器应用之虚拟用户
[root@ftp ~]# mkdir /mnt/cdrom/

[root@ftp ~]# mount /dev/cdrom /mnt/cdrom/

[root@ftp Server]# rpm -ivh vsftpd-2.0.5-12.el5.i386.rpm

[root@ftp Server]# rpm -ivh db4-utils-4.3.29-9.fc6.i386.rpm
[root@ftp Server]# cd /etc/vsftpd/
[root@ftp vsftpd]# vim vuser.txt
zhangsan
123
lisi
123

[root@ftp vsftpd]# db_load -T -t hash -f vuser.txt vuser.db
[root@ftp vsftpd]# chmod 600 vuser.db
[root@ftp vsftpd]# cd /etc/pam.d/
[root@ftp pam.d]# ll
[root@ftp pam.d]# cp vsftpd vsftpd.vu
[root@ftp pam.d]# vim vsftpd.vu
#%PAM-1.0

auth required pam_userdb.so db=/etc/vsftpd/vuser

account required pam_userdb.so db=/etc/vsftpd/vuser
[root@ftp pam.d]# vim /etc/vsftpd/vsftpd.conf
114 guest_enable=YES
115 guest_username=qq
116 pam_service_name=vsftpd.vu

[root@ftp pam.d]# useradd -d /home/virtual qq
[root@ftp pam.d]# cd /home/
[root@ftp home]# chmod 755 virtual/
[root@ftp home]# mkdir virtual/d1
[root@ftp home]# touch virtual/f1
[root@ftp home]# service vsftpd start
Starting vsftpd for vsftpd: [ OK ]

给我留言

留言无头像?