FTP文件传输协议详解

article/2025/8/18 14:46:42

简介:FTP是基于TCP协议之上的具有C/S架构的文件服务器。
需要通过控制连接20端口来控制双方的通信
需要通过数据连接21端口来进行双方的通信
主动模式:最大的特点是数据连接由服务器的20端口主动发起连接,这种情况可能会被客户端的防火墙拒绝
被动模式,是由客户端向服务器端口发起连接

  • FTP协议:文件传输协议
    • 协议定义了一个在远程计算机系统和本地计算机系统之间传输文件的一个标准。
    • FTP运行在OSI模型的应用层,并利用传输协议TCP在不同主机之间提供可靠的数据传输。
    • FTP在文件传输中还支持断点续传功能,可以大幅度减少CPU网络带宽的开销。
  • FTP模型
    • 用户接口:提供一个用户接口并使用客户端协议解释器的服务。
    • 客户端协议解释器:向远程服务器发送命令 并建立客户数据传输过程
    • 服务端协议解释器:响应客户协议机发出的命令并驱动服务端数据传输过程
    • 客户端数据传输协议:负责完成和服务器数据传输过程及客户端本地文件系统的通信
    • 服务端数据传输协议:负责完成和客户数据过程及服务器端文件系统的通信
  • 控制连接(端口号 21)
    • 主要用来传送在实际通信过程中需要执行的FTP命令以及命令的响应
    • 只需要很小的网络带宽
    • FTP服务端监听21端口号来等待控制连接建立
    • 建立控制连接后,还需要验证客户身份,决定是否建立数据连接
    • 当需要目录列表,传输文件时,才建立数据连接,并且每次客户端都是用不同的端口号来建立数据连接。数据 传输完毕,就中断这条临时的数据连接。
    • 在FTP连接期间,控制连接始终保持通常的连接状态。在数据连接存在期间,控制连接必须存在;一旦控制连接断开,数据连接会自动关闭。
  • 数据连接(端口号20)
    • FTP服务端监听20端口来等待数据连接
    • 数据连接依赖于控制连接
    • 建立方式
  • 参考博客:https://blog.csdn.net/ludan_xia/article/details/105705473

**主动模式:**客户端端口都是随机的

  • 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口
  • 控制连接建立后,客户端进行份验证,协商数据连接采用主动模式;随后客户端会向FTP服务器发送Port报文,表明自己监听的IP+端口,并等待FTP服务器(20端口)向自己监听的IP+端口发起数据连接请求。
  • 服务端发起数据连接请求,建立数据连接。
    被动模式:
  • 通过三次握手,建立控制连接;客户端的源端口是高位随机端口,目标端口是21端口;
  • 控制连接建立后,客户端进行身份验证,协商数据连接采用被动模式;随后客户端会向
  • 服务器发送PASV报 文,表示我们用被动模式
  • 服务端收到PASV报文,于是向客户端发送Port报文,表明自己监听的IP+端口
  • 客户端发起数据连接请求,建立数据连接。

FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

主动模式和被动模式的区别:
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等
待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防
火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。
因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
在这里插入图片描述- 软件包
- vsftpd
- tftp(了解)

VSFTPD服务介绍

服务包:vsftpd
服务类型:由Systemd启动的守护进程
配置单元: /usr/lib/systemd/system/vsftpd.service
守护进程: /usr/sbin/vsftpd
端口: 21(ftp) , 20(ftp‐data)
主配置文件: /etc/vsftpd/vsftpd.conf
用户访问控制配置文件: /etc/vsftpd/ftpusers /etc/vsftpd/user_list
日志文件: /etc/logrotate.d/vsftpd
配置文件参数:
在这里插入图片描述在这里插入图片描述
改主配置文件时要养成良好习惯经常备份,容易改错了恢复。
权限是由两部分控制的,一部分是Linux系统控制的一部分是服务自己控制的。

Linux中

第一种:

yum install ftp -y

[root@server1 ~]# ftp 192.168.120.100
Connected to 192.168.120.100 (192.168.120.100).
220 (vsFTPd 3.0.2)
Name (192.168.120.100:root): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

第二种:

[root@server1 ~]# lftp 192.168.120.100
lftp 192.168.120.100:~> ls
-rw-r--r--    1 0        0               0 Mar 06 10:45 abc.txt
drwxr-xr-x    2 0        0               6 Jun 09  2021 pub
lftp 192.168.120.100:/> 

