NFS

介绍

网络文件系统(Network File System)是一种分布式文件系统,允许网络中不同操作系统的计算机共享文件
基于TCP/IP协议层,可以将远程计算机磁盘挂载到本地,读写文件时像本地磁盘一样操作
采用c/s工作模式

NFS在文件传送或信息传送过程中依赖于RPC(Remote Procedure Call)协议。
RPC协议可以在不同的系统间是哟个,此通信协议设计与主机及操作系统无关。
NFS本身可以认为是RPC的一个程序,只要用到NFS的地方都要启动RPC服务,无论是客户端还是服务端。
NFS是一个文件系统,RPC负责消息的传输。

NFS协议

image.png

VFS:虚拟文件系统,为用户空间提供与文件系统接口交互的一种
NFS协议:
NFS客户端和服务端
基于RPC调用,
基于TCP/IP 网络进行数据通信的
local disk:本地文件系统,磁盘上数据的一种组织方式,决定数据以什么样的形式存储在存储设备上

RPC

介绍

远程过程调用,不同机器上不同服务之间的一种通信方式

1.NFS协议本身没有网络传输功能,所有基于远程过程调用协议实现
2.提供一个面向过程的远程服务接口
3.可以通过网络从远程主机程序上请求服务,而不需要了解底层的网络协议
4.工作在OSI模型的会话层,可以遵循RPC应用层协议提供端口注册功能

RPC通过网络端口 111 来监听客户端请求

协议模型

image.png

NFS和RPC服务模型

image.png

Portmapper服务(rpcmind)
1.监听在111端口,接收客户端请求
2.会去记录已经注册成功的服务及其对应的端口号
NFS服务:两个服务 mountd 和nfsd
1.向portmapper注册关于mountd服务端的端口号是20048
2.向portmapper注册关于nfsd服务端的端口号是2049.
客户端:
向NFS服务端发送请求 ,发往111端口
1.得知mountd监听的端口号
2.得知nsfd服务监听的端口号
3.直接去访问相应的端口号,来处理相应的请求工作
mountd服务:客户端请求挂载的时候,挂载远程文件系统的时候
nsfd服务:客户端想要请求NFS服务端资源的时候

NFS相关包和工具

nfs-utils:NFS主要组件,包含rpc.nfsd和rpc.mountd这两个核心守护进程
rpcbind:提供rcp端口映射的守护进程及其相关文件、执行文件等
exportfs:在nfs服务端,维护nfs共享资源的命令
showmount:在NFS客户端查看服务器共享的目录
nfsstat:显示nfs状态统计信息
rpcinfo:显示由RPC维护的端口映射,显示已经注册的RPC服务列表

NFS服务概述

  • 安装nfs-utils和 rpcbind
    • [root@localhost ~]# yum install nfs-utils rpcbind -y
  • 服务包:nfs-utils
  • 服务类型:由systemd启动的守护进程
  • 配置单元:/usr/lib/systemd/system/nfs.service
  • 守护进程:rpc.nfsd rpc.mountd等
  • 端口号: 2049(nfsd) 200048(mountd) 其他端口由rpcbind(111)分配
  • 相关配置:/etc/exprotfs
  • 相关软件包:rpcbind(必须),tcp_wrappers
  • 服务启动:
    • systemctl start rpcbind 按顺序
    • systemctl start nfs-server
  1. [root@node1 ~]# systemctl start rpcbind
  2. [root@node1 ~]# systemctl start nfs-server
  3. [root@node1 ~]# ss -tanl | egrep "111|2049|20048" # 查看端口是否处于监听状态
  4. LISTEN 0 128 *:111 *:*
  5. LISTEN 0 128 *:20048 *:*
  6. LISTEN 0 64 *:2049 *:*
  7. LISTEN 0 128 :::111 :::*
  8. LISTEN 0 128 :::20048 :::*
  9. LISTEN 0 64 :::2049 :::*

NFS服务端配置

  • 主配置文件
    • /etc/exportfs
  • 格式:

共享文件 [主机表1(参数项)] [主机表2(参数项)]

  • 参数项 控制共享目录的访问权限,用户映射等待

    - ro:只读
    - rw:读写
    - sync:同时将数据写入到内存与硬盘中,保证不丢失数据
    - async:优先将数据保存到内存,然后再写入硬盘,效率高,但可能会丢失数据
    - root_suqash:NFS客户端以root用户访问时被映射为匿名用户
    - no_root_suqash:当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员
    
  • exportfs命令 用户维护NFS共享目录列表

