一、FTP服务
1、简介
FTP(File Transfer Protocol)是一个非常古老并且应用十分广泛的文件传输协议,FTP协议是现今使用最为广泛的网络文件共享协议之一,我们现在也一直有在用着FTP协议来进行各种文件的传输,FTP为我们提供了一种可靠的方式在网络上进行文件的共享。
2、实验目标
以工坊单位为基础,每个工坊设立一个单独共享资源目录,创建FTP虚拟用户名为zhang1-6;权限限制只有下载没有上传的权限,限制最大带宽60KB;zhang1-6用户的家目录名称对应6个不同的工坊名词缩写。
3、搭建、配置、测试
#yum -y install vsftpd
#systemctl start vsftpd
#systemctl enable vsftpd
#vi /etc/vsftpd/users.conf
zhang1
123456
zhang2
123456
zhang3
123456
zhang4
123456
zhang5
123456
zhang6
123456
#db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db //生成虚拟用户口令认证的db文件
#chmod 600 /etc/vsftpd/users.*
#ls -lh /etc/vsftpd/users.*
#useradd vsftpd -d /home/vsftpd -s /sbin/nologin //创建 FTP 根目录及虚拟用户映射的系统用户
#mkdir -p /home/vsftpd/xmcsxy
#chmod -R 755 /home/vsftpd
#vi /etc/pam.d/vsftpd //建立支持虚拟用户的PAM认证文件
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/users
#vi /etc/vsftpd/vsftpd.conf
搜索:anonymous_enable=YES 改为: NO #禁止匿名用户登录
增加下面配置参数:
chroot_local_user=YES #禁止用户访问除主目录以外的目录
guest_enable=YES #启用虚拟用户
allow_writeable_chroot=YES # 允许写入用户主目录
#vi /etc/vsftpd/vsftpd.conf //若要为不同的虚拟用户账号设置不同的访问权限,为每个虚拟用户建立单独的配置文件来实现
user_config_dir=/etc/vsftpd/vsftpd_user_conf //虚拟用户使用的配置文件目录
#mkdir -p /etc/vsftpd/vsftpd_user_conf
#cd /etc/vsftpd/vsftpd_user_conf/
#vi zhang1 //为每个虚拟用户分别建立配置文件!!!
local_root=/home/vsftpd/xmcsxy
anon_upload_enable=NO
write_enable=YES
anon_world_readable_only=NO
重启服务并测试:
#systemctl restart vsftpd
#关闭防火墙、selinux
#cd /home/vsftpd/xmcsxy/
#echo "hello" > a.txt
注意:编辑了虚拟用户账号和密码后不要轻易修改用户名称或密码,若需修改,先把/etc/vsftpd 下的users.db文件删除,然后编辑完成后,要重新执行命令:db_load -T -t hash -f /etc/vsftpd/users.conf /etc/vsftpd/users.db
运用windows图形化FTP工具(Filezilla):
① 登录:
② 上传:
③ 下载:
#tail -f /var/log/secure //可以通过日志查看登录是否报错
使用lftp相比使用ftp的优势较多,可以显示上传下载的百分比进度以及可以上传下载文件夹。
用法:
lftp username:[email protected] //默认21端口 回车后输入密码
NFS节点上部署lftp客户端:
#yum -y install lftp
#lftp [email protected] //如下图所示:
二、NFS服务
1、什么是NFS
它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。
NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;
而 NFS是通过网络来进行服务器端和客户端之间的数据传输,那么两者之间的传输数据就要有相对应的网络端口;基本上NFS服务器的端口开在2049上,但是由于文件系统较为复杂,NFS其他程序需要开启一些额外的端口,而这些额外端口又是随机的;那么客户端如何去知道这些额外随机端口呢?
通过远程过程调用(Remote Procedure Call,RPC)协议来实现!
2、实验目标
新建一块10G存储磁盘挂载到nfs的共享目录上,每周一晚上21点要求备份一次nfs的共享数据,到/backup/weekbackup目录下, 存放在以日期命名的目录;每14天清除上上一周的备份数据。
3、NFS部署
#yum -y install nfs-utils rpcbind
#id nfsnobody //安装完后查看nfsnobody用户在不在
#systemctl start rpcbind //启动rpc服务:
#systemctl enable rpcbind
#yum -y install net-tools
#netstat -tnulp|grep rpc //查看rpc端口
#systemctl start nfs //启动nfs服务:
#systemctl enable nfs
#rpcinfo -p localhost //rpcinfo实用工具显示那些使用portmap注册的程序的信息,并向程序进行RPC调用,检查它们是否正常运行
#关闭防火墙、selinux
#mkdir -p /data/public //创建共享目录
#mkdir -p /data/test
#mkdir -p /data/linux
#chown -R nfsnobody.nfsnobody /data //更改共享目录权限
#chmod 755 -R /data
#vi /etc/exports //编辑nfs配置文件
/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)
#systemctl restart nfs
#showmount -e localhost
#fdisk -l //可以看到有一块10G的磁盘
#fdisk /dev/sdb //分一个区,默认全部容量,保存:w
#mkfs.ext3 /dev/sdb1 //Ext3文件系统是直接从Ext2文件系统发展而来,目前ext3文件系统已经非常稳定可靠。它完全兼容ext2文件系统。用户可以平滑地过渡到一个日志功能健全的文件系统中来。
#mount /dev/sdb1 /data/public/
然后转到另外一台客户端,已安装nfs-utils和rpcbind 的虚拟机:192.168.100.11
#mkdir /mnt/public //创建共享目录
#showmount -e 192.168.100.12
Export list for 192.168.100.12:
/tmp *
/data/linux *.xmcsxy.com
/data/public 192.168.100.0/24
/data/test 192.168.100.11
#mount -t nfs 192.168.100.12:/data/public /mnt/public/
测试:
服务器(192.168.100.12):
#cd /data/public/
#echo "test" > test.txt
#ls
客户端(192.168.100.11):
#cd /mnt/public/
#ls
#cat test.txt
永久挂载:
#vi /etc/fstab //
增加一行在末尾:
/dev/sdb1 /data/public ext3 defaults 0 0
#mount -a
4、定时计划与备份脚本
#rpm -qa |grep crontabs //yum install -y crontabs
#systemct3
l start crond
#cd /usr/local/sbin/
#vi nfsbak.sh
#!/bin/bash
bakfile=/home/vsftpd
bak2dir=/backup/weekbackup/`date +"%F"`
predir=/backup/weekbackup/`date -d "-2 weeks" +"%F"`
baklog=/backup/backup_log.txt
if [ -d $bak2dir ]; then
echo "`date +'%F'`:$bak2dir is exist." >> $baklog
else
mkdir -p $bak2dir
cp -rf $bakfile $bak2dir
rm -rf $predir
echo "`date +'%F'`:backup to $bak2dir is successful." >> $baklog
fi
#chmod +x /usr/local/sbin/nfsbak.sh
使用date -s 修改当前实时的日期和时间:
#date -s 2020-11-12
#date -s 10:25:00
#crontab -e
* 21 * * */7 /usr/local/sbin/nfsbak.sh
#crontab -l //查看当前已配置的定时任务