共享资源库搭建

任务分析

以工坊单位为基础,每个工坊设立一个单独共享资源目录,创建FTP虚拟用户名为zhang1-6;权限限制只有下载没有上传的权限,限制最大带宽60KB;zhang1-6用户的家目录名称对应6个不同的工坊名词缩写;新建的一块20G存储磁盘必须挂载在nfs的共享目录上,每7天晚上21点要求增量备份一次nfs的共享数据,到/backup/weekbackup目录下,存放在以日期命名的目录;每14天清除上上一周的备份数据

|IP地址| 主机名 |
|192.168.150.145|FTP|
|192.168.150.152| NFS |

配置主机名

hostnamectl set-hostname ftp

使用yum源安装vsftp:
yum install -y vftpd telent
systemctl start vsftpd
netstat -lntp | grep 21 用于查看是否开启
关闭防火墙及setenlinux安全机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

//ftp和nfs都要关闭

cd /etc/vsftpd/
cp vsftpd.conf{,.bak}
egrep -v '^#|^$' vsftpd.conf.bak
egrep -v '^#|^$' vsftpd.conf.bak >vsftpd.conf 
cat vsftpd.conf

主配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd

编辑配置文件/etc/vsftpd/users.conf 添加用户以及密码
在这里插入图片描述

db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
chmod 600 users.db

转化为 Berkeley DB 格式的数据文件 需要db_load 转换工具,默认已安装。

为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以免数据外泄。

创建 FTP 根目录及虚拟用户映射的系统用户(此账号无需设置密码及登录shell)

[root@ftp ~]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
[root@ftp ~]# mkdir -p /home/vsftpd/xmcsxy
[root@ftp ~]# chmod -R 755 /home/vsftpd

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

[root@ftp ~]# 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文件中添加虚拟用户支持配置

	 vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
chroot_local_user=YES
guest_enable=YES
allow_writeable_chroot=YES

在这里插入图片描述
若要为不同的虚拟用户账号设置不同的访问权限,可以通过为每个虚拟用户建立单独的配置文件来实现

为FTP用户启用独立配置文件,需要修改vsftpd.conf配置文件,添加“user_config_dir”配置项

vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vsftpd_user_conf

这样就可以在/etc/vsftpd/vsftpd_user_conf 目录中为每个虚拟用户分别建立配置文件了
mkdir -p /etc/vsftpd/vsftpd_user_conf
cd /etc/vsftpd/vsftpd_user_conf
vim zhangsan
local_root=/home/vsftpd/xmcsxy
anon_upload_enable=YES
write_enable=YES
#chmod -R 755 *
在这里插入图片描述在vsftpd.conf文件中启用了“user_config_dir”配置项以后,应该为每一个虚拟用户都建立一个单独的配置文件(可以是空文件),否则该用户可能无法登录。在每个用户的独立配置文件中,可以添加新的配置项来限制访问权限、下载速率等

[root@ftp ~]# systemctl restart vsftpd
[root@ftp ~]# systemctl enable vsftpd
重启服务并进行测试
往家目录中先写入一个文件方便进行测试
[root@ftp ~]# cd /home/vsftpd/xmcsxy/
[root@ftp xmcsxy]# touch a.txt

切换到nfs

因为我们是最小化安装 无法使用ifconfig命令需要下载net-tool依赖

vim /etc/sysconfig/network-scripts/ifcfg-ens33
ONBOOT=yes
修改主机名并关闭防火墙和selinux安全机制

hostnamectl set-hostname nfs
systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

使用yum 安装lftp

yum install -y lftp

进行测试 lftp zhangsan@192.168.150.145
在这里插入图片描述
可以使用File Zilla Client 查看文件
在这里插入图片描述
修改权限 执行一个上传的操作

chmod -R 777 /home/vsftpd/xmcsxy/

可以通过日志查看登录是否报错

tail -f /var/log/secure

访问控制黑白名单

设置ftp黑白名单:(系统账号FTP登录限制文件)
ftpusers和user_list两个文件用途和区别:
ftpusers它不受任何配置项影响,总是有效,是黑名单

添加两个用户 test1、test2 并设置密码 useradd test1 /passwd xxx
编辑配置文件
cd /etcvsftpd
vim ftpusers
添加test1
这时test1已经被加入黑名单了使用软件会报错而test2则正常访问
在这里插入图片描述

NFS服务

