准备

节点 IP
FTP,NFS 192.168.148.100
NFS服务器 192.168.148.101

搭建FTP服务

vsftpd部署安装

先在 192.168.148.100 进行操作

首先配置本地yum源文件

  1. #mv /etc/yum.repos.d/* /media/ //将现有的yum源文件转移到 /media文件夹
  2. #vim /etc/yum.repos.d/local.repo //创建并配置本地yum配置文件
  3. [centos]
  4. name=centos
  5. baseurl=file:///opt/centos
  6. gpgcheck=0
  7. enabled=1
  1. #mkdir /opt/centos //创建centos文件,存放本地yum源
  2. #mount /dev/sr0 /opt/centos //将镜像的yum源挂载到centos文件夹
  3. #yum repolist //查看yum源

共享资源库FTP-NFS的搭建 - 图1

主配置文件:/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:是否将用户禁锢在主目录

安装vsftpd

使用yum安装vsftpd

  1. # yum install -y vim vsftpd //安装vsftpd
  2. # systemctl start vsftpd //开启服务
  3. # netstat -ntlp //如果该指令无法使用,yum安装net-tools

共享资源库FTP-NFS的搭建 - 图2

配置虚拟用户

创建虚拟用户

为了安全,创建虚拟用户

#vim /etc/vsftpd/users.conf //进入用户配置文件

单数是密码,偶数行是账号。

共享资源库FTP-NFS的搭建 - 图3

对用户加密

虽然我们创建了用户,但是进行加密更进一步保障安全。加密使用db_lo,linux一般都会自带。

  1. #db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
  2. #将users.conf进行哈希加密为user.db
  3. #chmod 600 /etc/vsftpd/users.* //给予文件权限,只读!

共享资源库FTP-NFS的搭建 - 图4

映射系统用户

创建FTP根目录以及映射的系统用户

  1. #useradd vsftpd -d /home/vsftpd -s /sbin/nologin
  2. #创建用户vsftpd,设置为无法登录。
  3. #mkdir -p /home/vsftpd/xmcsxy //创建用户根目录

建立支持虚拟用户的PAM认证文件

  1. #vim /etc/pam.d/vsftpd //进入配置文件

共享资源库FTP-NFS的搭建 - 图5

添加虚拟用户支持

虽然添加了账户,但是咱们需要设置用户支持,虚拟用户才能登陆。

  1. #vim /etc/vsftpd/vsftpd.conf //进入配置文件
  2. anonymous_enable=NO //禁止匿名用户登录
  3. #增加下面配置参数:
  4. chroot_local_user=YES //禁止用户访问除主目录以外的目录
  5. guest_enable=YES //启用虚拟用户
  6. allow_writeable_chroot=YES //允许写入用户主目录
  7. user_config_dir=/etc/vsftpd/vsftpd_user_conf //虚拟用户使用的配置文件目录

上面参数一定要手打,并且顶格,以免出现一些错误。

共享资源库FTP-NFS的搭建 - 图6

设置虚拟用户配置文件

当然虚拟用户也需要配置文件,不过是专属的!

  1. #mkdir -p /etc/vsftpd/vsftpd_user_conf //创建配置文件夹,文件夹可以自定义
  2. #cd /etc/vsftpd/vsftpd_user_conf //进入文件夹
  3. #vim liao1 //创建文件,并进行编写
  4. local_root=/home/vsftpd/xmcsxy //当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
  5. anon_upload_enable=YES //是否允许登陆用户有上传权限。
  6. write_enable=YES //是否允许登陆用户有写权限。

重启服务并测试

配置完成了,重启使配置生效。

  1. #systemctl restart vsftpd //重启服务
  2. #systemctl enable vsftpd //设置开启自启
  3. #systemctl stop firewalld //关闭防火墙
  4. #systemctl disable firewalld //防火墙禁止自启
  5. #setenforce 0 //关闭selinux

登录账户

FileZilla官网下载

打开FileZilla——输入ip和用户名,密码——端口可以填写21,也可以不填写——出现成功,才算成功连接。

共享资源库FTP-NFS的搭建 - 图7

在xmcsxy文件下——创建新的文件

共享资源库FTP-NFS的搭建 - 图8

