linux学习笔记之vsftp

Linux学习笔记之vsftp

1,FTP协议

FTP协议(file transfer protocol)即为文件传输协议,它是TCP/IP协议的一种具体应用,它工作在OSI模型的第7层,TCP模型的第4层上。它使用的是TCP传输,所以FTP建立的是一个可靠的链接。采用FTP协议可以染用户高效的从网上FTP服务器中下载大量的数据文件,以达到资源共享和传递信息的目的。

2FTP的工作原理

FTP有两个过程,一个是控制链接,一个是数据传输。FTP使用2个端口,21号端口用语发送指令给服务器以及等待服务器响应;另外20号端口用于数据传输(仅用语PORT模式)。

FTP有两种传输方式:ASCII传输模式和二进制数据传输模式。ASCII模式计算机自动调整文件内容以便另外的计算机能识别。二进制模式,已01代码的形势逐个拷贝,不会被转义,如果双方机器不一样的话,可能造成文件在远程机器上不能读取。

3FTP的工作模式

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服务器,默认的可以浏览但不能进行任何操作。

 

5vsftp的常用文件列表

/etc/vsftpd/ftpusers                  禁止登录的用户

/etc/vsftpd/vsftpd.conf                FTP的主配置文件

/etc/vsftpd/user_list                  提供一份列表,禁止与否取决于配置文件中的配置

/etc/vsftpd/chroot_list                chroot机制的用户列表,列表中的用户不能访问服务器中其他文件系统

/var/ftp/pub/                        FTP的默认的共享目录

6VSFTP中的权限配置

VSFTP中使用3中用户权限机制:匿名用户、本地用户、虚拟用户。

匿名用户:允许客户端匿名访问FTP,不使用任何验证方式,链接到/var/ftp/目录下。默认安装vsftp就可以匿名访问了。

本地用户:允许客户端使用服务器上的用户名和密码访问。默认的链接到本地用户的宿主目录即/home/下的用户的家目录。

虚拟用户:虚拟用户本身不能登录到服务器端。所有的用户都虚拟成一个用户。相对安全,可控性高。

注意:linuxftp的权限不仅和用户的设置有关还和目录的权限有关。

匿名用户的具体配置参数

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时,虚拟用户和匿名用户的权限相同

 

 

7vsftp的具体应用实施

A,企业有一台FTP和一台web服务器,ftp用于维护公司的网页内容,具体包括上传、创建文件和目录、更新网页和删除等等。公司有2个部门维护,一个网页设计部门,只能浏览,下载。一个是站务部门,可以上传,创建和删除。他们分别用aaabbb账号进行管理,他们能登入服务器但不能登入本地系统,并且将这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                  添加限制的用户

在文件中加入aaabbb用户。

#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                     配置vsftpdpam模块为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服务器。

公司1ip192.168.16.3主目录为用户的家目录,公司2ip192.168.16.2.,主目录为/var/www/html.

假设我们已经建立好了公司1ftp服务器(如上文)。现在我们要用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      为公司2ftp建立配置文件

#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服务器

测试。

 

你可能感兴趣的:(linux,ftp,职场,学习笔记,休闲)