Linux网络服务与shell脚本——Linux网络设置与基础服务3(FTP)

                             第一章 Linux网络设置与基础服务

五、FTP服务
1、FTP服务基础
File Transfer Protocol,文件传输协议:需要由服务端软件、客户端软件两个部分共同实现文件传输功能。FTP可跨平台跨网段使用,samba只能支持局域网。
(1)FTP连接及传输模式
①FTP服务使用TCP的20/21端口与客户端进行通信。20端口用于建立数据连接,并传输文件数据;21端口用于建立控制连接,并传输FTP控制命令
主动模式服务器主动发起数据连接。首先由客户端想服务端的21端口建立FTP控制连接,当需要传输数据时,客户端已PORT命令告知服务器“我打开了某端口,你过来接我”,于是服务器从20端口向客户端的该端口发送请求并建立数据连接
被动模式服务器被动等待数据连接。如果客户机所在网络防火墙进制主动模式,通常会使用被动模式。首先由客户端想服务端的21端口建立FTP控制链接,当需要数据传输时,服务器以PASV命令告知客户端“我打开了某端口,你过来接我”,于是客户端想服务器的该端口(非20)发送请求并建立数据连接
文本模式:又称ASCII(美国信息交换标准码)模式,在传输文件时使用ASCII标准字符序列,一般只用于纯文本文件的传输
二进制模式:又称为Binary模式。它不会转换文件中的字符序列,更适合传输程序、图片等非纯文本字符的文件。(使用二进制传输更有效率,大多数FTP客户端工具可以根据文件类型自动选择文件传输模式,而无需用户指定)
(1)FTP用户类型
匿名用户anonymous或ftp
本地用户账号密码信息等保存在passwd、shadow中
虚拟用户使用独立的账号密码文件
(2)常见的FTP服务器程序
①IIS、Serv-U
②wu-ftpd、Proftpd
③vsftpd(Very Secure FTP Daemon)
(3)常见的FTP客户端程序
①ftp命令
②cuteFTP、flashfxp、leapftp、filezilla
③gftp、kuftp