只有当敲命令有结果返回时,才表示登录成功

windows中

第一种:
- 可以在浏览器、运行窗口或者资源管理器中输入 ftp://IP地址/ ,这样访问的是ftp的根位
置,如果需要访问相关
- 目录可以输入 ftp://IP地址/目录/文件名

ftp的常用命令
上传文件:put 源文件名 目的文件名
下载文件:get 源文件吗 目的文件名
重命名文件:rename 源文件名 目的文件名
创建目录:mkdir
其他系统命令可以正常使用

匿名用户的方式去访问vsftpd

[root@server1 ~]# vim /etc/vsftpd/vsftpd.conf
进去修改配置文件
anonymous_enable=YES
anon_umask=022
anon_upload_enable=Yes
anon_mkdir_write_enable=Yes
anon_other_write_enable=Yes
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES[root@server1 ~]# systemctl restart vsftpd
重启

系统用户的方式去访问vsftpd
1.创建用于进行FTP认证的用户数据库文件,其中奇数行为账户名,偶数行为密码。
2. 使用db_load命令用哈希(hash)算法将原始的明文信息文件转换成数据库文件
3. 降低数据库文件的权限(避免其他人看到数据库文件的内容)
4. 把原始的明文信息文件删除。
5. 创建一个本地用户,用来做虚拟用户在本地的代理,为了安全起见,禁止这个本 地用户登录。
6. 新建一个用于虚拟用户认证的PAM文件vsftpd.vu
7. 配置文件
8.如果想要针对不同的用户设置不同的权限

NFS(网络文件系统)

简介:
Linux/Unix系统之间共享文件系统的一种协议,通过网络让不同的主机之间共享文件或目录
NFS的客户端主要为Linux
支持多节点同时挂载以及并发写入
提供文件共享服务
为集群中的web server配置后端存储
NFS协议模型:
在这里插入图片描述

RPC远程过度调度

  • NFS协议本身并没有网络传输功能,而是基于远程过程调用协议实现的
  • 提供一个面向过程的远程服务的接口
  • 可以通过网络从远程主机程序上请求服务,而不需要了解底层网络技术的协议
  • 工作在OSI模型的会话层,它可以为遵从RPC协议应用层协议提供端口注册功能
  • 事实上,有很多服务(NFS和NIS等)都可以向RPC注册端口
  • RPC使用网络端口111来监听客户端的请求

RPC协议模型:

  1. 基于rpc的服务(此处是指nfs服务,在别处有可能是代表其他服务)在启动时向portmapper注册
    端口
  2. 基于rpc的客户端练习服务端portmapper询问服务的端口号
  3. portmapper告知客户端某基于rpc服务使用的端口号
  4. 基于rpc的客户端访问被告知单某基于rpc服务的端口
  5. 基于rpc的服务响应客户端的请求
    在这里插入图片描述工作过程:

在这里插入图片描述
案例,基于NFS搭建web后端NAS存储

用户访问负载均衡器节点,负载均衡器会将请求负载均衡得分发给web服务器,比如请求index.html界面,每一台服务器都会去NAS存储服务器上寻找想要被读取的数据。这可以大大降低服务器成本、运维成本(修改数据会牵一发而动全身)
在这里插入图片描述1.准备三台服务器,其中两台模拟webserver,还有一台模拟NFS
2.分别在两台webserver上进行如下操作

[root@server1 ~]# yum install httpd -y
[root@server1 ~]# systemctl start httpd
[root@server1 ~]# cd /var/www/html/
必须是index.html这个文件
[root@server1 html]# vim index.html
[root@server1 html]# yum search showmount -y
[root@server1 html]# yum install nfs-utils.x86_64 -y查看挂载情况
[root@server1 html]# showmount -e 192.168.120.148
Export list for 192.168.120.148:
/webdata 192.168.120.147/24,192.168.120.100/24
将其挂载到server3上NFS
[root@server1 html]# mount -t nfs 192.168.120.148:/webdata /var/www/html
重启一下服务
[root@server1 html]# systemctl start httpd

3.在server3上进行如下操作

[root@server1 ~]# yum install -y nfs-utils
[root@server1 ~]#  mkdir /webdata
[root@server1 webdata]# vim index.html
[root@server1 webdata]# vim /etc/exports
[root@server1 webdata]# systemctl start nfs-server.service

