Samba共享服务
1.内网使用
2.用户访问量小
一、FTP
1.C/S架构
Samba(S) -->
FTP(S) -->
2.端口
1)控制连接:TCP 21(发送FTP控制连接请求等信息)
2)数据连接:TCP 20(实现FTP的上传、下载操作)
3.工作流程
1)主动模式:服务器主动发起连接
a.首先由客户端(使用本地21端口或随机产生)向服务端的21建立FTP控制连接
b.客户端以PORT命令告知服务器"我本地已开启一个随机端口,你来吧" 2500
c.服务器从20端口连接客户端随机端口,并建立连接关系
2)被动模式:服务器被动等待连接
a.首先由客户端(使用本地21端口或随机产生)向服务端的21端口建立FTP控制连接
b.服务器以PASV命令告知客户端"我本地已开启一个随机端口,你来吧"5000-6000
c.客户端向服务器的指定打开端口(非20端口)发送请求并连接连接关系
注:被动模式下,端口范围定义为10000以上;适用于客户端开启防火墙的情况
TCP 三次握手四次断开
4.传输模式
1)文本模式(ASCII):只支持纯文本;已不再使用
2)二进制模式:支持文字、视频、声音、图片等
5.FTP用户类型
1)匿名:用户名(anonymous)、密码为空;用户名(ftp)、密码(ftp)
2)本地用户:使用服务器本地的用户名密码登录
3)虚拟用户:不存在的用户,可加强安全性
6.FTP软件
1)服务端:Windows(Serv-U、FTP发布服务)、Linux(vsftpd) 非常安全的FTP软件
2)客户端:windows自带"计算机"、flashfxp、wget URL:等
二、搭建的匿名的FTP
1.安装软件包 yum -y install vsftpd
2.编辑配置文件
//创建匿名ftp访问目录 mkdir -p /ftproot/anonymous
//将匿名用户ftp的家目录更改为新建目录
usermod -d /ftproot/anonymous ftp
//给其它用户写入权限 chmod o+w /ftproot/anonymous
2)编辑ftp启动服务文件 vim /etc/vsftpd/vsftpd.conf
清除没有用的注释行命令为 :% g/^#/d
anonymous_enable=YES //启动匿名
anon_root=/ftproot/anonymous //指定匿名访问目录
anon_upload_enable=YES //允许匿名上传
anon_other_write_enable=YES //允许匿名删除文件、文件夹
anon_mkdir_write_enable=YES //允许匿名用户新建文件夹
anon_umask=022 //匿名上传的文件权限为755
pasv_enable=YES //启动被动模式
pasv_min_port=10000 //指定被动模式的最小端口
pasv_max_port=11000 //指定被动模式的最大端口
local_enable=NO //不启用本地用户
write_enable=YES //允许写入
local_umask=022 //本地用户上传的文件权限为755
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES //启动监听
pam_service_name=vsftpd //pam认证模块名
userlist_enable=YES //启用userlist列表文件
tcp_wrappers=YES //启动TCP_WRAPPERS控制
注:默认vsftpd站点位置/var/ftp/;使用:r 文件路径可将指定文件内容读取到当前文件鼠标后
模版文件:/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.conf
3.启动服务
1)启动ftp服务 /etc/init.d/vsftpd start
2)将ftp服务设置为开机自启 chkconfig --level 35 vsftpd on
4.访问(若出现以下故障有可能是虚拟机问题 真实环境不会出现)
格式:ftp://服务器IP或域名
故障解决(访问匿名时一直弹出输入用户名密码)
1)chmod 755 /ftproot/anonymous //将新建目录权限改为默认值;vsftpd匿名访问时需检查目录是否755
2)访问成功后再把权限改成(chmod o+w /ftproot/anonymous)便拥有上传 下载 删除 更改等权限
三、搭建匿名和虚拟用户共存
1)定义用户密码文件 vim /etc/vsftpd/vusers
;
注:文件中奇数为用户名;偶数为上一行用户密码
2)转换用户密码文件到数据库文件
//将定义的用户密码文件使用hash转换为数据库文件
db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
3)新建PAM认证文件 vim /etc/pam.d/hehe
4)新建本地用户 useradd -s /sbin/nologin -d /ftproot/virtual virtual
//查看用户/ftproot/virtual权限 ls -ld /ftproot/virtual
5)编辑配置文件 vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //启动匿名
anon_root=/ftproot/anonymous //指定匿名访问目录
anon_upload_enable=YES //允许匿名上传
anon_other_write_enable=YES //允许匿名删除文件、文件夹
anon_mkdir_write_enable=YES //允许匿名用户新建文件夹
anon_umask=022 //匿名上传的文件权限为755
pasv_enable=YES //启动被动模式
pasv_min_port=10000 //指定被动模式的最小端口
pasv_max_port=11000 //指定被动模式的最大端口
local_enable=YES //启用本地用户,虚拟用户需使用本地用户映射
write_enable=YES //允许写入
local_umask=022 //本地用户上传的文件权限为755
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES //启动监听
pam_service_name=hehe //pam认证模块名,指定为自定义pam文件名
userlist_enable=YES //启用userlist列表文件
tcp_wrappers=YES //启动TCP_WRAPPERS控制
guest_enable=YES //启动虚拟用户
guest_username=virtual //指定虚拟用户对应的本地映射用户
user_config_dir=/etc/vsftpd/virtual //指定虚拟用户配置文件存放目录
注:默认虚拟用户使用匿名用户权限;如用户自行定义权限,以自权限生效
//新建虚拟用户配置文件存放目录 mkdir -p /etc/vsftpd/virtual
//在/etc/vsftpd/virtual目录下新建hehe、haha文件
touch /etc/vsftpd/virtual/haha
touch /etc/vsftpd/virtual/hehe
//编辑权限内容 vim /etc/vsftpd/virtual/haha
//将haha用户权限设置为不允许上传,但其它未指定权限都以/etc/vsftpd/vsftpd.conf匿名生效
//重启ftp服务 /etc/init.d/vsftpd restart
6)访问
hehe拥有完全权限
haha只能下载,不能上传
注:默认匿名用户访问本地用户的家目录