2、vsftpd
(1)配置文件
常用全局配置项
1)listen=YES是否以独立运行的方式监听服务
2)listen_address=192.168.4.1:设置监听的IP地址
3)listen_port=21设置监听FTP服务的端口
4)write_enable=YES写入权限
5)dowload_enable=YES是否允许下载
6)userlist_enable=YES是否启用user_list列表文件
7)userlist_deny=YES是否禁用user_list中的用户
8)max_clients=0限制并发客户端连接数
9)max_per_ip=0限制同一IP地址的并发连接数
常用的匿名配置项
1)anonymous_enable=YES启用匿名访问
2)anon_umask=022匿名用户所上传文件的权限掩码
3)anon_root=/var/ftp匿名用户的FTP根目录
4)anon_uoload_enable允许上传
5)anon_mkdir_write_enable允许创建目录
6)anon_other_write_enable允许删除
7)anon_max_rante=0限制最大传输速率(字节/秒)
常用的本地用户配置
1)local_enable=YES开启本地用户访问
2)local_umask用于设置非匿名用户上传文件的umask值,默认值为022
3)local_root用于指定所有非匿名用户的根目录,默认情况,FTP会将各用户引导到各自的家目录
4)chroot_local_user=YES是否将用户禁锢在主目录
5)local_max_rate=0限制最大传输速率
配置项对照表
1)accept_timeout=60用于设置被动连接的超时时间(单位:秒)。默认值为60。
2)allow_anon_ssl=YES|NO:是否允许匿名用户通过SSL连接(如果设置为YES,则ssl_enable也必须设置为YES)。默认值为NO。
3)anon_max_rate=0:用户限制匿名用户的传输速度(单位:Byte/s)。默认值为0(表示无限制)。
4)anon_mkdir_write_enable=YES|NO:是否允许匿名用户创建目录(如果设置为YES,则write_enable也必须设置为YES)。默认值为NO。
5)anon_other_write_enable=YES|NO:是否允许匿名用户删除和重命名文件(如果设置为YES,则write_enable也必须设置为YES)。默认值为NO。
6)anon_umask=077:用于设置匿名用户上传文件的umask值。默认值为077。
7)anon_upload_enable=YES|NO:是否允许匿名用户上传文件(如果设置为YES,则write_enable也必须设置为YES)。默认值为NO。
8)anon_world_readable_only=YES|NO:默认值为YES。
9)anonymous=YES|NO:是否允许匿名用户登录。默认值为YES。
10)ascii_download_enable=YES|NO:是否允许下载文件时使用ASCII传输模式。默认值为NO。
11)ascii_upload_enable=YES|NO:是否允许上传文件时使用ASCII传输模式。默认值为NO。
12)async_abor_enable=YES|NO:是否允许客户端使用sync等命令。默认值为NO。
13)chown_uploads=YES|NO:是否改变匿名用户上传文件后文件的属主。默认值为NO。
14)chown_username=root:用于设置匿名用户上传文件后文件的属主(只有chown_uploads设置为YES时该参数才生效)。默认值为root。
15)chroot_list_enable=YES|NO:如果设置为YES,则chroot_local_user也必须为YES,表示只有在列表中的用户能离开家目录,如果设置为NO,则表示不启用列表。默认值为NO。
16)chroot_list_file=/etc/vsftpd/chroot_list:用于设置列表的路径。默认值为/etc/vsftpd/chroot_list。
17)chroot_local_user=YES|NO:是否将本地用户控制在家目录中。默认值为NO。
18)connect_from_port_20=YES|NO:是否使用20端口来传输数据。默认值为NO。
19)connect_timeout=60:用于设置主动连接的超时时间(单位:秒)。默认值为60。
20)data_connection_timeout=300:用于设置数据传输的超时时间(单位:秒)。默认值为300。
21)deny_file:用于限制上传文件的类型,例如deny_file={*.mp3,*.exe}。无默认值。
22)dirlist_enable=YES|NO:是否允许用户使用dir之类的列目录命令。默认值为YES。
23)dirmessage_enable=YES|NO:是否在用户切换目录时显示欢迎信息,如果设置为YES,则需要在每个需要显示欢迎信息的目录下创建名为.message的文件,并在里面输入欢迎信息才会显示。默认值为NO。
24)download_enable=YES|NO:是否允许用户下载文件。默认值为YES。
25)ftp_data_port=20:用于设置数据传输端口。默认值为20。
26)ftpd_banner:指定登录到FTP时的欢迎信息。无默认值。
27)guest_enable=YES启用虚拟用户访问
28)guest_username=ftpusers设置映射的系统账号
29)idle_session_timeout=300:用于设置回话超时时间(单位:秒)。默认值为300。
30)listen_address:当vsftpd服务器连接多个网络时,如果只希望监听某个网络的请求时,就需要设置该参数了。无默认值。
31)listen_ipv6=YES|NO:是否启用standalone模式并通过ipv6监听。默认值为NO。
32)listen_port=21:用于设置监听的端口。默认值为21。
33)listen=YES|NO:是否启用standalone模式并通过ipv4监听。默认值为NO。
34)local_enable=YES|NO:是否允许非匿名用户登录。默认值为NO。
35)local_max_rate=0:用于限制非匿名用户的传输速度(单位:Byte/s)。默认值为0(表示无限制)。
36)local_root:用于指定所有非匿名用户的根目录,默认情况,FTP会将各用户引导到各自的家目录,如果你希望所有用户登录到同一个根目录,那么你就需要用到该参数了。无默认值。
37)local_umask=022:用于设置非匿名用户上传文件的umask值。默认值为022。
38)ls_recurse_enable=YES|NO:是否允许用户在登录到FTP服务器后使用ls -R等比较占用系统资源的命令。默认值为NO。
39)max_clients=2000:用于设置最大连接数。默认值为2000。
40)max_per_ip=50:用于设置同一台主机的最大连接数。默认值为50。
41)message_file=.messag:用于设置保存欢迎信息的文件名。默认值为.message。
42)nopriv_user=nobody:用于设置vsftpd服务的运行用户。默认值为nobody。
43)pam_service_name=vsftpd.vu设置PAM认证文件(默认为vsftpd)
44)pasv_max_port:用于设置被动连接时,客户端的数据连接端口的最大值。默认值为0(表示采用随机端口)。
45)pasv_min_port:用于设置被动连接时,客户端的数据连接端口的最小值。默认值为0(表示采用随机端口)。
46)tcp_wrappers=YES|NO:是否启用tcp_wrappers访问控制列表。默认值为NO。
47)use_localtime=YES|NO:是否使用本地时间。默认值为NO。
48)userlist_deny=YES|NO:如果设置为YES,则表示拒绝列表内的用户登录,否则表示只允许列表内的用户登录。默认值为YES。
49)userlist_enable=YES|NO:是否启用用户列表。默认值为NO。
50)userlist_file=/etc/vsftpd/user_list:用于设置用户列表的路径。默认值为/etc/vsftpd/user_list。
51)write_enable=YES|NO:是否允许用户具有写权限。默认值为NO。
52)xferlog_enable=YES|NO:是否启用日志记录用户的上传/下载。默认值为NO。
53)xferlog_file=/var/log/xferlog:用于设置日志文件的路径。默认值为/var/log/xferlog。
54)xferlog_std_format=YES|NO:是否采用标准日志文件来记录日志。默认值为NO。


(2)匿名访问的配置
安装后直接启动服务,程序默认就为匿名访问


(3)用户名验证访问的配置
修改配置文件/etc/vsftpd/vsftpd.conf
1)anonymous_enable=NO
2)local_enable=YES


(4)基于虚拟用户的访问配置
创建虚拟FTP用户账号数据库文件
1)创建文件(奇数行为账号、偶数行为密码
a.vim vusers
2)转化为数据库文件
a.db_load -T -t hash -f vusers vusers.db
b.完成后删除vusers文件
3)修改文件权限为600
a.chmod 600 vusers.db

创建FTP根目录及虚拟用户映射的系统账号
1)useradd -s /sbin/nologin -d /home/ftproot ftpusers
2)修改/home/ftproot目录权限
a.chmod 655 /home/ftproot

建立支持虚拟用户的PAM认证文件
1)/tec/pam.d/vsftpd.vu
a.#%PAM-1.0
b.auth       required    pam_userdb.so db=/etc/vsftpd/vusers
c.account    required    pam_userdb.so db=/etc/vsftpd/vusers
2)此处不需要写vusers.db的后缀

修改配置文件添加虚拟账号数据库文件
1)anonymous_enable=NO:关闭匿名访问
2)local_enable=YES:允许本地用户访问
3)guest_enable=YES:启用虚拟用户访问
4)guest_username=ftpusers:设置映射的系统账号
5)pam_service_name=vsftpd.vu:修改PAM认证文件

虚拟用户权限设置
1)创建vusers_dir目录:mkdir /etc/vsftpd/vusers_dir
2)在vusers_dir中以虚拟用户名创建空文件:touch boss
3)vim boss并添加权限如anon_upload_enable=YES等
4)在主配置文件添加:user_config_dir=/etc/vsftpd/vusers_dir
⑥重启
⑦测试

发布了40 篇原创文章 · 获赞 15 · 访问量 3486

猜你喜欢

转载自blog.csdn.net/lkolkolkol/article/details/103513368
今日推荐