部署NFS
在这里插入图片描述
两台主机设置 关闭防火墙以及selinux安全机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
安装所需的依赖包 (两边都要安装)
yum install -y nfs-utils rpcbind
安装完成以后使用id nfsnobody 查看
在这里插入图片描述
启动rpc服务 (都要启动)
systemctl start rpcbind
systemctl enable rpcbind
netstat -lntp | grep rpc 用于查看rpc端口情况
在这里插入图片描述
rpcinfo -p localhost 查看端口的映射情况
因为我还没有启动nfs 所有看不到他的映射情况
在这里插入图片描述
启动nfs服务 (两台机器都要启动)

sytemctl start nfs
systemctl enable nfs

netstat -ntplu |grep rpc
rpcinfo -p localhost
这时候就可用查看端口的映射了

NFS 配置

创建共享目录
mkdir -p /data/public
mkdir /data/test
mkdir /data/linux
更改目录权限及所属群组
chown -R nfsnobody.nfsnobody /data
chmod 755 -R /data

编辑etc/exports

/tmp    *(rw,no_root_squash)
/data/public    192.168.100.0/24(rw) 
/data/test      192.168.100.11(rw)
/data/linux     *.xmcsxy.com(rw,all_squash,anonuid=40,anongid=40)
/tmp    *(rw,no_root_squash)    指定所有网段可访问/tmp

配置完成以后重新加载nfs服务
systemctl restart nfs
exports -rv 重新挂载配置
用于管理NFS(Network File System)文件系统,在不直接编辑/etc/exports文件的情况下,可用exportfs来操作(命令属性、磁盘管理、命令属权限、超级用户、普通用户)

方法1:
运用showmount命令查询
showmount -e localhost
在这里插入图片描述
方法2:可以把nfs服务器当做客户端来测试
在这里插入图片描述
使用 umount /mnt/ 取消挂载

定时计划与备份脚本

crond服务

检验是否安装cronds
rpm -qa |gep cronds
如果没有则使用yum安装 yum install -y cronds

安装完成以后启动服务并检查服务状态
systemctl status crond
systemctl start crind

进入编辑页面 crond -e
添加 */5 * * * * echo “11” >> /opt/test #每隔5分钟往test文件里面写入一行“11”
crond -l 列出crond文件
在这里插入图片描述删除root用户所有的定时任务
删除时会出现确认提示 输入y即可

书写 crontab 定时任务时,需要注意以下几个事项:
6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

备份脚本

使用yum 安装rsync
rsync install -y rsync
rsync /etc/fastab/tmp 在本地同步
rsync -r 192.168.150.152:/etc /tmp 当然本地和远程都是要装rsync
将远程主机的/etc目录拷贝到本地/tmp下,以保证本地/tmp目录和远程/etc保持同步。
编辑配置文件
vi /usr/local/sbin/backup.sh

a=`date '+%Y%m%d'`
b=/backup/weekbackup
c=/var/log/backup.log
pname=$(rpm -qa | grep rsync)
#判断rsync是否存在
if [ $? -eq 0 ]
then
    echo "软件包rsync已经安装。"
else
    echo "软件包rsync没有安装"
    yum -y install rsync >> /dev/null
    if [ $? -eq 0 ];then
            echo "安装rsync完成。"
    else
            echo "安装rsync失败。"
 	   fi
fi
#判断备份目录是否存在,并增量备份。
if [ ! -d "$b" ];then
    mkdir -p $b
    echo "$a Backup File missing!" >> /var/log/backup.log
   rsync -rvz /data/* $b/$a
else
    rsync -rvz /data/* $b/$a
    if [ -d $b/$a ];then
            echo "$a Backup success." >> /var/log/backup.log
            find $b -mtime +14 | xargs rm -rf
    else
            echo "$a Backup failed." >> /var/log/backup.log
        fi
fi

配置完成以后给其755权限
chmod 755 /usr/local/sbin/backup.sh
添加定时任务

 crontad -e
  *1 */7 * * sh /usr/local/sbin/backup.sh 

每七天凌晨一点执行一次脚本

给NFS节点挂载一个20G的磁盘

修改主机名:
# hostnamectl set-hostname ftp
# hostnamectl set-hostname nfs
关闭防火墙及安全规则:
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0

6.2 FTP部署
yum安装FTP:
[root@ftp ~]# yum -y install vsftpd
启动ftp并设置开机自启:
[root@ftp ~]# systemctl start vsftpd
[root@ftp ~]# systemctl enable vsftpd

创建虚拟用户账号(zhang1-6):
[root@ftp ~]# vi /etc/vsftpd/users.conf
删除原有的users.db
rm /etc/vsftpd/users.db