当配置了/etc/exportfs文件后,可以使用exportfs命令直接使其生效
参数

  - -r:重新挂载/etc/exportfs中的设定
  - -a:全部挂载或卸载/etc/exportfs配置文件中的参数
  - -u:卸载共享目录
  - -v:显示输出列表的同时,显示设定参数
  • 后台进程

NFS服务由4个后台进程组成,分别是rpc.nfsd、rpc.statd、rpc.mountd和rpc.rquotad

进程 说明
rpc.nfsd 负责主要的工作
rpc.statd 负责抓取文件锁
rpc.mountd 负责初始化客户端的mount请求
rpc.rquotad 负责对客户文件的磁盘配额限制
  • 确认服务是否启动

rpcinfo 和showmount

NFS客户端

  • showmount命令

    • 常用参数
      • -e:显示NFS的共享列表
      • -a:显示本机挂载的文件资源情况和NFS资源的情况
      • -v:显示版本号
      • -d:查看哪些共享目录已经被客户端挂载
  • NFS文件系统挂载和卸载

    • 挂载:
      • mount -t nfs [-o 参数] 服务器地址:/共享目录 /本地挂载点

-t指明文件类型

  • 卸载:

    • umount /本地挂载点
  • 在启动时挂载NFS文件系统

    • /etc/fstab
    • x.x.x.x:/nfsfile/ /nfsfile/ nfs default 0 0

NFS服务部署

[root@localhost ~]# yum  install nfs-utils  rpcbind -y
[root@localhost ~]# mkdir /nfsfile 
[root@localhost ~]# chmod ‐Rf 777 /nfsfile/ 
[root@localhost ~]# vim /etc/exporfts
[root@localhost ~]# cat /etc/exporfts
/nfsfile    192.168.10.0/24(rw,sync,no_root_squash)
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs-server
[root@localhost ~]# showmount -e
Export list for localhost.localdomain:
/nfsfile    192.168.10.0/24(rw,sync,no_root_squash) *
[root@localhost ~]# mount -t nfs 192.168.10.138:/nfsfile /mnt/nfsfile

遇到的问题
Mar 22 06:15:53 node2 rpc.mountd[7747]: Caught signal 15, un-registering and exiting.
Mar 22 06:44:01 node3 rpcbind[18416]: cannot open file = /run/rpcbind/portma.xdr for writing
Mar 22 06:44:01 node3 rpcbind[18416]: cannot save any registration

Samba

介绍

samba是一种在Linux环境中允许的免费软件。
利用samba,Linux可以创建基于Windows的计算机使用共享。另外,samba还提供一些工具,允许Linux用户从Windows计算机进入共享和传输文件。
samba利用smb协议和CIFS
运行在TCP/IP上

SMB协议

SMB(Server Message Block,信息服务块)是一种在局域网上共享文件和打印机的通信协议,为局域网内的不同计算机系统之间提供文件及打印机等资源的共享。
SMB协议是基于客户端/服务器型协议,客户端通过该协议额可以访问服务器上的共享文件系统、打印机以及其他资源
使用NetBIOS API实现面向连接的协议,SMB协议为windows客户端程序和服务提供一个通过虚拟链路请求——按照响应方式进行通信的机制
工作原理:让NetBIOS与samba协议运行在tcp/Ip上,使用NetBIOS的名字解析器,从而让linux系统在网络邻居中可见

CIFS协议

通用网际文件系统
linux和windows机器之间网络共享协议

  - 是微软信息块协议(smb)的增强版
  - 提供计算机用户在启用内部和因特网上共享文件的标准方法
  - CIFS协议在TCP/IP 上运行,并利用DNS服务增强了它的可拓展性

CIFS特点:

  - 保证访问文件完整性
  - 为慢连接优化
  - 为文件和目录的访问提供安全性
  - 使用同一编码(Unicode)文件名
  - 使用全局文件名

Sanba服务

一组软件包,使Linux支持SMB/CIFS协议
它可以几乎运行在所有的unix操作系统上
基于GPL发行,更新速度更快

