规划节点
| IP | 主机名 | 节点 |
|---|---|---|
| 192.168.200.30 | ftp | FTP服务器、NFS客户端 |
| 192.168.200.31 | nfs | NFS服务器 |
安装FTP服务
1、什么是FTP
FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一,我们现在也一直有在用着FTP协议来进行各种文件的传输,FTP为我们提供了一种可靠的方式在网络上进行文件的共享。
2、 FTP原理
FTP是C/S架构的服务,拥有一个服务器端和一个客户端,FTP底层通过TCP协议来作为传输协议,所以FTP协议是一种可靠的文件传输方式,FTP提供了两个端口号,20和21号端口,20号是数据接口,提供数据之间的传输,21号是命令接口,提供命令之间的传输。
FTP服务端与客户端连接一般有两种模式:主动模式(Active Mode)和被动模式(Passive Mode)
在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送FTP用户名和密码,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令,告诉服务端客户端采用主动模式并开放了端口。FTP服务器接收到PORT命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。如图:
(主动模式)
在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,发送用户名和密码进行登陆,同时会开启N+1端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P(端口P的范围是可以设置的,后面会说到这个是很重要的)进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。如图:
3、FTP状态码
FTP状态码
1xx – 肯定的初步答复
这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。
110 重新启动标记答复。
120 服务已就绪,在 nnn 分钟后开始。
125 数据连接已打开,正在开始传输。
150 文件状态正常,准备打开数据连接。
2xx – 肯定的完成答复
一项操作已经成功完成。客户端可以执行新命令。
200 命令确定。
202 未执行命令,站点上的命令过多。
211 系统状态,或系统帮助答复。
212 目录状态。
213 文件状态。
214 帮助消息。
215 NAME 系统类型,其中,NAME 是 Assigned Numbers 文档中所列的正式系统名称。
220 服务就绪,可以执行新用户的请求。
221 服务关闭控制连接。如果适当,请注销。
225 数据连接打开,没有进行中的传输。
226 关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。
227 进入被动模式 (h1,h2,h3,h4,p1,p2)。
230 用户已登录,继续进行。
250 请求的文件操作正确,已完成。
257 已创建“PATHNAME”。
3xx – 肯定的中间答复
该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。
l 331 用户名正确,需要密码。
l 332 需要登录帐户。
l 350 请求的文件操作正在等待进一步的信息。
4xx – 瞬态否定的完成答复
该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。
421 服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。
425 无法打开数据连接。
426 Connection closed; transfer aborted.
450 未执行请求的文件操作。文件不可用(例如,文件繁忙)。
451 请求的操作异常终止:正在处理本地错误。
452 未执行请求的操作。系统存储空间不够。
5xx – 永久性否定的完成答复
该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。
500 语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。
501 在参数中有语法错误。
502 未执行命令。
503 错误的命令序列。
504 未执行该参数的命令。
530 未登录。
532 存储文件需要帐户。
550 未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。
551 请求的操作异常终止:未知的页面类型。
552 请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。
553 未执行请求的操作。不允许的文件名。
常见的FTP 状态代码及其原因
150 – FTP 使用两个端口:21 用于发送命令,20 用于发送数据。状态代码 150 表示服务器准备在端口 20 上打开新连接,发送一些数据。
226 – 命令在端口 20 上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。
230 – 客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。
331 – 客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。
426 – 命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。
530 – 该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS 的配置可能拒绝匿名访问。
550 – 命令未被执行,因为指定的文件不可用。例如,要 GET 的文件并不存在,或试图将文件 PUT 到您没有写入权限的目录。
4、 FTP客户端
ftp命令程序:是最简单的FTP客户端工具,Windows和Linux都拥有ftp命令程序,可以连接到FTP服务器进行交互式的上传、下载通信。
图形化FTP客户端工具:Windows中较常用的包括CuteFTP、FlashFXP、LeapFTP、Filezilla等,在图形化的客户端程序中,用户通过鼠标和菜单即可访问、管理FTP资源,而不需要掌握FTP交互命令,更易于使用。
下载工具:FlashGet、Wget等,包括大多数网页浏览器程序,都支持通过FTP协议下载文件,但因不具备FTP上传管理功能,通常不称为FTP客户端工具。
本案例采用的FTP客户端工具:Filezilla、LFTP(yum安装)。
官方网站:https://filezilla-project.org/download.php?show_all=1
5、 vsftp部署安装
通过yum源安装vsftp:
yum intall vsftpd# 启动服务yum systemctl start vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
常用的全局配置项:
listen=YES:是否以独立运行的方式监听服务
listen_address=192.168.x.x:设置监听的 IP 地址
listen_port=21:设置监听 FTP 服务的端口号
write_enable=YES:是否启用写入权限
download_enable=YES:是否允许下载文件
userlist_enable=YES:是否启用 user_list 列表文件
userlist_deny=YES:是否禁用 user_list 中的用户
max_clients=0:限制并发客户端连接数
max_per_ip=0:限制同一 IP 地址的并发连接数
guest_enable=YES:启用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf :虚拟用户使用的配置文件目录
allow_writeable_chroot=YES:允许写入用户主目录
常用的匿名 FTP 配置项:
anonymous_enable=YES:启用匿名访问
anon_umask=022:匿名用户所上传文件的权限掩码
anon_root=/var/ftp:匿名用户的 FTP 根目录
anon_upload_enable=YES:允许上传文件
anon_mkdir_write_enable=YES:允许创建目录
anon_other_write_enable=YES:开放其他写入权
anon_max_rate=0:限制最大传输速率(字节/秒)
常用的本地用户 FTP 配置项:
local_enable=YES:是否启用本地系统用户
local_umask=022:本地用户所上传文件的权限掩码
local_root=/var/ftp:设置本地用户的 FTP 根目录
chroot_local_user=YES:是否将用户禁锢在主目录
6、虚拟用户配置
在vsftpd服务器中,使用虚拟用户的主要好处在与:可以将FTP登录的账号与系统登录账号区分开,用户名、密码都不相同,从而进一步增强了FTP服务器的安全性。
基本步骤。如下图:
1.创建账号数据
vsftpd服务使用Berkeley DB格式的数据库文件来存放虚拟用户账号。建立这种数据库文件需要用到db_load工具,db_load工具由db4-utils软件包提供,默认已安装。
创建文本格式的用户名、密码列表。
奇数行:账号名,偶数行:密码(即上一行中账号的密码)
转化为Berkeley DB 格式的数据文件
需要db_load 转换工具,默认已安装。
“-f”用于指定数据源文件
“-T”表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
“-t hash”用于指定读取数据文件的基本方法
为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以免数据外泄。
[root@localhost xmcsxy]# vi /etc/vsftpd/users.conf
yanxu
123456
yanxu1
000000
[root@localhost xmcsxy]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
[root@localhost xmcsxy]# chmoad 600 /etc/vsftpd/users*
[root@localhost xmcsxy]# ls -lh /etc/vsftpd/user*
-rw-------. 1 root root 361 4月 1 2020 /etc/vsftpd/user_list
-rw-------. 1 root root 27 9月 22 10:56 /etc/vsftpd/users.conf
-rw-------. 1 root root 12K 9月 22 10:57 /etc/vsftpd/users.db
## 创建 FTP 根目录及虚拟用户映射的系统用户(此账号无需设置密码及登录shell)
[root@localhost xmcsxy]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
[root@localhost xmcsxy]# mkdir -p /home/vsftpd/xmcsxy
[root@localhost xmcsxy]# chmod -R 755 /home/vsftpd
建立支持虚拟用户的PAM认证文件
创建好虚拟用户的账号数据文件后,还需要对vsftpd服务的配置做相应的调整,以便识别并读取新的用户信息。在vsftpd服务器中,用户认证是通过PAM(Pluggable Authentication Module,可插拔认证模块)机制来实现的,该机制包含灵活的选择认证方式。Vsftpd服务默认的PAM认证文件位于/etc/pam.d/vsftpd,该文件适用于以Linux主机的系统用户账号进行认证。若要读取虚拟用户的账号数据文件,则需要创建新的PAM认证配置。
[root@localhost xmcsxy]# vi /etc/pam.d/vsftpd
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
添加虚拟用户支持
在vsftpd.conf 文件中添加虚拟用户支持配置。
[root@localhost xmcsxy]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO ##禁止匿名登陆
chroot_local_user=YES ##禁止用户访问除主目录以外的目录
guest_enable=YES ##启用虚拟用户
allow_writeable_chroot=YES ##允许写入用户主目录
为不同的虚拟用户建立独立的配置文件
通过前面的几个步骤,实际上已经可以重新加载vsftpd并提供服务了,使用任一个虚拟用户账号都可以登录FTP服务器并下载文件。但因为所有的虚拟用户都映射到同一个系统用户账号,因此FTP访问权限也是相同的,要么只能下载,要么只能上传。
若要为不同的虚拟用户账号设置不同的访问权限,可以通过为每个虚拟用户建立单独的配置文件来实现。为FTP用户启用独立配置文件,需要修改vsftpd.conf配置文件,添加“user_config_dir”配置项
[root@localhost xmcsxy]# vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vsftpd_user_conf ##虚拟用户使用的配置文件目录
有了上述配置以后,就可以在/etc/vsftpd/vsftpd_user_conf 目录中为每个虚拟用户分别建立配置文件了
[root@localhost xmcsxy]# mkdir -p /etc/vsftpd/vsftpd_user_conf
[root@localhost xmcsxy]# cd /etc/vsftpd/vsftpd_user_conf/
[root@localhost xmcsxy]# vim yanxu
local_root=/home/vsftpd/xmcsxy # 当用户本地登入时,将被更换到定义目录下。默认值为个用户的家目录
anon_upload_enable=YES #是否允许登陆用户有上传权限
write_enable=YES # 是否登陆用户有写权限
7、重启服务并测试
[root@localhost vsftpd_user_conf]# systemctl restart vsftpd
[root@localhost vsftpd_user_conf]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
使用虚拟FTP 账户访问测试:
zhangsan用户可以登录,并可以浏览、下载,也可以上传。
测试之前:关闭防火墙以及安全规则;
[root@localhost vsftpd_user_conf]# systemctl enable vsftpd
[root@localhost vsftpd_user_conf]# systemctl stop firewalld
[root@localhost vsftpd_user_conf]# systemctl disable firewalld
[root@localhost vsftpd_user_conf]# setenforce 0
[root@localhost vsftpd_user_conf]#
先写入一个文件
[root@localhost vsftpd_user_conf]# cd /home/vsftpd/xmcsxy/
[root@localhost xmcsxy]# ls
a.txt 新建文本文档.txt
运用windows图形化FTP工具(Filezilla)
登陆
上传
把权限改为777
chmod -R 777 /home/vsftpd/