转化为 Berkeley DB 格式的数据文件:
[root@ftp ~]# db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
设置DB文件权限提高安全性:
[root@ftp ~]# chmod 600 /etc/vsftpd/users.db

为不同的虚拟用户建立独立的配置文件:

	# cd /etc/vsftpd/vsftpd_user_conf/
	# vi zhang1
	local_root=/home/vsftpd/xmcsxy/yumwei		#本地家目录路径
	write_enable=YES
	anon_upload_enable=NO
	anon_max_rate=60000

以此类推把zhang1…zhang6配置完,修改每个用户的本地家目录路径!
重启服务生效配置文件:
[root@ftp ~]# systemctl restart vsftpd
[root@ftp ~]# systemctl status vsftpd
[root@ftp ~]# netstat -lntp | grep 21
tcp6 0 0 :::21 ::😗 LISTEN 18750/vsftpd

NFS部署

检查环境(两台都需要):
# uname -a
安装nfs依赖包(两台都需要):
# yum -y install nfs-utils rpcbind
查看nfsnobody用户在不在(两台都需要):
# id nfsnobody

uid=65534(nfsnobody) gid=65534(nfsnobody) 组=65534(nfsnobody)
启动nfs相关服务(两台都需要)
	启动rpc服务:
# systemctl start rpcbind
# systemctl enable rpcbind

启动nfs服务:
# systemctl start nfs
# systemctl enable nfs
查看rpc端口:
[root@ftp ~]# netstat -lntp | grep rpc
查看端口映射情况:
# rpcinfo -p localhost

添加一块磁盘 将其永久挂载到/data目录
cat /proc/partitions 查看新分区名字
fdisk /dav/sdb
选择primary 一路默认即可 w保存
mkfs.ext4 /dev/sdb1

删掉原有的/data路径
[root@nfs ~]# rm -rf /data

创建共享目录:
[root@nfs ~]# mkdir /data

在/etc/fstab增加挂载。
[root@nfs ~]# vi /etc/fstab
/dev/sdb1 /data ext4 defaults 0 0

[root@nfs ~]# mount -a
[root@nfs ~]# df -h #查看是否挂载成功
配置nfs共享目录,把原有的/etc/exports中的内容清除,写入以下内容,注意IP网段地址的修改

	vim /etc/exports
	/data   192.168.100.0/24(rw,no_root_squash,async)		#分配no_root_squash权限

在这里插入图片描述
showmount -e 192.168.150.152 #检测nfs共享目录创建成功

将/data目录挂载到/home/vsftpd/xmcsxy/目录上 在ftp上挂载

vim /etc/fstab
192.168.100.12:/data    /home/vsftpd/xmcsxy     nfs     defaults        0 0
mount -a 
df -h

创建对应的FTP虚拟用户的家目录
cd /home/vsftpd/xmcsxy
mkdir yumwei java bigdata weixin android game
在nfs节点上查看
在这里插入图片描述往yumwei创建一个文件用于测试
在nfs上测试虚拟用户登录
lftp zhang1@192.168.150.145
在这里插入图片描述
shell 备用数据库脚本定时计划

编辑nfs上vi /usr/local/sbin/backup.sh

a=`date '+%Y%m%d'`				#定义时间
b=/backup/weekbackup				#定义备份目录路径
c=/var/log/backup.log				#定义输出日志路径
pname=$(rpm -qa | grep rsync)		#定义rsync安装包检查	
#判断rsync是否存在
if [ $? -eq 0 ]
then
    echo "软件包rsync已经安装。"
else
    echo "软件包rsync没有安装"
    yum -y install rsync >> /dev/null
    if [ $? -eq 0 ];then
            echo "安装rsync完成。"
    else
            echo "安装rsync失败。"
    fi
fi
#判断备份目录是否存在,并增量备份。
if [ ! -d "$b" ];then
    mkdir -p $b
    echo "$a Backup File missing!" >> /var/log/backup.log
    rsync -rvz /data $b/$a
else
    rsync -rvz /data $b/$a
    if [ -d $b/$a ];then
            echo "$a Backup success." >> /var/log/backup.log
            find $b -mtime +14 | xargs rm -rf
    else
            echo "$a Backup failed." >> /var/log/backup.log
    fi
fi

测试脚本执行过程结果
sh -x /usr/local/sbin/backup.sh

定时计划 crontab -e

  • 21 */7 * * sh /usr/local/sbin/backup.sh #每7天晚上21点执行一次脚本
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值