NFS配置参数
在这里插入图片描述在这里插入图片描述

自动挂载

可使用autofs服务按需要挂载外围设备,NFS共享等,并在空闲5分钟后后自动卸载
相关包和文件

  • 软件包: autofs
  • 服务文件: /usr/lib/systemd/system/autofs.service
  • 配置文件: /etc/auto.master
    配置文件格式
    自动挂载有两种格式:
    • 相对路径法:将mount point路径分成dirname和basename分别配置,可能会影响现有的目录结构
    • 绝对路径法:直接匹配全部绝对路径名称,不会影响本地目录结构
      相对路径法:
    • /etc/auto.master 格式
挂载点的dirname 指定目录的配置文件路径
- 指定目录的配置文件格式
挂载点的basename 挂载选项 选项设备 1

例子:
将NFS的共享目录,通过autofs 发布出来,做为远程主机用户的家目录
在这里插入图片描述- NFS服务器创建用户和相应的目录,将用户user的家目录共享

[root@server1 webdata]# mkdir /data
[root@server1 webdata]# useradd -d /data/user user
[root@server1 webdata]# id user
uid=1000(user) gid=1000(user)=1000(user)
[root@server1 webdata]# vim /etc/exports.d/test.exports
/data/user *(rw,anonuid=1000,anongid=1000,all_squash)
  • 在nfs客户端上实现autofs
[root@server1 html]# vim /etc/auto.master
/data /etc/auto.home
[root@server1 html]# vim /etc/auto.home
* -fstype=nfs 192.168.175.144:/data/user
  • 在nfs客户端上创建用户user
[root@NFSclient ~]# mkdir /data
[root@NFSclient ~]# useradd -d /data/user -u 1000 user
  • 测试是否完成目标
[root@NFSserver ~]# su - user
[user@NFSserver ~]$ touch file
# 在NSF服务器上登录user用户,创建文件在家目录中
[root@NFSclient /]# su - user
[user@NFSclient ~]$ ll
总用量 0
-rw-rw-r--. 1 user user 0 430 10:13 file
# 在NSF客户机上登录user用户,发现文件已经被共享了

ssh免密钥登录
客户端需要准备好一对密钥对,然后将自己的公钥发送给服务端,登录的时候可以选择登录的方式为密钥登录,这时候就不用输入密码。
常用场景:临时给他人开放root权限,要求别人将它自己的公钥发送到服务器上来,等使用结束将其公钥发送到服务器上来。
NFS与RPC之间的关系:
NFS是向RPC进行注册端口,访问者需要先向RPC询问NFS端口之后才会访问NFS的端口
RPC不仅仅可以服务NFS,也可以服务很多其他端口

NFS与FTP之间的区别:
FTP通常用来做文件服务器
NFS通常是用来做网络存储
NFS通常是linux之间进行文件共享

NFS+autofs可以实现自动挂载远端文件系统,当不使用的时候则不会挂载,只有在使用时候才会自动挂载。

SAMBA

  • SMB协议
    • SMB(服务信息模块)协议是一个高层协议、它提供了在网络上的不同计算机之间共享文件,打印机和不同通 信资料的手段
    • SMB使用NetBIOS API实现面向连接的协议,该协议为Window是客户程序和服务提供了一个通过虚链路按照 请求——响应方式进行通信的机制
    • SMB的工作原理就是让NetBIOS与SMB协议运行在TCP/IP上,并且使用NetBIOS的名字解释器让Linux机器可 以在Windows的网络邻居中被看到,从而在Windows的网络邻居中被看到,从而和Windows9x/NT/200X进 行相互沟通,共享文件和打印机
      -CIFS协议
    • 通用网际文件系统是微软服务器消息块协议(SMB)的增强版
    • 提供计算机用户在企业内部网和因特网上共享文件的标准方法
    • CIFS在TCP/IP运行,利用英特网上的全球域名服务系统(DNS)增强其可扩展性,同时为因特网上普遍存在 的慢速拨号连接优化。
  • 应用环境
    • 文件和打印机共享:文件和打印机共享是samba的主要功能,SMB进程实现资源共享,将文件和打印机发布到网络之中,以供用户可以访问
  • 身份验证和权限设置:samba服务支持user mode和domain mode 等身份验证和权限设置模式,通过加密方式可以保护共享的文件和打印机
  • 名称解析:samba通过NMB服务可以搭建NBNS服务器,提供域名解析,将计算机的NetBIOS名称解析为ip地址
  • 浏览服务,局域网中,samba可以成为本地主浏览服务器,保存可用资源列表,当使用客户端访问windows网上邻居时,会提供浏览列表,显示共享目录、打印机资源等
  • 端口号:139和445
    • 在早期,SMB运行于NBT协议上,使用udp协议的137和138以及TCP协议的139端口
  • NetBIOS协议
    • NetBIOS是Network Basic Input/Output System的简称,网络基本输入输出协议。协议,一般指能用于局域网通信的一套API,是由IBM公司开发的。主要作用,通过NetBIOS协议获得计算机名称,然后把计算机名称解析为对应的IP地址
  • 基于C/S模式
  • 安装
