准备
| 节点 | IP |
|---|---|
| FTP,NFS | 192.168.148.100 |
| NFS服务器 | 192.168.148.101 |
搭建FTP服务
vsftpd部署安装
先在 192.168.148.100 进行操作
首先配置本地yum源文件
#mv /etc/yum.repos.d/* /media/ //将现有的yum源文件转移到 /media文件夹#vim /etc/yum.repos.d/local.repo //创建并配置本地yum配置文件[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1
#mkdir /opt/centos //创建centos文件,存放本地yum源#mount /dev/sr0 /opt/centos //将镜像的yum源挂载到centos文件夹#yum repolist //查看yum源

主配置文件:/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
# yum install -y vim vsftpd //安装vsftpd# systemctl start vsftpd //开启服务# netstat -ntlp //如果该指令无法使用,yum安装net-tools

配置虚拟用户
创建虚拟用户
为了安全,创建虚拟用户
#vim /etc/vsftpd/users.conf //进入用户配置文件
单数是密码,偶数行是账号。

对用户加密
虽然我们创建了用户,但是进行加密更进一步保障安全。加密使用db_lo,linux一般都会自带。
#db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db#将users.conf进行哈希加密为user.db#chmod 600 /etc/vsftpd/users.* //给予文件权限,只读!

映射系统用户
创建FTP根目录以及映射的系统用户
#useradd vsftpd -d /home/vsftpd -s /sbin/nologin#创建用户vsftpd,设置为无法登录。#mkdir -p /home/vsftpd/xmcsxy //创建用户根目录
建立支持虚拟用户的PAM认证文件
#vim /etc/pam.d/vsftpd //进入配置文件

添加虚拟用户支持
虽然添加了账户,但是咱们需要设置用户支持,虚拟用户才能登陆。
#vim /etc/vsftpd/vsftpd.conf //进入配置文件anonymous_enable=NO //禁止匿名用户登录#增加下面配置参数:chroot_local_user=YES //禁止用户访问除主目录以外的目录guest_enable=YES //启用虚拟用户allow_writeable_chroot=YES //允许写入用户主目录user_config_dir=/etc/vsftpd/vsftpd_user_conf //虚拟用户使用的配置文件目录
上面参数一定要手打,并且顶格,以免出现一些错误。

设置虚拟用户配置文件
当然虚拟用户也需要配置文件,不过是专属的!
#mkdir -p /etc/vsftpd/vsftpd_user_conf //创建配置文件夹,文件夹可以自定义#cd /etc/vsftpd/vsftpd_user_conf //进入文件夹#vim liao1 //创建文件,并进行编写local_root=/home/vsftpd/xmcsxy //当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。anon_upload_enable=YES //是否允许登陆用户有上传权限。write_enable=YES //是否允许登陆用户有写权限。
重启服务并测试
配置完成了,重启使配置生效。
#systemctl restart vsftpd //重启服务#systemctl enable vsftpd //设置开启自启#systemctl stop firewalld //关闭防火墙#systemctl disable firewalld //防火墙禁止自启#setenforce 0 //关闭selinux
登录账户
打开FileZilla——输入ip和用户名,密码——端口可以填写21,也可以不填写——出现成功,才算成功连接。

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

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

本地测试
当然linux也有用指令行来登录ftp的服务
yum install -y lftp //安装服务lftp liao1@127.0.0.1 //输入后回车 会让输入密码输入密码后 ls 查看能否查看,能查看即为成功。

LFTP内部命令:
ls 显示远端文件列表(!ls 显示本地文件列表)。cd 切换远端目录(lcd 切换本地目录)。get 下载远端文件。mget 下载远端文件(可以用通配符也就是 *)。pget 使用多个线程来下载远端文件, 预设为五个。mirror 下载/上传(mirror -R)/同步 整个目录。put 上传文件。mput 上传多个文件(支持通配符)。mv 移动远端文件(远端文件改名)。rm 删除远端文件。mrm 删除多个远端文件(支持通配符)。mkdir 建立远端目录。rmdir 删除远端目录。pwd 显示目前远端所在目录(lpwd 显示本地目录)。du 计算远端目录的大小! 执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)lcd 切换本地目录lpwd 显示本地目录alias 定义别名bookmark 设定书签。exit 退出ftp
访问黑名单文件
user_list 根据自己的配置,设置为白名单或者黑名单。ftpusers则是黑名单。


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源!
#mv /etc/yum.repos.d/* /media/ //修改yum文件位置#vim /etc/yum.repos.d/lcoal.repo //创建并配置yum源文件#添加以下参数[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1#mkdir /opt/centos //创建文件夹装载yum源文件#mount /dev/sr0 /opt/centos/ //挂载镜像的源文件#yum repolist //查看是否配置成功

#systemctl stop firewalld //关闭防火墙#setenforce 0 //关闭selinux
安装NFS
#yum install -y nfs-utils rpcbind //安装nfs#systemctl start rpcbind //开启rpc服务#systemctl enable rpcbind //设置开机自启#systemctl start nfs //开启nfs#systemctl enable nfs //设置开机自启#netstat -ntlp|grep rpc //查看端口是否启动
rpcbind他是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的。简单理解rpc就是一个中介服务

查看端口映射情况
rpcinfo -p localhost

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

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 将共享目录显示在屏幕上
#exportfs -rv

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
临时挂载
先查看当前有哪些目录可挂载
#showmount 192.168.148.101 //设置此ip为nfs服务器的显示输出目录列表#showmount -e //显示输出目录列表#mkdir -p /test //在当前目录创建文件夹#mount -t nfs 192.168.148.101:/data/test /test#将/data/test目录 挂载到当前目录下的/testdf -h 查看是否挂载成功


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

我上面演示的是本地挂载本地(淦),现在演示其他服务器挂载。首先先给需要挂载服务器也安装NFS和rpcbind。
现在是在另一台机器上!!!!!!!
#yum install -y nfs-utils rpcbind //安装工具#systemctl start rpcbind //启动s#systemctl enable rpcbind //自启#systemctl start nfs#systemctl enable nfs#systemctl stop firewalld//关闭防火墙#rpcinfo -p localhost //查看rpc端口映射
因为前面开辟了一块空间,专门用来让其他服务器连接 /data/public 所以我们挂载这一块。
#mount -t nfs 192.168.148.101:/data/public wuhu //挂载,记得新建wuhu#df -h //查看是否成功

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

永久挂载
将需要挂载的分区写入
#vim /etc/fstab //进入挂载配置文件

分区 需要挂载的目录 磁盘类型 配置参数 0 0
两个0的意思:
第一个:不备份
第二个:不检验
