实操需求:以工坊单位为基础,每个工坊设立一个单独共享资源目录,创建FTP虚拟用户名为xmcu1-6;权限限制只有下载没有上传的权限,限制最大带宽60KB; xmcu1-6 用户的家目录名称对应6个不同的工坊名词缩写; nfs的共享目录必须挂载在新建的一块20G存储磁盘上,每周晚上21点要求备份一次nfs的共享数据到/backup/weekbackup目录下;每14天清除上一周的备份数据。
节点规划
IP | Hostname | 备注 |
192.168.88.15 | nfs | nfs服务端 |
192.168.88.16 | ftp | nfs客户端+FTP |
基础环境部署:
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i 's/=enforcing/=disabled/' /etc/selinux/config
# yum -y install ntpdate && ntpdate -u ntp.api.bz //同步服务器时间
一.NFS配置
1.添加两个新硬盘
添加硬盘后使用fdisk命令创建分区
[root@nfs ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdb 8:16 0 20G 0 disk
└─sdb1 8:17 0 20G 0 part //新创硬盘分区
sdc 8:32 0 50G 0 disk
└─sdc1 8:33 0 50G 0 part //新创硬盘分区
sr0 11:0 1 4G 0 rom
[root@nfs ~]# mkfs.ext4 /dev/sdb1 //格式化分区
[root@nfs ~]# mkfs.ext4 /dev/sdc1
2.创建共享和备份目录,并挂载磁盘。
[root@nfs ~]# mkdir /data
[root@nfs ~]# chown -R nfsnobody:nfsnobody /data
[root@nfs ~]# chmod -R 755 /data
[root@nfs ~]# mkdir -p /backup/weekbackup
[root@nfs ~]# mount /dev/sdb1 /data/
[root@nfs ~]# mount /dev/sdc1 /backup/weekbackup //因备份目录数据较大,挂载50G的磁盘。
[root@nfs ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sdb1 ext4 20G 45M 19G 1% /data
/dev/sdc1 ext4 50G 53M 47G 1% /backup/weekbackup
[root@nfs ~]# vi /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0
/dev/sdc1 /backup/weekbackup ext4 defaults 0 0
3.nfs服务端配置
在两台服务器上安装nfs-utils rpcbind
# yum install -y nfs-utils rpcbind
# systemctl start nfs
# systemctl enable nfs
# systemctl start rpcbind
# systemctl enable rpcbind
配置nfs服务端配置文件
[root@nfs ~]# vi /etc/exports
/data 192.168.88.0/24(rw,no_root_squash)
[root@nfs ~]# systemctl restart nfs
[root@nfs ~]# showmount -e 192.168.88.15 //查看共享目录列表
Export list for 192.168.88.15:
/data 192.168.88.0/24
4.nfs客户端配置
[root@ftp ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin //创建vsftpd系统用户,指定家目录。
[root@ftp ~]# mount -t nfs 192.168.88.15:/data /home/vsftpd/ //挂载到服务端上
[root@ftp ~]# vi /etc/fstab
192.168.88.15:/data /home/vsftpd nfs4 defaults 0 0
[root@ftp ~]# df -hT
Filesystem Type Size Used Avail Use% Mounted on
192.168.88.15:/data nfs4 20G 44M 19G 1% /home/vsftpd
[root@ftp ~]# cd /home/vsftpd
[root@ftp ~]# mkdir Android dsj java xcx yxkf yyw //创建ftp用户家目录
[root@ftp ~]# chmod -R 755 /home/vsftpd/
[root@ftp ~]# ll /home/vsftpd/
total 40
drwxr-xr-x. 2 root root 4096 Mar 12 05:29 Android
drwxr-xr-x. 2 root root 4096 Mar 12 05:31 dsj
drwxr-xr-x. 2 root root 4096 Mar 12 05:29 java
drwxr-xr-x. 2 nfsnobody nfsnobody 16384 Mar 12 04:51 lost+found
drwxr-xr-x. 2 root root 4096 Mar 12 05:28 xcx
drwxr-xr-x. 2 root root 4096 Mar 12 05:31 yxkf
drwxr-xr-x. 2 root root 4096 Mar 12 05:29 yyw
二.FTP配置
1.FTP安装并启动
[root@ftp ~]# yum -y install vsftpd
[root@ftp ~]# systemctl start vsftpd
[root@ftp ~]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
2.虚拟用户账号密码配置
[root@ftp ~]# vi /etc/vsftpd/users.conf
xmcu1
111111
xmcu2
222222
xmcu3
333333
xmcu4
444444
xmcu5
555555
xmcu6
666666
[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
[root@ftp ~]# chmod 600 /etc/vsftpd/users.*
[root@ftp ~]# ll /etc/vsftpd/users.*
-rw-------. 1 root root 78 Mar 12 05:35 /etc/vsftpd/users.conf
-rw-------. 1 root root 12288 Mar 12 05:35 /etc/vsftpd/users.db
[root@ftp ~]# rm -rf /etc/vsftpd/users.conf
3.新建一个用于虚拟用户认证的PAM文件vsftpd.xmcu
[root@ftp ~]# vi /etc/pam.d/vsftpd.xmcu
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
4.修改FTP主配置文件
[root@ftp ~]# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //禁止匿名开放模式
local_enable=YES //允许本地用户模式
guest_enable=YES //开启虚拟用户模式
guest_username=vsftpd //指定虚拟用户账户
allow_writeable_chroot=YES //允许对禁锢的FTP根目录执行写入操作
user_config_dir=/etc/vsftpd/vsftpd_user_conf //指定虚拟用户配置文件
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.xmcu //指定PAM文件
userlist_enable=YES
tcp_wrappers=YES
5.配置虚拟用户使用的配置文件目录
[root@ftp ~]# mkdir -p /etc/vsftpd/vsftpd_user_conf
[root@ftp ~]# vi /etc/vsftpd/vsftpd_user_conf/xmcu1
local_root=/home/vsftpd/yyw
anon_upload_enable=NO //是否允许上传
write_enable=NO //是否开放写权限
local_max_rate=60000 //下载带宽
[root@ftp ~]# vi /etc/vsftpd/vsftpd_user_conf/xmcu2 //其他配置一样,指定家目录更改
local_root=/home/vsftpd/xcx
[root@ftp ~]# vi /etc/vsftpd/vsftpd_user_conf/xmcu3
local_root=/home/vsftpd/dsj
[root@ftp ~]# vi /etc/vsftpd/vsftpd_user_conf/xmcu4
local_root=/home/vsftpd/Android
[root@ftp ~]# vi /etc/vsftpd/vsftpd_user_conf/xmcu5
local_root=/home/vsftpd/yxkf
[root@ftp ~]# vi /etc/vsftpd/vsftpd_user_conf/xmcu6
local_root=/home/vsftpd/java
[root@ftp ~]# systemctl restart vsftpd
[root@ftp ~]# touch /home/vsftpd/yyw/xmcu1-yyw.txt //创建一个测试文件
File Zilla删除,创建,上传测试
三.NFS服务端备份配置
1.编写备份脚本
[root@nfs ~]# vi /usr/local/sbin/backup.sh
#!/bin/bash
date=`date +%Y-%m%d`
bkdir=/backup/weekbackup
if [ ! -d $bkdir ];then
mkdir -p $bkdir
echo "$bkdir not exist!" >> /var/log/backup.log
else
mkdir $bkdir/$date
cp -rf /data/* $bkdir/$date
if [ -d $bkdir/$date ];then
echo "$bkdir/$date backup success" >> /var/log/backup.log
find $bkdir -mtime +14 -exec rm -rf {} \;
else
echo "$date backup failed!" >> /var/log/backup.log
fi
fi
2.配置定时计划
[root@localhost ~]# crontab -e
0 21 * * 1 /bin/bash /usr/local/sbin/backup.sh
[root@localhost ~]# crontab -l
0 21 * * 1 /bin/bash /usr/local/sbin/backup.sh