[root@server1 ~]# yum install samba -y

主配置文件:

[root@server1 ~]# cat /etc/samba/smb.conf
#默认主配置文件:
[global] #全局参数。
workgroup = MYGROUP #工作组名称
server string = Samba Server Version %v #服务器介绍信息,参数%v为显示SMB版本
号
log file = /var/log/samba/log.%m #定义日志文件的存放位置与名称,参数%m为来访的
主机名
max log size = 50 #定义日志文件的最大容量为50KB
security = user #安全验证的方式,总共有4种
#share:来访主机无需验证口令;比较方便,但安全性很差
#user:需验证来访主机提供的口令后才可以访问;提升了安全性
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
#domain:使用域控制器进行身份验证
passdb backend = tdbsam #定义用户后台的类型,共有3种
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码(最常用)
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
#ldapsam:基于LDAP服务进行账户验证
load printers = yes #设置在Samba服务启动时是否共享打印机设备
cups options = raw #打印机的选项
[homes] #共享参数
comment = Home Directories #描述信息
browseable = no #指定共享信息是否在“网上邻居”中可见
writable = yes #定义是否可以执行写入操作,与“read only”相反
[printers] #打印机共享参数
comment = All Printers
path = /var/spool/samba #共享文件的实际路径(重要)。
browseable = no
guest ok = no #是否所有人可见,等同于"public"参数。
writable = no
printable = yes

安全等级:

Samba安全等级:
User:由本地Samba服务器负责账户验证
使用smbpasswd 设置账号(默认的安全等级)
Domain:账户验证账户及口令的工作由其他的Windows 或Samba域控制器负责
需要使用“password server”指令指定验证服务器
Ads:验证账户及口令的工作由支持Kerberos验证的Windows活动目录服务器负责。
需要使用“realm”指令指定Kerberos领域
Share:匿名共享
Samba账户及口令数据库
1.Samba使用的账户文件/数据库是与系统账户文件分离的
2.当设置了user的安全等级后(默认),将由本地系统对问Samba共享资源的用户进行认证
3..tdb格式的口令数据库,初始情况下口令数据库文件并不存在
4.为了创建Samba的口令数据库文件,管理员可以在添加Samba账户的同时创建它
5.管理员可以使用smbpasswd命令配置Samba账号并设置其口令

配置一个共享资源(具体步骤)

  1. 设置共享名称
    1. 共享资源发布后,必须为每个共享目录或打印机设置不同的共享名称,给网络用户访问时使
      用,并且共享名可以与原目录名不同。例如,samba服务器上有个目录为/share,需要发布
      该目录为共享目录,定义共享名为public
  2. 共享资源描述
    1. 格式: comment = 备注信息
    2. 备注信息通常是用来进行解释说明的
  3. 共享路径
    1. 共享资源的原始完整路径
    2. 格式: path = 绝对路径
  4. 设置匿名访问
    1. 共享资源如果对匿名访问进行设置,可以更改public字段
    2. 格式: public = yes | no (yes代表允许匿名访问,no代表不允许)
  5. 设置访问用户
    1. 如果共享资源存在重要数据的话,需要访问用户审核,可以使用valid users字段进行设置
    2. 格式:
      1. valid users = 用户
      2. valid users = @组名
  6. 设置目录只读
    1. 共享目录如果限制用户的读写操作,可以通过readonly实现
    2. 格式: readonly = yes | no
      1. yes代表只读
      2. no代表读写
  7. 设置目录可写
    1. 如果目录允许用户写操作,可以使用writable或write list两个字段进行设置
    2. 格式:
      1. writable = yes 读写
      2. writable = no 只读
      3. write list = 用户名
      4. write list = @ 组名

