今天我学习FTP服务,我用的是RHEL 6.1版的系统。
FTP服务于SAMBA服务的共同点是都是文件服务,但FTP可以在路由间传递,而SAMBA只能在同一个子网内使用。
通常情况下,FTP服务器的监听端口号21是用来等待控制连接建立请求。而数据连接端口号的选择依赖于控制连接上命令。通常是客户发送一个控制消息来指定客户监听并等待服务器端发送数据连接建立请求的端口号。
对数据传输和控制命令传输来使用不同的独立连接有如下优点:两个连接可以选择不同的合适服务质量,如:对控制连接来说需要更小的延迟时间,对数据连接来说需要更大的数据吞吐量;而且可以避免数据流中命令的透明性问题。
首先需要安装FTP服务器的软件包,这里我使用的是VSFTP。
RHEL 6.1的光盘里面有一个vsftpd*的软件包。那就直接安装啦。
#rpm -hiv vsftpd*
另外安装一个ftp客户端。#rpm -hiv ftp*
VSFTP有三种访问方式:匿名;本地用户;虚拟用户。
匿名访问:
VSFTP的配置文件均在/etc/vsftpd/目录下。该目录下有4个文件:
1、ftpusers 该文件的注释是:the users that are not allowd to login via ftp【以下用户不能登录ftp】
2、user_list 该文件的注释是:if userlist_deny=no,only allow users in this file.if userlist_deny=yes(default),nerver allow users in this file,and do not even prompt for a password.【如果userlist_deny是禁止的,那么只有以下用户允许登录ftp;如果userlist_deny是允许的,那么以下用户是禁止登录ftp的。该用户名单与ftpusers中列出的名单是一致的。】
3、vsftpd.conf 该文件是vsftp的配置文件。
4、vsftpd_conf_migrat.sh
默认的ftp配置项如下:
anonymous_enalbe=yes 允许匿名访问
local_enable=yes 允许本地用户访问
write_enbale=yes 启用本地用户写入权限
local_umask=022 本地用户所上传权限的掩码(----w--w-)
dirmessage_enable=yes 登录时启用消息提示
xferlog_enable=yes 开启日志记录
connet_from_port_20=yes 20号端口用于数据传输
xgerlog_std_format=yes
listen=yes 使用standalone(独立)启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式)
pam_service_name=vsftpd
userlsit_enable=yes 启用user_list列表
tcp_wrappers=yes 支持tcp_wrappers(tcp封装)
启动vsftp服务器
#/etc/rc.d/init.d/vsftpd start 或者 #service vsftpd start/stop/reload
临时关闭selinux
#setenforce 0
临时关闭防火墙
#sudo service iptables stop
测试
#ftp 192.168.0.1
230 longin successful
本地用户访问:
#adduser ztt 新建一个用户ztt
#passwd ztt 设置用户ztt的密码
#vim vsftpd.conf 编辑vsftp配置文件
该文件默认本地用户可以访问vsftp服务器(local_enable=yes)
测试
[root@localhost ~]# ftp 192.168.0.1
Connected to 192.168.0.1 (192.168.0.1).
220 (vsFTPd 2.2.2)
Name (192.168.0.1:root): ztt
331 Please specify the password.
Password:
230 Login successful. 登录成功
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> dir
227 Entering Passive Mode (192,168,0,1,44,131).
150 Here comes the directory listing.
226 Directory send OK.
在文件ftpusers中添加一个用户ztt
测试
[root@localhost vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (127.0.0.1:root): ztt
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
这时ztt用户是无法登录vsftp服务器的。
在配置文件vsftpd.conf中添加参数:chroot_local_user=yes, 将本地用户限定在自家目录中。
还可以限定ztt用户的本地登录,通过修改/etc/passwd文件来限定。把ztt用户从ftpusers中释放出来,之后登陆ftp, 可以发现ztt用户访问其实是/home/ztt。
如果设置local_root=/var/home,那么访问的是/var/home文件,而不能访问/home/ztt目录了。
虚拟用户访问
在学习过程中我参考一些文章(见附),在此博文中会部分引用原文精彩部分,同时对文章作者表示感谢。
附:
阅读(1567) | 评论(0) | 转发(0) |