目录
一,什么是FTP?
概述:
FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。
默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VyN1TzeO-1609934445021)(en-resource://database/1929:0)]
1,FTP的使用场合
用于文件的传输
2,作用
用于文件的上传和下载
3,所属协议
ftp属于tcp,端口号:20.21
+ 21: 控制层面,用于账户密码验证,权限的验证
+ 20:数据层面,用于文件上传和下载
4,ftp的用户账号种类
- 匿名账户:登录名为ftp,anonymous,不验证密码即可登录,一般用于提供公共文件的下载,如提供一些免费软件,学习资料下载的站点
- 系统账户:本身系统已经存在的账户,密码作验证。默认root账户不允许登录
验证方式:
1,验证的/etc/passwd和/etc/shadow
2,验证的用户列表(用户必须是系统创建),相当于白名单。 - 虚拟账户:预定义的列表账户(以前系统未创建过的),位于独立数据库文件的FTP账号,通过虚拟账户将ftp账户与linux系统账户的关联性降至最低,可以为系统提供更好的安全性。
5,Linux系统中ftp服务的设置
同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP服务器,而连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。用户要连上FTP 服务器,就要用到 FTP 的客户端软件,通常 Windows自带“ftp”命令,这是一个命令行的 FTP客户程序,另外常用的 FTP 客户程序还有FileZilla、 CuteFTP、Ws_FTP、Flashfxp、LeapFTP、流星雨-猫眼等。
安装服务:
rpm -ivh /mnt/Packages/vsftpd-3.0.2-10.el7.x86,-64.rpm或作者yum安装vsftpd
匿名账户相关设置:
chown -R ftp.ftp /var/ftp/pub/
chmod -R 755 /var/ftp/pub/
ls -l /var/ftp/pub/
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
//允许匿名账户登录
anon_upload_enable=YES
//允许匿名账户上传
anon_mkdir_write_enable=YES
//允许匿名还在那规划新建文件或目录
anon_other_write-enable=YES
//允许匿名账户的其他写权限
anon_umask=022
//设置匿名账户的权限为755
local_enable=YES
//允许本地账户登录
local_max_rate=102400
//本地账户限速
chroot_local_user=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
//监听IPV4地址请求
listen_ipv6=NO
//不监听IPV6地址请求
systemctl start vsftp
开启ftp服务
查看端口:netstat -anpt | grep vsftpd
验证用户权限:此时外来的匿名账户登录是可以操作以上所允许的权限的
若出现500 OOPS: vsftpd:refusing to run with writable root inside chroot ()报错
得在配置文件中加一条 : allow_writeable_chroot=YES
只允许系统账户liming上传下载文件,其他账户不允许访问
本地账户:
设置本地用户的可登录用户列表
vi /etc/vsftpd/user_list
liming
vi /etc/vsftpd/vsftpd.conf
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
//宿主目录的锁定
listen=YES
allow_writeable_chroot=YES
//允许宿主目录的写权限
listen_ipv6=NO
pam_service_name=vsftpd
userlist_enable=YES
//启用账户列表
userlist_deny=NO
//只允许用户列表里的用户登录
tcp_wrappers=YES
local_root=/opt/liming
//指定用户的宿主目录路径
普通账户的宿主目录是它的家目录
systemctl restart vsftpd 重新开启ftp服务即可
二,samba服务
概述:
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
1,作用:
- 实现 linux与微软系统之间的互访问题
2, SMB的工作原理
是让netbios与smb这两种协议运行在tcp/ip的通信协议上,使用netbios name server让用户的linux机器可以在windows的网络邻居里被看到,所以就可以和windows主机在网络上相互沟通,共享文件与服务了
3, 组成samba运行的两个服务
一个是smb,另一个是nmb,smb是samba的核心启动服务,主要负责建立linux samba服务器与samba客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,只有smb服务启动,才能实现文件的共享,监听tcp 139 和445 端口,而nmb服务是负责解析用的,类似与dns实现的功能,nmb可以吧linux系统共享的工作名称与其ip对应起来,如果,nmb服务没有启动,就只能通过ip来访问共享文件,监听udp 137和138端口。
4,相关目录
-
/var/log/samba:SAMBA 预设的登录文件放置目录。如果 SAMBA 老是设定不起来,又或者怀疑被人家以port 137~139 入侵的话,就到这里来观察。
-
/usr/share/samba/codepages:放置各个语言的支持格式。举例来说,想让SAMBA 支持中文,那么就需要 codepage.950 这个档案的支持。在smb.conf 里面设定即可。
5,主要部分
两个守护程序:smbd 和 nmbd(对客户端提供NetBIOS名服务)
配置文件:/etc/smb.conf
使用工具:smbclient,smbstatus,smbmount,smbumount,smbprint,smbprint.sysv,smbrun
samba的启动脚本在/etc/rc.d/init.d/smb
6,配置过程:
1,防火墙关闭
systemctl stop firewalld
setenforce 0
2, 安装samba软件
3,创建共享目录并设置权限
mkdir /share
echo "aaa">/share/a.txt
chmod -R 777 /share
4,创建用户,将用户加入samba服务,并设置samba账户的密码
在将用户加进samba服务前,samba服务必须先开启
systemctl start smb`
systemctl start nmb`
netstst -anptu | greo mbd`
` useradd lisi`
` useradd tom`
` pdbedit -a -u lisi` //用户设置为samba用户,并设置密码
` pdbedit -a -u tom` //用户设置为samba用户,并设置密码
5,配置samba主配置文件
vi /etc/samba/smb.conf
[share] # 共享目录名称
comment = this is a share directory`//共享描述
path = / share
read only = yes //是否设置为只读
valid users =lisi,tom //授权用户
write list =lisi # lisi是可写的
hosts allow = 192.168.1. # 只允许192.168.1.0-192.168.1.255地址段访问
**6,重启服务 ()配置文件被修改之后一定要重启配置文件)
systemctl restart smb
systemctl restart nmb
netstat -anptu | grep mbd
7,客户机权限的验证
微软上面验证:
网络是否通?
关闭防火墙?
验证:
只能访问不可写文件:
可写可读文件:
linux上面验证: smbclient //samba服务器ip/share -U lisi 以lisi身份验证权限
在本地创建文件 :mkdir /mydata 之后登陆:
使用tom权限不够写
lisi授权所以可以:
注:
get 文件 # 下载文件
put 文件 # 上传文件
可自行测试