FTP文件传输服务
FTP连接方式
控制连接:21
数据连接:20 (只有在主动模式下才使用)
FTP连接模式
主动模式
被动模式
FTP传输模式
文本模式
二进制模式
(一般使用二进制模式传输时,文件不容易出错,特别在交换机和路由器上使用时,可使用binary切换成二进制模式)
FTP用户类型
系统用户
匿名用户(anonymous; ftp)
虚拟用户
在linux主机上是通过vsftpd 软件包实现的.
主程序:/usr/sbin/vsftpd
服务名: vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
黑名单:/etc/vsftpd/ftpusers
控制列表: /etc/vsftpd/user_list
和samba服务一样,vsftp配置格式:配置项= 参数
常用配置项:
全局
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地址的并发连接
connect_from_port_20=YES:允许服务器主动模式
pasv_enable=YES:允许被动模式
pasv_max(min)_port=2460:设置被动模式最大(最小)端口号
tcp_wrappers=YES:是否启用TCP_Wrappers主机访问控制
本地
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的FTP根目录
chroot_local_user=YES:是否将用户禁锢在主目录
local_max_rate=0:限制最大传输速率(字节/秒)
匿名
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:限制最大传输速率(字节/秒)
安装启动vsftpd服务后,就可以通过匿名和系统用户进行访问了,匿名用户访问的目录是/var/ftp,匿名用户是以系统用户ftp登陆的,/var/ftp是ftp的宿主目录。而使用普通系统系统用户进行访问时,默认访问的是该用户的宿主目录。
可以根据需要编辑配置文件vsftpd.conf,从而设置访问的权限。和samba服务陪置一样,每次配置vsftpd.conf,都需要重启或重新加载服务才能生效
servicevsftpd{ restart | reload }
基于安全考虑,FTP根目录的权限不允许有写入权限,否则在访问时会报错。
建立虚拟用户
建立虚拟用户数据库需使用db_load工具,由db4-utils软件包提供,需要先安装。
1.创建用户名和密码列表
vi /etc/vsftpd/vusers.list
tom
123
jack
456
......
(用户名和密码分行显示,每一行代表一个用户或密码,1、3、5...奇数行为用户名,2、4、6...偶数行为密码)
2.创建Berkeley DB格式的数据库文件 (加密的)
cd /etc/vsftpd(切换到vsftpd目录,方便操作)
db_load -T -t hash -f vusers.list vusers.db
-T :允许非Berkeley DB应用程序使用
-t :指定加密算法
-f :指定数据源文件
( vusers.db为生成的文件)
为了提高安全性,应将users.db文件权限设置文600,且删除原有的vuser.list文件,用户的宿主目录权限默认为700,所以需要调整权限以允许访问。
3.添加虚拟用户映射帐号
useradd -d /var/vsftp -s/sbin/nologin tom
-d :指定用户家目录,即FTP的根目录
-s :此帐号无需登录shell
(vsftpd配置中load_root、anon_root配置项需注释或删除)
4.为虚拟用户建立PAM认证文件
vi /etc/pam.d/vsftpd.vu
5.修改vsftpd配置,添加虚拟用户支持
guest_enable=YES--启用用户映射
guest_username=tom--指定映射系统用户名
pam_service_name=vsftpd.vu --指定PAM认证文件
6.为不同的用户创建独立的配置目录和文件
以上步骤已经可以重启服务进行虚拟用户进行访问了,但若要实现不同的虚拟用户有不同的访问权限,可以为每个虚拟用户创建各自的配置文件来实现。
mkdir /etc/vsftpd/vusers_dir--创建目录
在vsftpd.conf配置文件中指定
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers_dir
在/etc/vsftpd/vusers_dir/目录中添加与虚拟用户同名的配置文件,在vsftpd服务中,虚拟用户被作为匿名用户进行处理,因此配置项一般以anon_ 开头。
例:
vi /etc/vsftpd/vusers_dir/tom
anon_upload_enable=YES
anon_mkdir_write_enable=YES
注:在vsftpd.conf配置文件中添加user_config_dir配置项后,应该给每个用户都建立一个独立的配置文件(可以是空文件),否则该用户可能会无法登录。