RedHat Linux 服务器操作系统
FTP服务配置
教学目的与要求 通过本节课的学习,您应会: 掌握FTP服务器的配置和客户端的操作 熟悉FTP的工作体系 了解FTP服务器作用和传输模式
重点:vsftpd服务器配置 难点:掌握如何使用vsftpd软件包架设FTP服务器。 关键词: 上传 下载
FTP的基本概念 1、FTP协议 FTP(文件传输协议)是TCP/IP协议栈所提供的一种子协议,定义了一个远程计算机系统和本地计算机系统之间传输文件的一个标准,该子协议具体可以实现以下功能: 从客户向服务器发送文件(上传) 从服务器向客户发送文件或目录列表(下载)
2、FTP的工作体系 FTP服务至少需要监听两个端口,一个端口是控制连接端口,默认是21号端口,另一个端口是数据传输端口,用来建立数据传输通道 。具体工作过程如下: 客户机启动客户端程序,通过TCP的“三次握手”建立与服务器的连接。 服务器对客户机进行身份验证。 进行相应目录操作和数据传输。 断开连接。
2、FTP的工作体系 客户机 用户接口 客户PI 客户DTP FTP服务器 服务器PI 服务器DTP 控制连接 用户 数据连接
3、FTP的数据传输模式 Port模式(主动): 在这种模式下,首先会建立控制频道,默认值是port 21,并透过此联机下达指令。然后FTP客户端在控制连接上发出Port指令告诉服务器连接自己的什么端口来建立一个数据连接,当服务器收到这一指令后会使用20号端口连接FTP客户端指定的端口号,从而建立数据连接。 客户端先连接服务器的 21端口(命令端口),然后客户端开放一个大于1024的端口等待服务器的20端口连接,21号端口的链接建立以后,服务器就用20去连接客户端开放的端口,简单来说就是服务器主动连客户端。 在主动传输模式下,FTP的数据连接和控制连接方向相反,由服务器向客户端发起一个用于数据传输的连接。
3、FTP的数据传输模式 PORT模式(主动): FTP客户端 FTP服务端 端口1032 FTP客户端发送连接请求 端口21 双方建立会话连接 端口1033 端口20 数据传输完毕后保持会话连接 数据传输 会话终止双方连接断开
3、FTP的数据传输模式 PASV模式(被动): 在这种模式下,客户端开启大于1024的X端口连接服务器的21(命令端口),同时开启X+1端口,当21号端口连接成功后,客户端会向服务器发送PASV命令,通知服务器自己处于被动模式,服务器收到这个消息后,就会开放一个大于1024的端口Y通知客户端,客户端接到通知后就会用X+1来连接服务器的Y端口,简单的说就是客户端主动连接服务器。 在被动传输模式下,FTP的数据连接和控制连接方向一致,由客户端向服务器发起一个用于数据传输的连接。 在有防火墙的环境之下,内部FTP Client透过防火墙与外部FTP Server沟通,因为防火墙允许所有内部向外部的连接通过,而外部向内部发起的连接却有限制。 FTP Server端或FTP Client端都可以设置主动和被动模式,但采用哪种模式进行,取决于FTP Client端的设置。
3、FTP的数据传输模式 PASV模式(被动) : FTP客户端 FTP服务端 端口X FTP客户端发送连接请求 端口21 双方建立会话连接 端口Y 数据传输完毕后保持 会话连接 数据传输 会话终止双方连接断开
(1)wu-ftp--Washington University FTP 4. Linux下常见的FTP软件 (1)wu-ftp--Washington University FTP wu-ftp是历史最久的非商业FTP服务器软件之一,主要有以下特点: 可以限制最高访问人数,以维持系统的最佳运行效率 可以记录文件上传和下载的全过程 可以支持匿名FTP服务 可以支持虚拟FTP主机 可以控制不同网段及其对FTP服务器的存取权限和访问时段
4. Linux下常见的FTP软件 ( 2)proftp proftpd是在意图修改wu-ftp一些不足情况下产生的,具体有如下特点: 单配置文件,配置简单 基于单个目录的.ftpaccess设置文件,类似apache的.htaccess文件 可以设置为从xinetd启动,或者是独立ftp服务器两种运行方式 强大的log功能 支持以非root身份运行,从而减少了安全隐患 支持匿名FTP功能
( 3)vsftpd-- Very Security Ftp 4. Linux下常见的FTP软件 ( 3)vsftpd-- Very Security Ftp 是一个安全、高速、稳定的FTP服务器 可设定多个基于IP的虚拟FTP服务器 匿名FTP服务器更是十分容易 不执行任何外部程序,从而减少了安全隐患 支持虚拟用户,且支持每个虚拟用户具有独立的配置 可以设置为从xinetd启动,或者是独立FTP服务器两种运行方式 支持PAM或xinetd/tcp_wrappers的认证方式,支持带宽限制
FTP服务器配置 1、安装FTP服务的相关软件 装载第3张安装盘 #rpm –qa| grep vsftpd #rpm -ivh vsftpd-2.0.1-5.i386.rpm
2、相关文件: 1、/etc/vsftpd/vsftpd.conf //主配置文件 2、/etc/vsftpd.ftpusers //指定哪些用户不能访问FTP服务器 3、/etc/vsftpd.user_list //文件中指定的用户是否可以访问ftp服务器,由vsftpd.conf文件中的userlist_deny的取值决定,当userlist_deny=yes时不能访问FTP服务器;userlist_deny=no时,仅允tc/vsftpd.user_list中指定的用户访问FTP服务器。
vsftpd的默认配置文件 #vi /etc/vsftpd/vsftpd.conf anonymous_enable=YES //是否允许匿名ftp local_enable=YES //是否允许本地用户登录 write_enable=YES //是否开放本地用户的写权限 local_umask=022 //设置本地用户的文件的掩码,默认值为077 anon_upload_enable=YES //是否允许匿名用户上传文件 anon_mkdir_write_enable=YES //是否允许匿名用户创建新的文件夹 dirmessage_enable=YES //当切换到某个目录时,显示该目录下的.message隐含文件的内容,但需要手工创建.message文件 xferlog_enable=YES //激活上传下载日志 connect_from_port_20=YES //启用FTP数据端口的连接请求
vsftpd的默认配置文件 chown_uploads=YES chown_username=username //是否改变上传文件的属主,如果是需要输入一个系统用户名,可以把上传的文件都改成系统用户名为属主 xferlog_file=/var/log/vsftpd.log //传输日志的路径和名字默认是/var/log/vsftpd.log xferlog_std_format=YES //是否使用标准的ftp xferlog模式 idle_session_timeout=600 //设置断开不活跃session的时间 data_connection_timeout=120 //设置数据传输超时时间 nopriv_user=ftpsecure //运行vsftpd需要的非特权系统用户默认是nobody ascii_upload_enable=YES ascii_download_enable=YES //是否使用ascii码方式上传和下载文件
vsftpd的默认配置文件 ftpd_banner=Welcome to blah FTP service! //定制欢迎信息 deny_email_enable=YES banned_email_file=/etc/vsftpd.banned_emails //是否允许禁止匿名用户使用某些邮件地址,如果是,输入禁止的邮件地址的路径和文件名 chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list //是否将系统用户限制在自己的家目录下,如果选择yes那么/etc/vsftpd.chroot_list中列出的是限制的用户列表 pam_service_name=vsftpd //设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下
vsftpd的默认配置文件 userlist_enable=YES //允许/etc/vsftpd.user_list文件中的用户访问服务器,由于默认情况下userlist_deny=YES,所以/etc/vsftpd.user_list文件中所列的用户均不能访问此服务器。 listen=YES //使vsftpd处于独立启动模式 tcp_wrappers=YES //使用tcp_wrappers作为主机的访问控制方式
(1)允许匿名用户登录/var/ftp,但不能离开主目录,且只能下载不能上传。 3、默认配置文件功能说明: (1)允许匿名用户登录/var/ftp,但不能离开主目录,且只能下载不能上传。 (2)匿名用户的登录名为ftp(或anonymous),口令为一个E-mail地址。 (3)允许本地用户登录到家目录,且可离开主目录,且本地用户允许上传/下载。 (4)本地用户的登录名为本地用户名,口令为此本地用户的口令。 (5)写在文件/etc/vsftpd.ftpusers中的本地用户禁止登录。 (6)要使用户在下载文件时能够续传文件,必须保证文件对其他用户有读的权限,否则,当续传时不能读取已传的服务器上的文件。 (7)服务器使用独占方式启动,且无限制连接数。
4、启动服务 #service vsftpd start
FTP客户端的操作 1、 linux客户端 (1) ftp ftp>ftp子命令 #ftp 服务器IP地址/名称 >?|help //显示ftp内部命令的帮助信息 >![命令] //在本机中执行shell命令后回到ftp环境中 >lcd [dir] //将本地工作目录切到dir >close //中断与远程服务器的FTP会话
//下载远程主机上的多个文件 >asc //使用ascii类型传输方式 >bin //使用二进制文件传输方式 >cd dir-name //进入远程主机目录 >pwd //显示远程主机的当前工作目录 >mkdir dir-name //在远程主机中建立目录 >ls [dir-name/file-name] //显示远程目录中的内容 >get 远程文件名 [本地文件名]//下载远程主机的文件 >mget 文件名 文件名 …(或者是目录名) //下载远程主机上的多个文件
>put 本地文件 //将本地文件传送到远程FTP服务器 >mput 本地文件 本地文件…… //将多个本地文件传送到远程FTP服务器 >rename 旧文件名 新文件名 //更改远程主机文件名 >delete 文件名 //删除远程主机中的指定文件 >mdelete 文件名 //删除远程FTP服务器中的多个文件 >rmdir dir-name //删除远程FTP服务器中的指定目录 >quit/bye //退出FTP会话
2、 Windows客户端 方法一:IE 方法二:c:/>ftp 方法三:第三方软件:CuteFTP 注:所访问的目录为用户的主目录(可以修改)
vsftpd高级配置 启用ASCII传输方式(把两项前的#号去掉即可) ascii_upload_enble=yes ascii_download_enble=yes 2. 设置连接服务器后的欢迎信息 ftpd_banner=welcome to ftp service. banner_file=/var/vsftpd_banner_file
3. 配置基本的性能和安全选项 idle_session_timeout=120 //设置用户会话的空闲中断时间(秒) data_connection_timeout=60 //设置空闲的数据连接的中断时间 accept_timeout=60 connect_timeout=30 //设置客户端空闲时自动中断和激活连接时间
max_clients=200 //指明服务器总的客户并发连接数为200默认为0,即不限制。 max_per_ip=3 //指明每个ip地址最多允许开3个线程 local_max_rate=50000(50kbytes/sec) anon_max_rate=30000 //设置本地用户和匿名用户的最大传输速率 pasv_min_port=50000 pasv_max_port=60000 //设置客户端连接时的端口范围
②设置指定用户能够chroot 4、 设置本地用户能否chroot: 用户登录后能否切换到自家目录以外的目录; chroot_local_user=YES ②设置指定用户能够chroot chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list(只有/etc/vsftpd.chroot_list中的指定的用户才能执行)
①限制指定的本地用户不能访问,其他本地用户可访问 5、 配置基于本地用户的访问控制 ①限制指定的本地用户不能访问,其他本地用户可访问 userlist_enable=NO userlist_deny=YES userlist_file=/etc/vsftpd.user_list (使文件/etc/vsftpd.user_list 中指定的本地用户不能访问,而其它的本地用户可以访问;)
②限制指定的本地用户可以访问,其他本地用户不能访问 userlist_enable=YES userlist_deny=NO userlist_file=/etc/vsftpd.user_list
6、配置基于主机的访问控制; 设置hosts.allow文件 #vi /etc/hosts.allow vsftpd:192.168.5.128:DENY 说明: vsftpd在独占启动方式下支持tcp_wrappers主机访问控制方式,tcp_wrappers的主要配置文件是/etc/hosts.allow(允许)和/etc/hosts.deny(不允许),它们的格式都是: 守护进程名:主机表:ALLOW/DENY 或 守护进程名:主机表
7、#cp /usr/share/doc/vsftpd-1.1.3/vsftpd.xinetd /etc/xinetd.d/vsftpd #vi /etc/xinetd.d/vsftpd 修改:disable = no 添加配置访问的时间限制(注:与vsftpd.conf中listen=NO相对应) access_time = hour:min-hour:min 例如:access_times = 8:30-11:30 13:00-18:00 表示只在这个时间段才能访问
只允许指定的主机访问 only_from <主机表> 如:only_from 192.168.6.0 指定不能访问的主机 no_access <主机表> 指定连接失败时显示的信息 banner_fail = 文件名 如: banner_fail = /etc/vsftpd.busy_banner
假设test1 所能使用的最高速度为50KBytes/s,test2 所能使用的最高速度为500KBytes/s 针对不同的使用者限制不同的速度: 假设test1 所能使用的最高速度为50KBytes/s,test2 所能使用的最高速度为500KBytes/s #vi/etc/vsftpd/vsftpd.conf 内容增加一行: user_config_dir=/etc/vsftpd/userconf #mkdir –p /etc/vsftpd/userconf #touch /etc/vsftpd/userconf/test1 #vi /etc/vsftpd/userconf/test1 内容增加一行:local_max_rate=250000 #touch /etc/vsftpd/userconf/test2 #vi /etc/vsftpd/userconf/test2 内容增加一行:local_max_rate=500000 #service vsftpd restart
配置实例 利用VSFTPD配置一台支持本地用户和虚拟用户登录的FTP服务器,具体要求如下: 支持本地用户和虚拟用户登录,不允许匿名用户登录 允许本地用户任意写入 锁定本地用户的用户主目录 建立虚拟用户vftp1,vftp2都对应本地用户guest,且虚拟用户在用户主目录中可以写入,但不能删除 配置过程: #vi /etc/vsftpd/vsftpd.conf #standalone mode listent=YES max_clients=200 max_per_ip=4 tcp_wrappers=YES #access rights anonymous_enable=YES local_enable=YES write_enable= YES anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO #security anon_world_readable_only= YES //关闭匿名用户的浏览权限 connect_from_port_20= YES hid_ids= YES pasv_min_port=5000 pasv_max_port=6000 #feature xferlog_enable= YES ls_recurse_enable=NO ascii_download_enable=NO #performance idle_session_timeout=120 data_connection_timeout=300 accept_timeout=60 connect_timeout=60 anon_max_rate=50000 ftpd_banner=This FTP server is anonymous only!!!
设置客户端连接时的端口为5000-6000 最大空闲会话时间长度为600秒 设置空闲数据连接的中断时间为200秒 设置客户端空闲时的自动中断时间为100秒和激活连接的时间为30秒 本地用户的最大传输速率为2MB/s 使用独占启动方式,侦听192.168.5.1接口的21号端口 设置服务器的并发连接总数为200 每个客户机的并发连接总量为5 允许192.168.5.0/24网段内的主机访问
配置过程: 1. 安装相关软件 #rpm -ivh vsftpd-1.1.3-8.i386.rpm 2. 修改/etc/vsftpd/vsftpd.conf文件 #vi /etc/vsftpd/vsftpd.conf 修改内容如下: anonymous_enable=no local_enable=yes guest_enable=yes guest_username=guest write_enable=yes chroot_local_user=yes pam_service_name=ftp
idle_session_timeout=600 data_connection_timeout=200 accept_timeout=100 connect_timeout=30 local_max_rate=20000 pasv_min_port=5000 pasv_max_port=6000 listen=yes listen_address=192.168.5.1 listen_port=21
3. 建立相关用户 #useradd guest #passwd guest #chmod 1777 /home/guest //建立虚拟用户所对应的本地用户 #vi /etc/vsftpd/vlogin.txt //建立虚拟用户文件 添加如下内容: vftp1 //用户名 ftp1passwd //密 码 vftp2 ftp2passwd #db_load -T–t hash -f /etc/vsftpd/vlogin.txt /etc/vsftpd/vlogin.db //生成口令库文件,运行db_load之前先安装db4-utils的RPM包(2#盘) #chmod 600 /etc/vsftpd/vlogin.db //修改口令库文件的权限
4.设置PAM验证 #cp /etc/pam.d/vsftpd /etc/pam.d/ftp #vi /etc/pam.d/ftp 添加如下内容: auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vlogin account required /lib/security/pam_userdb.so db=/etc/vsftpd/vlogin
5.设置主机访问控制 #vi /etc/hosts.allow 添加如下内容: vsftpd:192.168.5.0/24:ALLOW 6.启动服务 #service vsftpd start
Vsftpd配置实例 Vsftpd的实现有三种方式 1、匿名用户形式: 在默认安装的情况下,系统只提供匿名用户访问 2、本地用户形式: 以/etc/passwd中的用户名为认证方式 3、虚拟用户形式: 支持将用户名和口令保存在数据库文件或数据库服务器中。相对于FTP的本地用户形式来说,虚拟用户只是FTP服务器的专有用户,虚拟用户只能访问FTP服务器所提供的资源,这大大增强系统本身的安全性。相对于匿名用户而言,虚拟用户需要用户名和密码才能获取FTP服务器中的文件,增加了对用户和下载的可管理性。对于需要提供下载服务,但又不希望所有人都可以匿名下载;既需要对下载用户进行管理,又考虑到主机安全和管理方便的FTP站点来说,虚拟用户是一种极好的解决方案。
1、匿名用户形式实现 #vi /etc/vsftpd/vsftpd 1、匿名用户形式实现 #vi /etc/vsftpd/vsftpd.conf listen=YES //使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 。 listen_port=21 //监听21端口 tcp_wrappers=YES anon_root=/var/ftp //设置匿名用户本地目录,和ftp用户目录必须相同。 anonymous_enable=YES //允许匿名访问,这是匿名服务器必须的 write_enable=YES //全局配置可写 no_anon_password=YES //匿名用户login时不询问口令 anon_umask=077 //匿名用户上传的文件权限是-rw---- anon_upload_enable=YES //允许匿名用户上传文件 anon_mkdir_write_enable=YES //允许匿名用户建立目录 anon_other_write_enable=YES //允许匿名用户具有建立目录,上传之外的权限,如重命名,删除。
1、匿名用户形式实现 dirmessage_enable=YES //当使用者转换目录,则会显示该目录下的 1、匿名用户形式实现 dirmessage_enable=YES //当使用者转换目录,则会显示该目录下的.message信息 xferlog_enable=YES //记录使用者所有上传下载信息 xferlog_file=/var/log/vsftpd.log //将上传下载信息记录到/var/log/vsftpd.log中 xferlog_std_format=YES //日志使用标准xferlog格式 idle_session_timeout=600 //客户端超过600S没有动作就自动被服务器踢出 data_connection_timeout=120 //数据传输时超过120S无动作被服务器踢出 chown_uploads=YES chown_username=daemon //上传文件的属主 ftpd_banner=Welcome to d-1701.com FTP service. //FTP欢迎信息 anon_max_rate=80000 //这是匿名用户的下载速度为80KBytes/s check_shell=NO //不检测SHELL
2、本地用户形式实现 # vi /etc/vsftpd/vsftpd 2、本地用户形式实现 # vi /etc/vsftpd/vsftpd.conf listen=YES listen_port=21 tcp_wrappers=YES anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 //本地用户文件上传后的权限是-rw-r-r anon_upload_enable=NO anon_mkdir_write_enable=NO dirmessage_enable=YES xferlog_enable=YES xferlog_file=/var/log/vsftpd.log xferlog_std_format=YES connect_from_port_20=YES
2、本地用户形式实现 chroot_local_user=YES //限制用户在自己的主目录 #local_root=/ftp //可以指定所有本地用户登陆后的目录,如果不设置此项,用户都会登陆于自己的主目录 local_max_rate=500000 //本地用户的下载速度为500KBytes/s idle_session_timeout=600 data_connection_timeout=120 nopriv_user= nobody //设定服务执行者为nobody,vsftpd推荐使用一个权限很低的用户,最好是没有家目录(/dev/null),没有登陆shell(/sbin/nologin),系统会更安全 ftpd_banner=Welcome to my FTP Server! check_shell=NO userlist_enable=YES userlist_deny=YES userlist_file=/etc/vsftpd.denyuser 以上三条设定不允许登陆的用户,用户列表存放在/etc/vsftpd.denyuser中,一行一个帐号
3、虚拟用户形式实现(db及mysql形式) 对于用DB库存储用户名及密码的方式来说: (1)查看系统是否有相应软件包 # rpm –qa | grep db4 db4-devel-4.2.52-7.1 db4-4.2.52-7.1 db4-utils-4.2.52-7.1 (2)建立一个logins.txt的文件,单行为用户名,双行为密码 # vi /home/logins.txt xuchen 12345 (3)建立数据库文件并设置文件属性 # db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db # chmod 600 /etc/vsftpd_login.db
3、虚拟用户形式实现(db及mysql形式) 对于用DB库存储用户名及密码的方式来说: (4)建立认证文件 # vi /etc/pam 3、虚拟用户形式实现(db及mysql形式) 对于用DB库存储用户名及密码的方式来说: (4)建立认证文件 # vi /etc/pam.d/vsftpd 插入如下两行 auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login account required /lib/security/pam_userdb.so db=/etc/vsftpd_login (5)建立一个虚拟用户 # useradd -d /home/vsftpd -s /sbin/nologin vsftpd # ls -l /home/vsftpd drwx------ 3 vsftpd vsftpd 1024 Jun 6 22:55 /home/vsftpd/
3、虚拟用户形式实现(db及mysql形式) 对于用DB库存储用户名及密码的方式来说: 6)编写配置文件 # vi /etc/vsftpd/vsftpd.conf listen=YES listen_port=21 tcp_wrappers=YES anonymous_enable=NO local_enable=YES //PAM方式此处必须为YES write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO chroot_local_user=YES guest_enable=YES guest_username=vsftpd //这两行的意思是采用虚拟用户形式 virtual_use_local_privs=YES //虚拟用户和本地用户权限相同 pasv_enable=YES //建立资料联机采用被动方式 pasv_min_port=30000 //建立联机所可以使用port范围的上界,0表示任意。 pasv_max_port=30999 //建立联机所可以使用port范围的下界,0表示任意。
3、虚拟用户形式实现(db及mysql形式) 对于用DB库存储用户名及密码的方式来说: (7)启动程序 # service vsftpd restart (8)测试连通及功能 # vi /home/vsftpd/test //建立一个文件,内容如下 1234567890 # chown vsftpd.vsftpd /home/vsftpd/test # ftp 127.0.0.1 用户名为xuchen,密码为12345可以连接到FTP服务器,看不到文件列表,但可以下载已知文件名的文件,不能上传文件,非常安全! 如果我们需要用户看到文件,在配置文件中加入如下语句: anon_world_readable_only=NO //匿名登入者不能下载可阅读的档案。
3、虚拟用户形式实现(db及mysql形式) 如果需要让用户上传文件和下载文件分开: # vi /home/logins 3、虚拟用户形式实现(db及mysql形式) 如果需要让用户上传文件和下载文件分开: # vi /home/logins.txt xuchen 12345 upload 45678 //首先建立虚拟用户upload,密码为45678 # db_load -T -t hash -f /home/logins.txt /etc/vsftpd_login.db //更新数据文件 # mkdir /home/vsftpd/upload # vi /etc/vsftpd/vsftpd.conf 加入如下语句 user_config_dir=/etc/vsftpd_user_conf # mkdir /etc/vsftpd_user_conf
3、虚拟用户形式实现(db及mysql形式) # vi /etc/vsftpd_user_conf/upload 文件内容如下 local_root=/home/vsftpd/upload write_enable=YES anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES anon_max_rate=60000 # chmod 700 /home/vsftpd/upload # chown vsftpd.vsftpd /home/vsftpd/upload/ 这样,xuchen用户可以下载/home/vsftpd里的文件及upload里的文件,而upload用户可以上传和下载/home/vsftpd/upload文件夹的东西,但不能到/home/vsftpd里下载文件,实现了分用户上传和下载
3、虚拟用户形式实现(db及mysql形式) 对于用Mysql库存储用户名及密码的方式来说: (1)建立一个库并设置相应权限 # mysql –p mysql>create database ftpd; mysql>use ftpd; mysql>create table user(name char(20) binary,passwd char(20) binary); mysql>insert into user (name,passwd) values (‘test1’,‘12345’); mysql>insert into user (name,passwd) values (‘test2’,‘54321’); mysql>grant select on ftpd.user to ftpd@localhost identified by ‘123456’; mysql>flush privileges; 刷新权限设置 mysql>quit (2)下载libpam-mysql进行安装编译 # tar xzvf pam_mysql-0.5.tar.gz # cd pam_mysql # make # cp pam_mysql.so /lib/security
3、虚拟用户形式实现(db及mysql形式) 对于用Mysql库存储用户名及密码的方式来说: (3)建立PAM认证信息 # vi /etc/pam.d/ftp ,内容如下 auth required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0 account required /lib/security/pam_mysql.so user=ftpd passwd=123456 host=localhost db=ftpd table=user usercolumn=name passwdcolumn=passwd crypt=0 注意: crypt= n crypt=0: 明文密码 crypt=1: 使用crpyt()函数(对应SQL数据里的encrypt(),encrypt()随机产生salt) crypt=2: 使用MYSQL中的password()函数加密 crypt=3:使用md5的散列方式 (4)建立本地虚拟用户 # useradd -d /home/ftpd -s /sbin/nologin ftpd
3、虚拟用户形式实现(db及mysql形式) 对于用Mysql库存储用户名及密码的方式来说: 5)修改vsftpd 3、虚拟用户形式实现(db及mysql形式) 对于用Mysql库存储用户名及密码的方式来说: 5)修改vsftpd.conf文件: # vi /etc/vsftpd.conf anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES chroot_local_user=YES guest_enable=YES guest_username=ftpd listen=YES listen_port=21 pasv_enable=YES pasv_min_port=30000 pasv_max_port=30999 anon_world_readable_only=NO virtual_use_local_privs=YES user_config_dir=/etc/vsftpd_user_conf
归纳与总结 通过本节课学习我们要掌握以下内容: FTP服务器的配置和客户端的操作 FTP的工作体系 FTP服务器作用和传输模式
问题交流