案例:通过用户名共享文件

实验:需要两台服务器,一台做服务端一台做客户端。
共享销售部 /xsb 这个目录,只有知道用户名和密码的同事可以看这个共享,在/xsb目录中存放销售部重要的数据。需要将security设置为user级别,这样可以启用samba身份验证机制,然后在共享目录 /xsb下设置valid user 字段,配置只允许销售部员工能访问这个共享目录。
服务器端为server1,客户端为server2
服务器端

  • 修改主配置文件相关设置
[root@server1 ~]# vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
# passdb backend = tdbsam
passdb backend = smbpasswd
smb passwd file = /etc/samba/smbpasswd
printing = cups
printcap name = cups
load printers = yes
cups options = raw
# 重启smb服务之后,会自动生成/etc/samba/smbpasswd该文件
  • 添加销售部用户和组
[root@server1 samba]# groupadd xsb
[root@server1 samba]# useradd -g xsb -M -s /sbin/nologin xsb01
[root@server1 samba]# useradd -g xsb -M -s /sbin/nologin xsb02
[root@server1 samba]#  useradd jsb01
  • 添加相应的samba账号
[root@server1 ~]# smbpasswd -a xsb01
New SMB password:
Retype new SMB password:
Added user xsb01.
[root@server1 ~]# smbpasswd -a xsb02
New SMB password:
Retype new SMB password:
Added user xsb02.
  • 指定共享目录
[root@server1 ~]# mkdir /xsb
[root@server1 ~]# cp /etc/hosts /xsb
[root@server1 ~]# vim /etc/samba/smb.conf
[xsb]
comment = Xsb Data
path = /xsb
valid user = xsb01,xsb02
  • 重启服务
[root@server1 ~]# systemctl restart smb.service
[root@server1 ~]# systemctl restart nmb.service
  • 检查139和445端口号
[root@server1 ~]# ss -tanl
State Recv-Q Send-Q Local Address:Port Peer
Address:Port
LISTEN 0 50 *:139 *:*
LISTEN 0 50 *:445 *:*
LISTEN 0 50 :::139 :::*
LISTEN 0 50 :::445 :::*

客户端验证

# linux上验证
[root@server2 ~]# yum install samba-client -y
[root@server2 ~]# smbclient -L //192.168.80.151/xsb -U xsb01
Enter SAMBA\xsb02's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
xsb Disk Xsb Data
IPC$ IPC IPC Service (Samba 4.10.16)
xsb02 Disk Home Directories
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
Workgroup Master
--------- -------
SAMBA SERVER1
# 在windows上进行验证
windows验证:
在Window运行输入地址:\\192.168.10.10
用户名:****** xsb01
密码:****** 1
可以在DOS窗口中使用命令net use * /delete 清空用户缓存信息

在linux上进行挂载