下载
查看错误日志
[root@localhost xmcsxy]# tail -f /var/log/secure
8、访问限制黑白名单
^C
[root@localhost xmcsxy]# useradd test1
[root@localhost xmcsxy]# useradd test2
[root@localhost xmcsxy]# passwd test1
更改用户 test1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
抱歉,密码不匹配。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
抱歉,密码不匹配。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost xmcsxy]# passwd test2
更改用户 test2 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost xmcsxy]# vi /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
test1
使用test1登陆
使用test2登陆
user_list 则是和vsftpd.conf中的userlist_enable和userlist_deny两个配置项紧密相关的,它可以有效,也可以无效,有效时它可以是一个黑名单,也可以是一个白名单!
userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。
为了说明这个问题,我们来建立两个测试用户:
test1: 在user_list中
test2:不在user_list中
然后我们分别给两个配置项取不同的值,分4种Case进行测试:
Case 1: userlist_enable=YES, userlist_deny=YES
test1: 拒绝登入
test2: 允许登录
Case 2: userlist_enable=YES, userlist_deny=NO
test1: 允许登录
test2:拒绝登录(如user_list文件开头的注释所述,甚至不会提示输入密码,即无登入提示框,直接拒绝连接)
Case 3: userlist_enable=NO,userlist_deny=NO
test1: 允许登录
test2: 允许登录
Case 4: userlist_enable=NO,userlist_deny=YES
test1: 允许登录
test2: 允许登录
当且仅当userlist_enable=YES时:userlist_deny项的配置才有效,user_list文件才会被使用;当其为NO时,无论userlist_deny项为何值都是无效的,本地全体用户(除去ftpusers中的用户)都可以登入FTP
当userlist_enable=YES时,userlist_deny=YES时:user_list是一个黑名单,即:所有出现在名单中的用户都会被拒绝登入;
当userlist_enable=YES时,userlist_deny=NO时:user_list是一个白名单,即:只有出现在名单中的用户才会被准许登入(user_list之外的用户都被拒绝登入);另外需要特别提醒的是:使用白名单后,匿名用户将无法登入!除非显式在user_list中加入一行:anonymous
NFS服务
什么是NFS服务?
它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
而 NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间的传输数据就要有相对应的网络端口;基本上NFS服务器的端口开在2049上,但是由于文件系统较为复杂,NFS其他程序需要开启一些额外的端口,而这些额外端口又是随机的;那么客户端如何去知道这些额外随机端口呢?
通过远程过程调用(Remote Procedure Call,RPC)协议来实现!
RPC与NFS如何通信?
因为NFS支持的功能相当多,而不同的功能都会使用不同的程序来启动,每启动一个功能就会启用一些端口来传输数据,因此NFS的功能对应的端口并不固定,客户端要知道NFS服务器端的相关端口才能建立连接进行数据传输,而RPC就是用来统一管理NFS端口的服务,并且统一对外的端口是111,RPC会记录NFS端口的信息,如此我们就能够通过RPC实现服务端和客户端沟通端口信息。
通讯步骤:
1)首先服务器端启动RPC服务,并开启111端口;
2)服务器端启动NFS服务,并向RPC注册端口信息;
3)客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口;
4)服务端的RPC(portmap)服务反馈NFS端口信息给客户端;
5)客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。
NFS在企业中的应用场景
在企业集群架构的工作场景中,NFS网络文件系统一般被用来存储共享视频、图片、附件等静态资源文件,通常网站用户上传的文件都会放到NFS共享中,例如BBS产品的图片、附件、头像(网站BBS的程序不要放在NFS共享中),然后前端所有节点在访问这些静态资源时都会读取NFS存储上的资源。
NFS是当前互联网系统架构中最常用的数据存储服务之一,特别是中小型网站应用频率更高。
注:BBS 泛指为论坛。
NFS部署
NSF服务端及客户端部署
环境为1908本地yum源,server端为7.8 2003 client端为7.5 1804
uname -a # 两台都要
yum -y install nfs-utils rpcbind # 安装nfs依赖包 “两台都要”
[root@ftp yumwei]# id nfsnobody # 查看nfsnobody用户在不在
uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
systemctl start rpcbind # 启动nfs相关rpc服务
systemctl enable rpcbind # 设置为开机自启
systemctl start nfs # 启动nfs服务
systemctl enable nfs # 设置开机自启
查看rpc端口
[root@ftp yumwei]# netstat -lntp | grep rpc
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2212/rpcbind
tcp 0 0 0.0.0.0:20048 0.0.0.0:* LISTEN 2277/rpc.mountd
tcp 0 0 0.0.0.0:39435 0.0.0.0:* LISTEN 2263/rpc.statd
tcp6 0 0 :::111 :::* LISTEN 2212/rpcbind
tcp6 0 0 :::20048 :::* LISTEN 2277/rpc.mountd
tcp6 0 0 :::33388 :::* LISTEN 2263/rpc.statd
查看端口映射情况
[root@nfs ~]# rpcinfo -p localhost
program vers proto port service
100000 4 tcp 111 portmapper
100000 3 tcp 111 portmapper
100000 2 tcp 111 portmapper
100000 4 udp 111 portmapper
100000 3 udp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 20048 mountd
100005 1 tcp 20048 mountd
100024 1 udp 39785 status
100024 1 tcp 47336 status
100005 2 udp 20048 mountd
100005 2 tcp 20048 mountd
100005 3 udp 20048 mountd
100005 3 tcp 20048 mountd
100003 3 tcp 2049 nfs
100003 4 tcp 2049 nfs
100227 3 tcp 2049 nfs_acl
100003 3 udp 2049 nfs
100003 4 udp 2049 nfs
100227 3 udp 2049 nfs_acl
100021 1 udp 49315 nlockmgr
100021 3 udp 49315 nlockmgr
100021 4 udp 49315 nlockmgr
100021 1 tcp 44592 nlockmgr
100021 3 tcp 44592 nlockmgr
100021 4 tcp 44592 nlockmgr
创建共享目录
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data # 更改目录权限
[root@nfs ~]# chmod 755 -R /data
添加一块磁盘永久挂载到/data目录上
添加新磁盘重启虚拟机
划分分区.
查看新磁盘的名字
[root@nfs ~]# cat /proc/partitions
major minor #blocks name
8 0 20971520 sda
8 1 1048576 sda1
8 2 19921920 sda2
8 16 20971520 sdb
11 0 4669440 sr0
253 0 17821696 dm-0
253 1 2097152 dm-1
分区
[root@nfs ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@nfs ~]# mkfs.ext4 /dev/sdb1 # 格式化分区并永久挂载
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5242624 blocks
262131 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2153775104
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
[root@nfs ~]# vi /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
[root@nfs ~]# mount -a
[root@nfs ~]# df -h # 查看是否挂载成功
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.4G 16G 8% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 20G 45M 19G 1% /data
配置nfs共享目录
[root@nfs ~]# vi /etc/exports
/data 192.168.200.0/24(rw,no_root_squash,async) # 分配no_root_squash权限
生效配置与检验
[root@nfs ~]# exportfs -rv
exporting 192.168.200.0/24:/data
[root@nfs ~]# showmount -e localhost
Export list for localhost:
/data 192.168.200.0/24
[root@nfs ~]# showmount -e 192.168.200.31 # 检测nfs共享目录创建成果
Export list for 192.168.200.31:
/data 192.168.200.0/24
调试与检验成果
将/data目录挂载到/home/vsftpd/xmcsxy/目录上
[root@ftp ~]# mount -t nfs 192.168.200.31:/data /home/vsftpd/xmcsxy/
[root@ftp ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 17G 1.4G 16G 8% /
/dev/sda1 1014M 137M 878M 14% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.200.31:/data 20G 44M 19G 1% /home/vsftpd/xmcsxy
创建对应FTP虚拟用户的家目录
[root@ftp ~]# cd /home/vsftpd/xmcsxy/
[root@ftp xmcsxy]# mkdir yumwei
[root@ftp xmcsxy]# mkdir JAVA
[root@ftp xmcsxy]# mkdir bigdata
[root@ftp xmcsxy]# mkdir weixin
[root@ftp xmcsxy]# mkdir android
[root@ftp xmcsxy]# mkdir game
[root@ftp xmcsxy]# ll
[root@ftp xmcsxy]# ll
总用量 40
drwxr-xr-x. 2 root root 4096 9月 23 10:42 android
drwxr-xr-x. 2 root root 4096 9月 23 10:42 bigdata
drwxr-xr-x. 2 root root 4096 9月 23 10:42 game
drwxr-xr-x. 2 root root 4096 9月 23 10:42 JAVA
drwx------. 2 root root 16384 9月 23 10:39 lost+found
drwxr-xr-x. 2 root root 4096 9月 23 10:42 weixin
drwxr-xr-x. 2 root root 4096 9月 23 10:57 yumwei
测试虚拟用户登录:
在nfs服务端安装lftp(ftp命令行客户端)
# 先在ftp的yumwei目录里添加一个文件
[root@ftp xmcsxy]# cd yumwei/
[root@ftp yumwei]# ls
[root@ftp yumwei]# touch 1.txt
[root@ftp yumwei]# ls
1.txt
# 在nfs服务端查看
[root@nfs ~]# lftp yanxu@192.168.200.30
口令:
lftp yanxu@192.168.200.30:~> ls
lftp yanxu@192.168.200.30:/> ls
lftp yanxu@192.168.200.30:/> ls
-rw-r--r-- 1 0 0 0 Sep 23 02:57 1.txt
