任务分析:
以工坊单位为基础,每个工坊设立一个单独共享资源目录,创建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点执行一次脚本