Linux学习笔记之vsftp
1,FTP协议
FTP协议(file transfer protocol)即为文件传输协议,它是TCP/IP协议的一种具体应用,它工作在OSI模型的第7层,TCP模型的第4层上。它使用的是TCP传输,所以FTP建立的是一个可靠的链接。采用FTP协议可以染用户高效的从网上FTP服务器中下载大量的数据文件,以达到资源共享和传递信息的目的。
2,FTP的工作原理
FTP有两个过程,一个是控制链接,一个是数据传输。FTP使用2个端口,21号端口用语发送指令给服务器以及等待服务器响应;另外20号端口用于数据传输(仅用语PORT模式)。
FTP有两种传输方式:ASCII传输模式和二进制数据传输模式。ASCII模式计算机自动调整文件内容以便另外的计算机能识别。二进制模式,已01代码的形势逐个拷贝,不会被转义,如果双方机器不一样的话,可能造成文件在远程机器上不能读取。
3,FTP的工作模式
FTP支持两种模式,一种是standard也叫主动方式即PORT方式,一种是PASSIVE也叫被动方式。
PORT模式
FTP客户端选择一个端口(1024以上)和服务器的21端口连接,通过这个21端口发送命令,客户端需要接受数据时在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接受数据。在传输数据时,服务器通过自己的20号端口连接客户端的指定端口发送书记。客户端和服务器端必须建立一个新的连接来传输数据。
PASSIVE模式
建立通道的时候和standard模式类似,但建立连接后发送的是PASV命令。服务器接到PASV名利后随机打开一个高端端口(大于1024)并且通知客户端在这个端口上传输数据。客户端连接此端口,然后进行传输。这时候无需建立新的链接。
4.linux中的FTP服务器的假设。
在linux中默认集成的是vsftp软件包。
服务端
#rpm –qa | grep vsftp 查看是否安装了改软件包
#rpm –ivh vsftp-3.0…… 如果没有安装则安装该软件包
#service vsftpd start 启动FTP服务器
……………………………………………………………………
客户端
#ftp IP 在远程计算机上登录服务器
输入用户名:anonymous或者ftp 可以匿名登录远程的ftp服务器,默认的可以浏览但不能进行任何操作。
5,vsftp的常用文件列表
/etc/vsftpd/ftpusers 禁止登录的用户
/etc/vsftpd/vsftpd.conf FTP的主配置文件
/etc/vsftpd/user_list 提供一份列表,禁止与否取决于配置文件中的配置
/etc/vsftpd/chroot_list chroot机制的用户列表,列表中的用户不能访问服务器中其他文件系统
/var/ftp/pub/ FTP的默认的共享目录
6,VSFTP中的权限配置
VSFTP中使用3中用户权限机制:匿名用户、本地用户、虚拟用户。
匿名用户:允许客户端匿名访问FTP,不使用任何验证方式,链接到/var/ftp/目录下。默认安装vsftp就可以匿名访问了。
本地用户:允许客户端使用服务器上的用户名和密码访问。默认的链接到本地用户的宿主目录即/home/下的用户的家目录。
虚拟用户:虚拟用户本身不能登录到服务器端。所有的用户都虚拟成一个用户。相对安全,可控性高。
注意:linux中ftp的权限不仅和用户的设置有关还和目录的权限有关。
匿名用户的具体配置参数
anonymous_enable=YES 是否启用匿名用户模式
no_anon_password=YES 匿名用户登录不使用密码
anon_upload_enable=YES 开启匿名用户上传
anon_world_readable_only=YES 开启匿名用户下载
anon_mkdir_write_enable=YES 控制匿名用户创建目录和写入的权限。
anon_other_write_enable=YES 控制匿名用户修改、重命名和删除的权限
本地用户的具体配置参数
write_enable=YES 开启用户的写权限包括上传、删除、重命名
local_umask=022 默认的上传文件的mask目录为755,文件为644
user_config_dir=…. 设置的用户的单独配置文件,虚拟用户中常用
userlist_enable=YES 现在这你的用户不能访问
chroot_local_user=YES 将用户根目录限制在家目录中
chroot_list_enable=YES 开启chroot列表功能
chroot_list_file=/etc/vsftpd/chroot 用户列表文件路径,文件中的用户不能访问服务器其他目录。
虚拟用户具体配置参数
pam_service_name=vsftpd 使用pam认证在/etc/pam.d/vsftpd
guest_enable=YES 开启虚拟用户
guest_username=用户名 设置用来映射的虚拟用户
virtual_use_local_privs=YES 改参数为YES则虚拟用户也本地用户权限相同。为NO时,虚拟用户和匿名用户的权限相同
7,vsftp的具体应用实施
A,企业有一台FTP和一台web服务器,ftp用于维护公司的网页内容,具体包括上传、创建文件和目录、更新网页和删除等等。公司有2个部门维护,一个网页设计部门,只能浏览,下载。一个是站务部门,可以上传,创建和删除。他们分别用aaa和bbb账号进行管理,他们能登入服务器但不能登入本地系统,并且将这2个账号的根目录限制为/var/www/html,不能进入改目录以外的任何目录。
#useradd –s /sbin/nologin aaa 新建用户并且不能登录本机
#useradd –s /sbin/nologin bbb
#vim /etc/vsftpd/vsftpd.conf 修改ftp配置文件
Anonymous_enable=NO 关闭匿名用户
Local_enable=YES 开启本地用户登录
Local_root=/var/www/html 修改上传目录
Chroot_list_enable=YES 限制用户根目录为家目录
Chroot_list_file=/etc/vsftpd/chroot_list 设置限制用户列表
#touch /etc/vsftpd/chroot_list 添加限制的用户
在文件中加入aaa和bbb用户。
#chown aaa:aaa /var/www/html 修改html目录为aaa用户和组
#chmod 775 /var/www/html 其他用户只有只读和执行权限。
进行测试。完毕。
B,虚拟用户的配置。
用户1只允许上传。用户2可以上传,创建目录等等。
要使用虚拟用户,需要使用pam进行认证。需要使用db_load生成数据库文件,如果该命令无效,请先安装db4-utils……rpm包,获得该命令。
#vim ftpuser.txt 编辑用户名和账号 注意:必须为偶数。
Liran
123
Hehe
456
#db_load –T –t hash –f ftpuser.txt /etc/vsftpd/vsftpd_virtual.db 生成db数据库文件
#chmod 600 /etc/vsftpd/vsftpd_virtual.db 修改数据文件权限
#vim /etc/pam.d/vsftpd.vu 创建pam.d的认证文件,在文件中加入以下2行配置
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtual
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_virtual
#chmod –R 500 /var/ftp/share/ 其他用户rx
#chmod –R 700 /var/ftp/vip/ 其他用户rwx
#vim /etc/vsftpd/vsftpd.conf
Anonymous_enable=NO 关闭匿名用户
Local_enable=YES 开启本地用户
Chroot_local_user=YES 限制用户家目录
Pam_service_name=vsfppd.vu 配置vsftpd的pam模块为vsftpd.vu
User_confi_dir=/etc/vsftpd/vuserconfig 设置用户的配置文件目录
Max_clients=300 设置ftp用户的最大客户端数量为300
Max_per_ip=30 设置最大的IP地址连接为30
在/etc/vsftpd/建立vuserconfig目录,再在目录中建立分别用户的配置文件。公共账号
/etc/vsftpd/vuserconfig/ftp文件中添加入用户的配置参数
Guest_enable=yes; 设置开启虚拟账号
Guest_username=liran; 设置虚拟账号名
Anon_world_readable_only=no; 不允许用户浏览服务器的文件系统
Anon_max_rate=50000; 限定传输速率为50KB/S 一般在80%--120%间浮动
VIP账号/etc/vsftpd/vuserconfig/ftp文件中配置参数如下。
Guest_enable=yes;
Guest_username=hehe;
Anon_world_reandable_only=no;
Write_enable=yes; 开启写权限
Anon_mkdir_write_enable=yes; 开启创建目录权限
Anon_upload_enable=yes; 开启上传权限
Anon_max_rate=100000; 限定传输速率100KB/s
#service vsftpd restart 重启ftp服务器使配置生效。
测试,完毕。
C,基于IP的虚拟的vsftp服务器
在一台ftp服务器上又多个公司的ftp服务器,使他们通过不同的IP访问各自的ftp服务器。
公司1的ip为192.168.16.3主目录为用户的家目录,公司2的ip为192.168.16.2.,主目录为/var/www/html.
假设我们已经建立好了公司1的ftp服务器(如上文)。现在我们要用vsftp软件包再虚拟一个ftp服务器以供公司2进行使用。
#netconfig eth0:0 编辑公司2的网络地址IP
设置它的网络地址未192.168.16.2 ,netmask 255.255.255.0 gateway 192.168.16.1
#service network restart 重启网络服务使配置生效
#mkdir –p /var/www/html 建立公司2的家目录
#useradd –s /sbin/nologin ftp2 建立公司2的用户
#cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf 为公司2的ftp建立配置文件
#vim /etc/vsftpd/vsftpd.conf 在公司1ftp配置文件中添加上如下的内容
Listen_address=192.168.16.3 设置监听端口
#vim /etc/vsftpd/vsftpd2.conf
Listen_address=192.168.16.2 设置监听端口在16.2上
ftp_username=ftp2 设置登录的用户
pam_service_name=vsfptd 设置pam认证文件
local_root=/var/www/html 设置登录主目录。
#service vsftpd restart 重启ftp服务器
测试。