刷新下FileZilla,右下角出现wuhu.txt 因为设置了权限,现在就可以上传,下载操作了。

共享资源库FTP-NFS的搭建 - 图9

本地测试

当然linux也有用指令行来登录ftp的服务

  1. yum install -y lftp //安装服务
  2. lftp liao1@127.0.0.1 //输入后回车 会让输入密码
  3. 输入密码后 ls 查看能否查看,能查看即为成功。

共享资源库FTP-NFS的搭建 - 图10

LFTP内部命令:

  1. ls 显示远端文件列表(!ls 显示本地文件列表)。
  2. cd 切换远端目录(lcd 切换本地目录)。
  3. get 下载远端文件。
  4. mget 下载远端文件(可以用通配符也就是 *)。
  5. pget 使用多个线程来下载远端文件, 预设为五个。
  6. mirror 下载/上传(mirror -R)/同步 整个目录。
  7. put 上传文件。
  8. mput 上传多个文件(支持通配符)。
  9. mv 移动远端文件(远端文件改名)。
  10. rm 删除远端文件。
  11. mrm 删除多个远端文件(支持通配符)。
  12. mkdir 建立远端目录。
  13. rmdir 删除远端目录。
  14. pwd 显示目前远端所在目录(lpwd 显示本地目录)。
  15. du 计算远端目录的大小
  16. ! 执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)
  17. lcd 切换本地目录
  18. lpwd 显示本地目录
  19. alias 定义别名
  20. bookmark 设定书签。
  21. exit 退出ftp

访问黑名单文件

user_list 根据自己的配置,设置为白名单或者黑名单。ftpusers则是黑名单。

共享资源库FTP-NFS的搭建 - 图11

共享资源库FTP-NFS的搭建 - 图12

ftpusers:

如果创建了用户,设置了密码,将用户名添加到ftpusers中,则无法登录ftp服务。

user_list:

根据配置,可以是白名单,也可以是黑名单。userlist_enable和userlist_deny两个选项联合起来针对的是:本地全体用户(除去ftpusers中的用户)和出现在user_list文件中的用户以及不在在user_list文件中的用户这三类用户集合进行的设置。

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后可以共享。

接下来的操作在

192.168.148.101

准备

关闭防火墙,selinux。修改yum源!

  1. #mv /etc/yum.repos.d/* /media/ //修改yum文件位置
  2. #vim /etc/yum.repos.d/lcoal.repo //创建并配置yum源文件
  3. #添加以下参数
  4. [centos]
  5. name=centos
  6. baseurl=file:///opt/centos
  7. gpgcheck=0
  8. enabled=1
  9. #mkdir /opt/centos //创建文件夹装载yum源文件
  10. #mount /dev/sr0 /opt/centos/ //挂载镜像的源文件
  11. #yum repolist //查看是否配置成功

共享资源库FTP-NFS的搭建 - 图13

  1. #systemctl stop firewalld //关闭防火墙
  2. #setenforce 0 //关闭selinux

安装NFS

  1. #yum install -y nfs-utils rpcbind //安装nfs
  2. #systemctl start rpcbind //开启rpc服务
  3. #systemctl enable rpcbind //设置开机自启
  4. #systemctl start nfs //开启nfs
  5. #systemctl enable nfs //设置开机自启
  6. #netstat -ntlp|grep rpc //查看端口是否启动

rpcbind他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务

共享资源库FTP-NFS的搭建 - 图14

查看端口映射情况

rpcinfo -p localhost

共享资源库FTP-NFS的搭建 - 图15

NFS配置

创建共享目录

  1. #mkdir -p /data/public //创建一些共享目录
  2. #mkdir -p /data/test
  3. #mkdir -p /data/linux
  4. #chown -R nfsnobody.nfsnobody /data //授予权限
  5. #chmod 755 -R /data //设置权限
  6. #vim /etc/exports //编辑配置文件

共享资源库FTP-NFS的搭建 - 图16

nfsnobody:当安装nfs配置文件时自动添加的用户

nfs配置文件/etc/exports的格式

NFS共享的目录 NFS客户端地址(参1,参2,……) NFS客户端地址2(参1,参2,……)或者。NFS共享的目录NFS客户端地址(参1,参2,……)。

参数的含义:

NFS共享的常用参数,具体如下:

ro 只读访问