[root@server2 ~]# mkdir /xsbdata
[root@server2 ~]# yum install cifs-utils -y
[root@server2 ~]# vim auth.smb
username=xsb01
password=1
[root@server2 ~]# vim /etc/fstab
//192.168.120.100/xsb /xsbdata cifs defaults,credentials=/root/auth.smb
0 0
[root@server2 ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17811456 1099604 16711852 7% /
devtmpfs 922468 0 922468 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 8852 924672 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 1038336 145756 892580 15% /boot
tmpfs 186708 0 186708 0% /run/user/0
//192.168.120.100/xsb 17811456 1108900 16702556 7% /xsbdata
[root@server2 ~]# ls /xsbdata/
hosts

NFS与SAMBA区别:
NFS权限控制是编辑时候()在括号内指明权限
SAMBA权限是通过参 数writable来控制的

案例二:不同账户访问不同目录

[root@server1 ~]# yum install samba -y#创建三个samba用户,并指定密码为1
useradd -s /sbin/nologin -r smb1 #加选项-r 不创建家目录
useradd -s /sbin/nologin -r smb2
useradd -s /sbin/nologin -r smb3
smbpasswd –a smb1 #创建对应账号的口令 ,不加-a表示修改已经存在的账号的口令
smbpasswd –a smb2
smbpasswd –a smb3
[root@SMB ~]#pdbedit -L #查看samba账号
smb1:995:
smb3:993:
smb2:994:
#修改samba配置文件
vim /etc/samba/smb.conf
#在workgroup下加一行
config file= /etc/samba/conf.d/%U 说明:%U表示用户名 #**这个步骤为关键步骤**
[share] #共享文件夹在最后添加
Path=/data/dir #指定分享文件夹的路径
Read only= NO #不仅仅是只读
Guest ok = yes
write list=@admin[root@SMB ~]#mkdir /data/dir
[root@SMB ~]#mkdir /data/dir1
[root@SMB ~]#mkdir /data/dir2
[root@SMB ~]#touch /data/dir/share.txt #新建共享文件
[root@SMB ~]#touch /data/dir1/smb1.txt #新建给smb1用户访问特定文件
[root@SMB ~]#touch /data/dir2/smb2.txt #新建给smb2用户访问特定文件
[root@server1 ~]# yum install tree -y
[root@SMB ~]#tree /data/
/data/
├── dir
│ └── share.txt
├── dir1
│ └── smb1.txt
└── dir2
└── smb2.txt
3 directories, 3 files#针对smb1和smb2用户创建单独的配置文件
[root@SMB ~]#mkdir /etc/samba/conf/smb1 -pv
vim /etc/samba/conf.d/smb1
[share]
Path=/data/dir1
Read only= NO 等价于writable = yes
Create mask=0644
#说明:默认为744
[root@SMB ~]#mkdir /etc/samba/conf/smb2 -pv
vim /etc/samba/conf.d/smb2
[share]
path=/data/dir2
systemctl restart smb nmb #重启对应的服务
#用户smb1,smb2,smb3访问share共享目录,看到目录是不同目录,smb3访问的是默认的share目录

客户端:

[root@client ~]#smbclient //192.168.120.100/share -U smb1%1
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Dec 20 13:11:40 2019
.. D 0 Fri Dec 20 13:10:56 2019
smb1.txt N 0 Fri Dec 20 13:11:40 2019
52403200 blocks of size 1024. 52004560 blocks available
smb: \> exit
[root@client ~]#smbclient //192.168.32.18/share -U smb2%centos
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Dec 20 13:12:53 2019
.. D 0 Fri Dec 20 13:10:56 2019
smb2.txt N 0 Fri Dec 20 13:12:53 2019
52403200 blocks of size 1024. 52004560 blocks available
smb: \> exit
[root@client ~]#smbclient //192.168.120.100/share -U smb3%centos
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Fri Dec 20 13:13:12 2019
.. D 0 Fri Dec 20 13:10:56 2019
share.txt N 0 Fri Dec 20 13:11:26 2019
52403200 blocks of size 1024. 52004560 blocks available
smb: \> exit
[root@client ~]#

最后应该如图显示
在这里插入图片描述
中途出现的小问题:
[root@server1 ~]# smbclient -L //192.168.120.147/share -U smb2
Enter SAMBA\smb2’s password:
session setup failed: NT_STATUS_LOGON_FAILURE
密码错误了,去服务端修改一下密码即可

[root@server1 ~]# smbpasswd -a smb3
New SMB password:
Retype new SMB password:
Added user smb3.

http://chatgpt.dhexx.cn/article/Wfe7ujx6.shtml

相关文章

FTP协议讲解

FTP 概述 文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。 在传输文件时,FTP 客户端程序先与服务器建立连接,然后向服务器发送命…

FTP 协议

FTP 协议 FTP协议的(file Transfer Protocol)文本传输协议,简称为FTP, **FTP 是一种基于 TCP 的应用层协议,它不支持 UDP 协议。 FTP 工作在一种特殊的服务机制上,**采用的是c/s模式 也就是客户端和服务器…

浅谈FTP(文件传输协议)

FTP(文件传输协议) FTP(File Transfer Protocol) ,是一种处于应用层的用于文件传输的协议。是基于TCP协议的应用层协议,用于在网络上传输文件。 该协议使用的端口号为20和21,其中20是数据端口,21是命令端口(默认情况下) 是否使用…

FTP协议

一、FTP的概述 1、文件传送协议FTP (File Transfer Protocol)是互联网上使用得最广泛的文件传送协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。 3、FTP 屏蔽了…

FTP文件传输协议

目录 一、FTP的概述 1.1 FTP的理念 1.2 FTP数据连接模式 1.2.1 连接模式分类 1.2.2 主动和被动模式的工作原理 二、配置FTP服务 2.1 配置匿名用户FTP服务 2.1.1 关闭防火墙安装vsftpd软件包 2.1.2 开启FTP服务并做备份 ​ 2.1.3 修改配置文件 2.1.4 设置目录下权限&a…

FTP协议详解

一、FTP协议的概述 1、文件传送协议(File Transfer Protocol)是互联网上使用的最广泛的文件传输协议,用于Internet上的控制文件的双向传输。 2、FTP提供交互式的访问,允许客户指明文件类型与格式,并允许文件具有存取权限。 3、FTP屏蔽了各…

手推向量投影长度、投影向量

投影 (tuyǐng),数学术语,指图形的影子投到一个面或一条线上。 声明向量F为F、 向量F的大小为|F|,向量b为b、向量b的大小为、|b| 当我们得到了投影的大小之后|F| 因为 F 在 b 上 所以 单位向量相同,F 和 b…

向量投影公式

公式一:a.b |a||b|cos(r) cos(r) a.b/|a|/|b| 公式二:|c| |a|cos(r) 公式三:|c| a.b/|b| 公式四:c b/|b| |c| 公式五:c a.b/|b|2 b 公式六:c a.b/b.b b 备注:|b| √b.b 朝向解P…

已知法向量,某一向量投影到其平面,计算投影向量

最近一直在计算旋转矩阵,奈何高中数学实在是差,大学高等数学也不行,线性代数也不行,现在做起研究来真是要了我这个秃头粥的老命。只能边学习边应用了。 第一个:对某一向量进行旋转平移,等于是在其左边乘了…

向量投影推导

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…

向量投影

给定一个向量u和v,求u在v上的投影向量,如下图。 假设u在v上的投影向量是u’,且向量u和v的夹角为theta。一个向量有两个属性,大小和方向,我们先确定u’的大小(即长度,或者模)&#xf…

向量的投影与射影

一、概念比较 ①人教A版:已知两个非零向量与,我们把数量叫做与的数量积(或内积),记作,即,其中是与的夹角,()叫做向量在方向上(在方向上&#xff0…

向量的平面投影 ProjectOnPlane

1 定义 - ProjectOnPlane // // 摘要: // Projects a vector onto a plane defined by a normal orthogonal to the plane. // // 参数: // planeNormal: // The direction from the vector towards the plane. // // vector: // The location of the vector a…

线性代数 --- 投影Projection 一(投影向量p)

线性代数中的投影 之前看过Gilbert strang老爷爷在MIT主讲的线性代数视频,令我印象最深的,就是他讲过的一堂关于投影的课。倒不是这堂课的内容本身有多么的吸引我,反倒是他在这堂课中所说的一句话,时至今日都另我印象深刻。 他的…

空间向量在任意平面的投影公式推导 (矩阵方法)

若 V是Rn 的一个子空间,已知V的一组基向量 {b1, b2, b3,... bk} 则: 可构建矩阵 :A(nxk) {b1 b2 b3 b4...bn} 有: x(m,n,q) 为空间向量 矩阵 A 包含平面的基向量 A(3x3) 根据投影的定义有 : 原向量 - 投影向量 投…

向量投影证明

https://stackoverflow.com/questions/52339320/unity-shader-hlsl-equivalent-of-vector3-projectonplane a 在 b 上的投影 感觉向量还是这样写好看 mathmatica Dot[{1,0} , {-1,0}] // 点乘 是一个数 {1,0} x {-1,0} …

线性代数 --- 投影Projection 六(向量在子空间上的投影)

向量b在多维子空间上的投影 回顾:任意向量b在另一个向量上(直线上)的投影 在研究向量在子空间上的投影前,先回顾一下前面学习的一个任意向量b在另一个向量a上的投影,共三个部分。 1,求权重系数(…

方向余弦,向量夹角,向量的投影

方向余弦:用以确定向量的方向的量.向量(或有向直线)与坐标轴正向或基向量的交角称为向量的方向角.向量的方向角的余弦称为向量的方向余弦.一个向量的方向可以用它的方向角或方向余弦来确定.设向量rxiyjzk的方向角为α,β,γ,则&am…