Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160381
  • 博文数量: 37
  • 博客积分: 2218
  • 博客等级: 大尉
  • 技术积分: 315
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-04 23:35
文章分类

全部博文(37)

文章存档

2012年(1)

2011年(5)

2010年(31)

分类: LINUX

2010-03-23 14:48:11

FTP工作的时候有两种模式:
  主动模式:PORT ;被动模式:PASV
 
        在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
        在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
        总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
    被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
 
主动模式下:
服务控制端口21
数据传输端口20
需要安装的包为vsftpd
服务名为:vsftpd /usr/sbin/vsftpd
脚本在:/etc/rc.d/init.d/vsftpd
配置文件有:
/etc/vsftpd/vsftpd.conf 600rootroot
/etc/vsftpd/ftpusers     600,rootroot
/etc/pam.d/vsftpd   644rootroot
相关联的服务有;tcp_wrappers,ip_conntrack_ftp,ip_nat_ftp
#netstat  -tnlp  | grep 21  查看端口
banner_file=filename (指定文件名,文件中的内容将会被作为欢迎信息显示出来,它会覆盖ftpd_banner中的欢迎信息)
ftpd_banner=FTP server ready   (定义欢迎信息)
每个目录也可以有欢迎信息
dirmessage_enable=YES
message_file=.message (显示.message文件中的欢迎信息)
 
vsftpd的日志功能:
xferlog_enable=YES    (激活上传和下传的日志功能,如果启用,将会维护一个日志文件,用户详细记录上载和下载,默认情况下,这个文件是/var/log/vsftpd.log,但也可以通过配置文件中的vsftpd_log_file选项来指定)
xferlog_std_format=YES  (定义记录日志的格式为标准格式)
xferlog_file=/var/log/xferlog  (将默认记录日志的位置)
log_ftp_protocol=YES (所有的FTP请求和应带都会被记录,此选项对调试很有用默认为YES,使用它的时候要关闭xferlog_std_format的标准日志格式)
xferlog_std_format=NO
 
dual_log_enable(如果启用,将生成两个相似的日志文件,默认在/var/log/xferlog/var/log/vsftpd.log目录下,前者是wu-ftpd类型的传输日志,可以用于标准工具分析,后者是vsftpd自己类型的日志)
chroot_local_user=YES,锁定所有用户在自己的家目录。
(默认是不允许用户切换家目录的)
本地用户默认是有读写权限的
write_enable=NO
local_enable=NO  (这样修改后,本地用户就没有读写权限了)
 
chroot_list_enable=YES    (表示启动:锁定某些用户在自己家目录下)
chroot_list_file=/etc/vsftpd/chroot_list
(定义文件中用户列表,谁在就锁住谁,注意:一行只能写一个用户名)
创建一个目录incoming,让用户可以上传文件的过程:
让用户允许在ftp目录下上传文件,需要修改本地目录的属组,修改为ftp组,因为Ftp目录是属于root用户root组的。
 
匿名用户上传的文件属主属组属于默认属于ftp.,如果想改变,可以使用
chown_username=root(这样匿名用户上传到文件的属主属组都为root了)
/var/ftp/incoming   (这个上传目录的权限为730,属主为root,属组为ftp
修改配置文件:vsftpd.conf
anon_upload_enable=YES
anon_umask=077
chown_uploads=YES
chown_username=root 
 
max_clients      设置服务器最大接受的并发连接用户数
max_per_ip      每个ip最多连接的进程数
                                 
常用的匿名用户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   限制最大传输速率,单位为字节
 
常用的本地用户FTP配置项
local_enable=YES  是否启用本地系统用户
local_umask=022  本地用户所上传文件的权限掩码
local_root=/var/ftp  设置本地用户的FTP根目录
chroot_local_user=YES 是否将用户禁锢在主目录上
local_max_rate=0  限制最大传输速率(字节/秒)
 
vsftpd 的日志记录 vsftpd.log 里显示的文件修改时间与实际的系统时间不一致,一般都差了几个小时。这是因为默认情况下, vsftpd 使用的是 GMT 标准时间,而不是 Local Time 。
修改vsftpd 的配置文件 vsftpd.conf(让vsftpd使用localtime即可)
#vim /etc/vsftpd/vsftpd.conf
在配置文件里加入一行:
use_localtime=YES
保存之后重启 vsftpd 即可。
(注意:如果是用 xinetd 的方式来启动,要注意把配置文件中的listen参数值改为NO,否则 vsftpd 重启之后问题依旧。)
阅读(1279) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~