vsftp

6. 案例实施

6.1 基础搭建

修改主机名:

[root@localhost~]# hostnamectl set-hostname ftp
[root@localhost~]# 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

 

 

转化为 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

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

[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

备份配置文件并导入有效参数:

[root@ftp ~]# cp  /etc/vsftpd/vsftpd.conf{,.bak}
[root@ftp ~]# egrep -v '^$|^#' /etc/vsftpd/vsftpd.conf.bak > /etc/vsftpd/vsftpd.conf

添加虚拟用户支持修改配置文件/etc/vsftpd/vsftpd.conf

anonymous_enable=NO
chroot_local_user=YES
guest_enable=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vsftpd_conf

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

[root@ftp ~]# mkdir -p /etc/vsftpd/vsftpd_conf
[root@ftp ~]# cd /etc/vsftpd/vsftpd_conf
[root@ftp vsftpd_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

6.3 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
tcp        0      0 0.0.0.0:34875           0.0.0.0:*               LISTEN      19141/rpc.statd     
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      19162/rpc.mountd    
tcp6       0      0 :::48860                :::*                    LISTEN      19141/rpc.statd     
tcp6       0      0 :::20048                :::*                    LISTEN      19162/rpc.mountd 

创建共享目录:

[root@nfs ~]# mkdir /data

更改共享目录权限:

[root@nfs ~]# chown -R nfsnobody.nfsnobody /data
[root@nfs ~]# chmod 755 -R /data

添加一块磁盘将永久挂载在/data目录上:

① 添加新磁盘重启虚拟机

 

② 划分分区

# cat /proc/partitions

[root@nfs ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘

 

③ 格式化分区并永久挂载

[root@nfs ~]# mkfs.ext4 /dev/sdb1

 

 

[root@nfs ~]# vi /etc/fstab 
/dev/sdb1       /data              ext4    defaults        0 0
[root@nfs ~]# mount -a
[root@nfs ~]# df -h                #查看是否挂载成功
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 898M     0  898M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M  9.6M  901M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root   21G  1.3G   20G    7% /
/dev/sda1               1014M  150M  865M   15% /boot
tmpfs                    182M     0  182M    0% /run/user/0
/dev/sdb1                 20G   45M   19G    1% /data

④ 配置nfs共享目录

 

[root@nfs ~]# vi /etc/exports
/data   192.168.174.0/24(rw,no_root_squash,async)
no_root_squash

 

#分配no_root_squash权限

⑤ 生效配置与检验

[root@nfs ~]# exportfs -rv
exporting 192.168.174.0/24:/data
[root@nfs ~]# showmount -e localhost
Export list for localhost:
/data 192.168.174.0/24
[root@ftp ~]# showmount -e 192.168.174.12
Export list for 192.168.174.12:
/data 192.168.174.0/24

6.4 调试与检验成果

/data目录挂载到/home/vsftpd/xmcsxy/目录上

 

[root@ftp ~]# mount -t nfs 192.168.174.12:/data /home/vsftpd/xmcsxy/
[root@ftp ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 898M     0  898M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M  9.6M  901M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root   30G  1.3G   29G    5% /
/dev/sda1               1014M  149M  865M   15% /boot
tmpfs                    182M     0  182M    0% /run/user/0
192.168.174.12:/data      20G   44M   19G    1% /home/vsftpd/xmcsxy

创建对应FTP虚拟用户的家目录: 

[root@ftp ~]# cd /home/vsftpd/xmcsxy/
[root@ftp xmcsxy]# mkdir yumwei
[root@ftp xmcsxy]# mkdir JAVA
[root@ftp xmcsxy]# mkdir bigdata
[root@ftp xmcsxy]# mkdir weixin
[root@ftp xmcsxy]# mkdir android
[root@ftp xmcsxy]# mkdir game
[root@ftp xmcsxy]# ll
drwxr-xr-x. 2 root root  4096 3月  10 22:26 android
drwxr-xr-x. 2 root root  4096 3月  10 22:25 bigdata
drwxr-xr-x. 2 root root  4096 3月  10 22:26 game
drwxr-xr-x. 2 root root  4096 3月  10 22:25 JAVA
drwxr-xr-x. 2 root root  4096 3月  10 22:25 weixin
drwxr-xr-x. 2 root root  4096 3月  10 22:25 yumwei

测试虚拟用户登录:

nfs服务端安装lftp(ftp命令行客户端)

[root@nfs ~]# yum -y install lftp
[root@nfs ~]# lftp zhang1@192.168.174.11
口令: 
lftp zhang1@192.168.174.11:~> ls
-rw-r--r--    1 0        0        18019170 Feb 20 03:25 zabbix-4.0.3.tar.gz

尝试再往yunwei目录添加一个文件:

[root@ftp xmcsxy]# cd yumwei/
[root@ftp yumwei]# touch 1.txt
[root@ftp yumwei]# ll
总用量 0
-rw-r--r--. 1 root root 0 3月  10 22:29 1.txt

再次查看:

lftp zhang1@192.168.174.11:/> ls   
-rw-r--r--    1 0        0               0 Mar 10 14:29 1.txt
-rw-r--r--    1 0        0        18019170 Feb 20 03:25 zabbix-4.0.3.tar.gz
lftp zhang1@192.168.174.11:/> get zabbix-4.0.3.tar.gz

使用windows图像化FTP工具:

至此架构系统部署已经完成!

 

6.5 shell备用数据脚本及定时计划

脚本实现:

[root@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已经安装。"
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

测试脚本执行过程结果:

[root@nfs ~]# sh -x /usr/local/sbin/backup.sh 
++ date +%Y%m%d
+ a=20210611
+ b=/backup/weekbackup
+ c=/var/log/backup.log
++ rpm -qa
++ grep rsync
+ pname=rsync-3.1.2-6.el7_6.1.x86_64
+ '[' 0 -eq 0 ']'
+ echo 软件包rsync已经安装。
软件包rsync已经安装。
+ '[' '!' -d /backup/weekbackup ']'
+ rsync -rvz /data /backup/weekbackup/20200313
sending incremental file list
created directory /backup/weekbackup/20200313
data/
data/android/
data/bigdata/
data/game/
data/java/
data/lost+found/
data/weixin/
data/yumwei/
data/yumwei/a.txt
data/yumwei/zabbix-4.0.3.tar.gz

sent 17,943,474 bytes  received 140 bytes  2,760,556.00 bytes/sec
total size is 18,019,170  speedup is 1.00
+ '[' -d /backup/weekbackup/20200313 ']'
+ echo '20200313 Backup success.'
+ find /backup/weekbackup -mtime +14
+ xargs rm -rf

定时计划:

[root@nfs ~]# crontab -e
* 21 */7 * * sh /usr/local/sbin/backup.sh    

#7天晚上21点执行一次脚本

 

至此案例实操完成!

 

posted @ 2021-06-11 14:04  金·天  阅读(94)  评论(0编辑  收藏  举报