Samba功能:

  • 使Linux主机成为windows网络中的一份子,与windows系统互相分享资源
  • 让Linux主机能使用windows系统的共享的文件和打印机
  • 让LInux/window客户端提供文件共享服务和远程打印服务
  • 使Linux主机称为win名称服务器,提供NetBIOS名字解析服务器
  • 提供用户身份验证功能
  • 支持SSL 安全套接层协议

    Samba提供服务:

  • 文件和打印机共享

  • 用户验证和授权
  • 名字解析
  • 浏览(服务通告)

    Samba守护进程:

  • Smbd:实现共享和验证授权功能

  • Nmbd:实现名字解析和浏览服务

    Samba的RPM包:

  • samba-common:samba服务端和客户端所需要的文件

  • samba:Samba服务端软件
  • samba-winbind:可选的服务
  • samba-client :客户端软件
  • samba-swat:web配置工具

Samba服务概览

  • 安装:yum -install samba -y
  • 服务包:samba
  • 服务类型:由Systemd启动的守护进程
  • 配置单元:
    • /usr/lib/systemd/system/nmb.service
    • /usr/lib/systemd/system/smb.service
  • 守护进程:
    • /usr/sbin/nmbd 实现名字解析和浏览服务
    • /usr/sbin/smdb 实现共享和验证授权功能
  • 配置文件: /etc/samba/*
  • 监听的端口

NetBIOS: UDP 137 138 TCP 139
SMB基于TCP之上:tcp 445

  • Samba的相关工具:

    • 服务端工具:
      • /usr/bin/smbstatus:用于查找网络中的samba服务器
      • /usr/bin/smbpasswd:用于设置samba用户账户和密码
      • /usr/bin/teatparm:用于检查配置文件的正确性
    • 客户端工具:
      • /usr/bin/findsmb:用于查找网络中的samba服务器
      • /usr/bin/smbclient:linux的Samba客户端
  • Samba的相关配置:

    • /etc/sysconfig/samba #用于设置守护进程的启动参数
    • /etc/samba/smb.conf # 主配置文件
    • /etc/samba/smbuser #用于映射Linux用户和window用户
  • 默认的主配置文件:

  • ``` [root@localhost ~]# cat /etc/samba/smb.conf

    See smb.conf.example for a more detailed config file or

    read the smb.conf manpage.

    Run ‘testparm’ to verify the config is correct after

    you modified it.

[global] #全局参数 workgroup = SAMBA #工作组 security = user #安全等级:doamin,ads

passdb backend = tdbsam   #后疼痛口令数据库类型为:tdb

printing = cups
printcap name = cups
load printers = yes  #是否启动打印机选项
cups options = raw   #打印机选项

[homes] #共享参数 comment = Home Directories valid users = %S, %D%w%S browseable = No read only = No #只读权限 inherit acls = Yes

[printers] #打印机共享参数 comment = All Printers path = /var/tmp printable = Yes create mask = 0600 browseable = No

[print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775 [……]多个自定义项 [database] path=/home/database public=no comment= this is eagles dir writable=yes [database] comment= this is eagles dir path=/home/database public=no writable=yes


- 文件系统权限和Sanba共享权限
   - samba服务器要将本地系统共享给samba用户,涉及本地文件系统和samba两种权限
   - 本地文件系统权限:
      - **chomd和chown命令**
   - samba权限:
      - 在主配置中使用samba的访问控制参数
- **命令 **

pbdedit    <br />-a:创建Samba用户<br />-x:用户名,删除Samba用户<br />-L:列出用户列表<br />-Lv:列出用户详细信息的列表<br />-u:指定用户
<a name="d2NsF"></a>
### Samba服务部署
1.安装软件包

[root@localhost ~]# yum install samba* -y


2.创建用户访问共享资源的账户信息

[root@node1 ~]# useradd lars 创建用户



[root@node1 ~]# pdbedit -a -v lars 创建Samba用户 new password: retype new password: Unix username: lars NT username:
Account Flags: [U ] User SID: S-1-5-21-49156473-3917839817-170392834-1000 Primary Group SID: S-1-5-21-49156473-3917839817-170392834-513 Full Name:
Home Directory: \node1\lars HomeDir Drive:
Logon Script:
Profile Path: \node1\lars\profile Domain: NODE1 Account desc:
Workstations:
Munged dial:
Logon time: 0 Logoff time: Wed, 06 Feb 2036 10:06:39 EST Kickoff time: Wed, 06 Feb 2036 10:06:39 EST Password last set: Sat, 21 Mar 2020 22:06:45 EDT Password can change: Sat, 21 Mar 2020 22:06:45 EDT Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


3.创建用户共享资源的文件目录

[root@localhost ~]# mkdir /home/database [root@localhost ~]# chown -Rf eagles:eagles /home/database 授权


4.修改主配置文件<br />先将配置文件备份

[root@node1 samba]# cp smb.conf smb.conf{bak}

修改配置文件,在里面添加下面的内容

[database] comment= this is lars dir path=/home/database public=no writable=yes


5.检查正确性:

[root@node1 samba]# systemctl restart smb [root@node1 samba]# systemctl restrat nmb [root@node1 samba]# netstat -tunl | egrep ‘ 137|138|139|445’ 查看端口是否监听 tcp 0 0 0.0.0.0:139 0.0.0.0: LISTEN
tcp 0 0 0.0.0.0:445 0.0.0.0:
LISTEN
tcp6 0 0 :::139 ::: LISTEN
tcp6 0 0 :::445 :::
LISTEN
udp 0 0 192.155.142.255:138 0.0.0.0:
udp 0 0 192.155.142.146:138 0.0.0.0:

udp 0 0 192.168.10.255:138 0.0.0.0:
udp 0 0 192.168.10.142:138 0.0.0.0:

udp 0 0 0.0.0.0:138 0.0.0.0:*


6.测试:<br />**window连接**<br />打开运行:\\x.x.x.x\database<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/407678/1584844767819-7215c4be-4555-4eec-a91b-522c9cc54d1e.png#align=left&display=inline&height=136&margin=%5Bobject%20Object%5D&name=image.png&originHeight=272&originWidth=513&size=22071&status=done&style=none&width=256.5)<br />使用的时候,要关系防火墙和selinux<br />之后输入创建的samba用户的用户名和密码,进入/home/database文件目录下<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/407678/1584844802735-65f7da65-5fe2-4445-b4d4-6fdd87ee0ad5.png#align=left&display=inline&height=224&margin=%5Bobject%20Object%5D&name=image.png&originHeight=447&originWidth=1001&size=24602&status=done&style=none&width=500.5)

**Linux连接:**<br />测试连接:-L,  --list=HOST     Get a list of shares available on

[root@localhost ~]# smbclient -L //192.168.230.130/database -U eagles Enter SAMBA\eagles’s password:

Sharename       Type      Comment
---------       ----      -------
print$          Disk      Printer Drivers
database        Disk      this is eagles dir
IPC$            IPC       IPC Service (Samba 4.8.3)
eagles          Disk      Home Directories

Reconnecting with SMB1 for workgroup listing.

Server               Comment
---------            -------

Workgroup            Master
---------            -------
SAMBA                LOCALHOST

<a name="aNXjw"></a>
# FTP

-  ftp协议:文本传输协议

协议定义了一个在远程计算系统和本地计算机系统之间传输文件的一个标准<br />ftp运行在osi模型的应用层,并利用传输协议**tcp**在不同主机之间提供可靠的数据传输,不支持UDP<br />ftp在传输文件中还支持断点续功能,可以大幅度减少网络带宽的开销

- ftp模型:

用户接口:提供了一个用户接口并使用客户端协议解释器的服务<br />客户端协议解释器:向远程服务器发送命令,建立数据传输过程<br />服务端协议解释器:响应客户端发送的命令并驱动服务端进行数据传输<br />——  以上  ftp建立了控制连接(主要用作于执行和响应ftp命令)<br />客户端数据传输协议:负责完成和服务端的数据传输过程及客户端本地文件系统的通信<br />服务端数据传输协议:负责完成和客户端的数据传输过程及服务端本地文件系统的通信<br />——以上  ftp建立了数据连接(数据传输)

- ftp客户端 —————— ftp服务端

  --控制连接--    21端口<br />  --数据连接--    20端口

- 连接方式: 控制连接和数据连接,根据不同的需求
         - 控制连接:建立连接及命令需要更小的延迟时间
         - 数据连接:需要更大的数据吞吐量

- 数据连接:
      - ftp 服务监听20端口来等待数据的过程
      - 数据连接要去依赖控制连接

- 控制连接:
      - 主要用来发送和响应ftp命令
      - 需要很小的网络带宽
      - ftp服务端监听21端口来等待控制连接的建立
      - 进行身份验证,当身份通过之后,建立数据连接
      - 当数据传输结束后,会中断数据连接
      - 在ftp连接期间,控制连接一直保持的,在数据连接存在期间,控制连接必须存在
      - 控制连接一旦断开,数据连接会自动关闭

- 建立数据连接方式:
      - 主动连接模式
            - 1.tcp三次握手,建立控制连接,客户端时随机端口,服务端时21端口,
            - 2.控制连接建立之后,身份验证,协商数据连接的模式:主动模式;随后客户端会向服务端 发送port报文,表明:IP+port,等待服务端(20端口)向客户端建立数据连接请求
            - 3.服务端发送数据连接请求,建立数据连接之后开始进行数据传输    

      - 被动连接模式
            - 1.tcp三次握手,建立控制连接,客户端时随机端口,服务端时21端口,
            - 2.控制连接建立之后,身份验证,协商数据连接的模式:被动模式;随后客户端会向服务端 发送PASV报文,表示我们用被动连接模式,
            - 3.服务端接收到PASV报文,向客户端发送Port报文:IP+port,表明服务端
            - 4.客户端发送数据连接请求,建立数据连接

是主动还是被动取决于服务端

- ftp服务的使用者:
   - 本地用户
      - 既可以shell登录,又可以ftp登录
      - 本地用户可以通过输入自己的账号和口令来进行授权登录
      - 当授权访问的本地用户登录系统后,其登录为用户自己的家目录
      - 本地用户既可以上传也可以下载
   - 虚拟用户:
      - 由ftp服务自己拥有的账户,只能用户文件传输服务,称之为“guest”用户
      - 虚拟用户可以通过输入自己的账户和口令来进行授权登录
      - 当授权访问 的虚拟用户登录系统后,其登录目录为服务器为其指定的目录
      - 通常情况下,虚拟用户既可以下载也可以上传
   - 匿名用户:
      - 在ftp服务端上没有该用户,则称之为匿名用户
      - 登录名:anoymous没有密码
      - 若发图片服务器提供匿名访问功能,则匿名用户可以通过输入账号(anonymous)和口令(用户自己 的mail地址)来进行登录
      - 当匿名用户登录系统后,其登录目录为匿名ftp服务器的根目录/var/ftp/pub目录
      - 一般情况下匿名ftp服务器只提供下载功能,不提供上传服务器或者上传收到一定的限制<br />


<a name="frQBZ"></a>
# Vsftpd服务
<a name="95QOx"></a>
## 简介

1. 是一个安全、高速、稳定的ftp服务器
1. 可以设定多个基于IP的虚拟ftp服务器
1. 匿名ftp服务器更便于使用
1. 不执行安装任何外部程序,可以有效避免安全隐患
1. 自持虚拟用户,且支持每个虚拟用户拥有独立的配置(权限相关等)
1. 支持PAM或xinetd/tcp_wrappers的认证方式
1. 支持带宽限制等
<a name="742Eb"></a>
## 安装与配置

[root@localhost ~]# yum install vsftpd -y


- 安装vsftpd服务: yum install vsftpd -y <br />
- 服务包: vsftpd
- 服务类型:由systemd启动的守护进程
- 配置单元:/usr/lib/systemd/system/vsftpd.service
- 守护进程:/usr/sbin/vsftpd
- 端口:21(ftp控制) 20(ftp-data)
- 主配置文件:
   - /etc/vsftpd.conf
- 用户访问配置文件:
   - /etc/vsftpd/ftpusers
   - /etc/vsftpd/user_list
- 日志配置文件:
   - /etc/logrotate.d/vsftpd
- 主配置文件:
   - 默认配置:

[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf |grep -Ev “^$|^#” anonymous_enable=YES #是否允许匿名用户可以登录 local_enable=YES #是否允许本地用户登录 write_enable=YES #是否对登录用户可写 local_umask=022 #本地用户上传文件默认权限修改 dirmessage_enable=YES #是否激活目录欢迎信息功能 xferlog_enable=YES #是否让系统自动维护上传和下载的日志 connect_from_port_20=YES # 数据连接的监听端口,是否设定ftp服务将启用ftp数据端口的连接请求 xferlog_std_format=YES #以xferlog的格式记录日志 listen=NO #是否允许监听ipv4,以被动模式运行 listen_ipv6=YES #是否允许监听IPv6 pam_service_name=vsftpd #定义pam服务的配置文件,默认/etc/pam.d/vsftpd文件 userlist_enable=YES #是否允许ftpuser文件中的用户登录访问控制方式 tcp_wrappers=YES #是否使用tcp_wrapper作为主机访问控制方式



准备环境

[root@localhost ~]# systemctl enable vsftpd Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service. [root@localhost ~]# systemctl start vsftpd [root@localhost ~]# getenforce Enforcing [root@localhost ~]# systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-08-13 20:42:02 EDT; 5h 21min ago Docs: man:firewalld(1) Main PID: 8798 (firewalld) CGroup: /system.slice/firewalld.service └─8798 /usr/bin/python -Es /usr/sbin/firewalld —nofork —no…

Aug 13 20:42:00 localhost.localdomain systemd[1]: Starting firewalld - … Aug 13 20:42:02 localhost.localdomain systemd[1]: Started firewalld - d… Hint: Some lines were ellipsized, use -l to show in full.


<a name="4OBzE"></a>
### 匿名登录用户实例

- 添加参数
   - 1.修改主配置文件:[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf
      - anomyous_enbale=YES

anon_umask=022<br />anon_upload_enable=yes<br />anon_mkdir_write_enable=yes<br />anon_other_write_enable=yes

   - 2.重启服务
      - systemctl restart vsftpd
   - 3.修改/var/ftp   默认:ftp家目录:/var/ftp/ ./pub一般公共的
      - chown -Rf ftp /var/ftp/pub

[root@localhost ~]# ll -d /var/ftp/pub/ drwxr-xr-x. 2 ftp root 6 Oct 30 2018 /var/ftp/pub/


在安装vsftp服务器默认拥有的

   - 4.登录测试

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


登录方式:

            - ftp客户端 :

ftp x.x.x.x

            - 我的电脑
            - 浏览器:

 ftp://x.x.x.x
<a name="bcbQ8"></a>
### 本地用户登录示例:
1.检查配置文件:vi /etc/vsftpd/vsftpd.conf<br />local_enable=YES<br />write_enable=YES<br />pam_service_name=vsftpd<br />userlist_enable=YES<br />2.检查/etc/pam./vsftpd<br />auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed<br />      userlist_deny=NO : only allow users in this file<br />userlist_deny=YES:(default),never  allow users in this file

[root@localhost ~]# vim /etc/vsftpd/ftpusers

root

[root@localhost ~]# vim /etc/vsftpd/user_list

root

3.登录测试

[root@localhost ~]# ftp 192.168.230.130 Connected to 192.168.230.130 (192.168.230.130). 220 (vsFTPd 3.0.2) Name (192.168.230.130:root): root 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ftp> pwd 257 “/root” #root用户家目录的位置 ``` image.png
image.png
image.png

虚拟用户登录示例

1.创建用户FTP认证的用户数据库文件
mkdir /etc/vsftpd/vocnf
cat >
1.1将明文信息转成数据库文件
dbload -T -t hash -f /etc/vsftpd/vconf/vftpuser.txt /etc/
2.创建vsftpd程序用于存储根目录以及虚拟用户映射的系统本地用户
useradd -d /var/ftproot/ -s /sbin/nologin virtual
3.创建用户支持虚拟用户的PAM文件
cp /etc/pam.d/vsftpd{,bak}
vim /etc/pam.d/vsftpd
4.修改配置文件:
sed -i ‘s/ (^anon
.*)

实例3:虚拟用户
1. 关闭防火墙和SELINUX
2. 创建用于FTP认证的用户数据文件
mkdir /etc/vsftpd/vconf
cat > /etc/vsftpd/vconf/vftpuser.txt < xiaohong # 用户名1
xiaohong # 密码
xiaoming # 用户名2
xiaoming # 密码
EOF
3. 将明文信息转成数据文件
db_load ‐T ‐t hash ‐f /etc/vsftpd/vconf/vftpuser.txt /etc/vsftpd/vconf/vftpuser.db

  1. 创建vsftpd服务应用程序用于存储文件的根目录已经虚拟用户映射的系统本地用户
    useradd -d /var/ftproot -s /sbin/nologin virtual
    chmod -Rf 755 /var/ftproot/

  2. 建立用户支持虚拟用户的PAM文件
    [root@test pam.d]# tail -n2 /etc/pam.d/vsftpd
    auth required pam_userdb.so db=/etc/vsftpd/vconf/vftpuser
    account required pam_userdb.so db=/etc/vsftpd/vconf/vftpuser

    6. 配置参数:
    # 虚拟用户相关配置参数:
    guest_enable=YES
    guest_username=virtual
    allow_writeable_chroot=YES
    user_config_dir=/etc/vsftpd/vconf/

    7. 为不同虚拟用户设置不同的权限
    [root@test vconf]# cat /etc/vsftpd/vconf/zhangsan
    local_root=/var/ftproot/
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_other_write_enable=YES

    8. 重启vsftpd服务并登陆测试