rw 读写访问

sync 所有数据在请求时写入共享

async NFS在写入数据前可以相应请求

secure NFS通过1024以下的安全TCP/IP端口发送

insecure NFS通过1024以上的端口发送

subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)

no_subtree_check 和上面相对,不检查父目录权限

all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。

no_all_squash 保留共享文件的UID和GID(默认)

root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)

no_root_squash root用户具有根目录的完全管理访问权限

anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID

注:如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组,即no_root_squash不生效;

重启服务

nfs无需用systemctl命令重启,它自带的有重启参数。

-r 重新挂载

-v 将共享目录显示在屏幕上

  1. #exportfs -rv

共享资源库FTP-NFS的搭建 - 图17

NFS挂载

用于管理NFS(Network File System)文件系统,在不直接编辑/etc/exports文件的情况下,可用exportfs来操作(命令属性、磁盘管理、命令属权限、超级用户、普通用户)。

exportfs [-aruv]

参数说明如下:

-a:全部挂载(或卸载)/etc/exports文件内的设定。

-r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。

-u:卸载某一目录。

-v:在export时将共享的目录显示在屏幕上。

检查有权限挂载的服务器是否能挂载:

方法1:

运用showmount命令查询

showmount —help

Usage: showmount [-adehv]

[—all] [—directories] [—exports]

[—no-headers] [—help] [—version] [host]

-a或—all 以 host:dir 这样的格式来显示客户主机名和挂载点目录。

-d或—directories 仅显示被客户挂载的目录名。

-e或—exports 显示NFS服务器的输出清单。

-h或—help 显示帮助信息。

-v或—version 显示版本信。

—no-headers 禁止输出描述头部信息。

显示指定NFS服务器连接NFS客户端的信息

showmount 192.168.100.12 #此ip为nfs服务器的

显示输出目录列表

showmount -e

显示指定NFS服务器输出目录列表(也称为共享目录列表)

showmount -e 192.168.100.12

显示被挂载的共享目录

showmount -d

显示客户端信息和共享目录

showmount -a

显示指定NFS服务器的客户端信息和共享目录

showmount -a 192.168.100.12

showmount -e IP地址或localhost

临时挂载

先查看当前有哪些目录可挂载

  1. #showmount 192.168.148.101 //设置此ip为nfs服务器的显示输出目录列表
  2. #showmount -e //显示输出目录列表
  3. #mkdir -p /test //在当前目录创建文件夹
  4. #mount -t nfs 192.168.148.101:/data/test /test
  5. #将/data/test目录 挂载到当前目录下的/test
  6. df -h 查看是否挂载成功

共享资源库FTP-NFS的搭建 - 图18

共享资源库FTP-NFS的搭建 - 图19

  1. cd test //进入文件夹
  2. touch 456.txt /data/text //创建文件在data/test文件夹
  3. ls //会出现新创建的文件夹

共享资源库FTP-NFS的搭建 - 图20

我上面演示的是本地挂载本地(淦),现在演示其他服务器挂载。首先先给需要挂载服务器也安装NFS和rpcbind。

现在是在另一台机器上!!!!!!!

  1. #yum install -y nfs-utils rpcbind //安装工具
  2. #systemctl start rpcbind //启动s
  3. #systemctl enable rpcbind //自启
  4. #systemctl start nfs
  5. #systemctl enable nfs
  6. #systemctl stop firewalld//关闭防火墙
  7. #rpcinfo -p localhost //查看rpc端口映射

因为前面开辟了一块空间,专门用来让其他服务器连接 /data/public 所以我们挂载这一块。

  1. #mount -t nfs 192.168.148.101:/data/public wuhu //挂载,记得新建wuhu
  2. #df -h //查看是否成功

共享资源库FTP-NFS的搭建 - 图21

取消挂载

  1. #umount /root/wuhu //取消挂载
  2. /root/wuhu 是你挂载占用的空间位置

共享资源库FTP-NFS的搭建 - 图22

永久挂载

将需要挂载的分区写入

  1. #vim /etc/fstab //进入挂载配置文件

共享资源库FTP-NFS的搭建 - 图23

分区 需要挂载的目录 磁盘类型 配置参数 0 0

两个0的意思:

第一个:不备份

第二个:不检验