共享资源库系统

FTP

FTP安装

Windows:

Filezilla官网:https://filezilla-project.org/download.php?show_all=1
在这里插入图片描述

Linux:

LFTP yum安装:# yum -y install vsftpd telnet
在这里插入图片描述

启动FTP
在这里插入图片描述
主配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd

# cd /etc/vsftpd/
# cp vsftpd.conf{,.bak}
# egrep -v '^#|^$' vsftpd.conf.bak
# egrep -v '^#|^$' vsftpd.conf.bak >vsftpd.conf 
# cat vsftpd.conf
anonymous_enable=YES
local_enable=YES
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
userlist_enable=YES
tcp_wrappers=YES
//去掉注释

常用的全局配置项:

配置项含义
listen=YES是否以独立运行的方式监听服务
listen_address=192.168.x.x设置监听的 IP 地址
listen_port=21设置监听 FTP 服务的端口号
write_enable=YES是否启用写入权限
download_enable=YES是否允许下载文件
userlist_enable=YES是否启用 user_list 列表文件
userlist_deny=YES是否禁用 user_list 中的用户
max_clients=0限制并发客户端连接数
max_per_ip=0限制同一 IP 地址的并发连接数
guest_enable=YES启用虚拟用户
user_config_dir=/etc/vsftpd/vsftpd_user_conf虚拟用户使用的配置文件目录
allow_writeable_chroot=YES允许写入用户主目录

常用的匿名配置项:

配置项含义
anonymous_enable=YES启用匿名访问
anon_umask=022匿名用户所上传文件的权限掩码
anon_root=/var/ftp匿名用户的 FTP 根目录
anon_upload_enable=YES允许上传文件
anon_mkdir_write_enable=YES允许创建目录
anon_other_write_enable=YES开放其他写入权
anon_max_rate=0限制最大传输速率(字节/秒)

常用的本地用户 FTP 配置项:

配置项含意
local_enable=YES是否启用本地系统用户
local_umask=022本地用户所上传文件的权限掩码
local_root=/var/ftp设置本地用户的 FTP 根目录
chroot_local_user=YES是否将用户禁锢在主目录

虚拟用户配置

# yum install -y db4-utils
//下载db4-utils软件包

在这里插入图片描述

创建账号数据

创建文本格式的用户名、密码列表。
奇数行:账号名,偶数行:密码(即上一行中账号的密码)

转化为 Berkeley DB 格式的数据文件
需要db_load 转换工具,默认已安装。
 “-f”用于指定数据源文件
 “-T”表示允许非Berkeley DB的应用程序使用从文本格式转换的DB数据文件
 “-t hash”用于指定读取数据文件的基本方法

为了提高虚拟用户账号文件的安全性,应将文件权限设置为600,以免数据外泄。
在这里插入图片描述
在这里插入图片描述

[root@ftp vsftpd]# useradd vsftpd -d /home/vsftpd -s /sbin/nologin
[root@ftp vsftpd]# mkdir -p /home/vsftpd/xmcsxy
[root@ftp vsftpd]# chmod -R 755 /home/vsftpd
[root@ftp vsftpd]# ll /home/vsftpd/
总用量 0
drwxr-xr-x. 2 root root 6 316 09:41 xmcsxy
[root@ftp vsftpd]#
//创建 FTP 根目录及虚拟用户映射的系统用户
[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
//建立支持虚拟用户的PAM认证文件,添加到第三行

在这里插入图片描述

添加虚拟用户支持

# vim /etc/vsftpd/vsftpd.conf
1、将anonymous_enable=YES修改为anonymous_enable=NO

2、添加
chroot_local_user=YES
guest_enable=YES
allow_writeable_chroot=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
在这里插入图片描述

为每个虚拟用户分别建立配置文件

[root@ftp vsftpd]# mkdir -p /etc/vsftpd/vsftpd_user_conf
[root@ftp vsftpd]# cd vsftpd_user_conf/
[root@ftp vsftpd_user_conf]# vim zhangsan
cal_root=/home/vsftpd/xmcsxy
anon_upload_enable=YES
write_enable=YES
[root@ftp vsftpd_user_conf]# vim zhaogao
local_root=/home/vsftpd/xmcsxy
anon_upload_enable=YES
write_enable=YES
//当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。 
//是否允许登陆用户有上传权限。
//是否允许登陆用户有写权限。

修改权限

[root@ftp vsftpd_user_conf]# chmod -R 755 *
[root@ftp vsftpd_user_conf]# ll
总用量 8
-rwxr-xr-x. 1 root root 71 316 09:58 zhangsan
-rwxr-xr-x. 1 root root 74 316 10:01 zhaogao
[root@ftp vsftpd_user_conf]#

测试

准备

[root@ftp vsftpd]# systemctl restart vsftpd
[root@ftp vsftpd]# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
//重启服务
[root@ftp vsftpd]# systemctl stop firewalld
[root@ftp vsftpd]# systemctl disable firewalld
[root@ftp vsftpd]# setenforce 0
//关闭防火墙以及安全规则

lftp常用命令:

 ls 显示远端文件列表(!ls 显示本地文件列表)。
 cd 切换远端目录(lcd 切换本地目录)。
 get 下载远端文件。
 mget 下载远端文件(可以用通配符也就是 *)。
 pget 使用多个线程来下载远端文件, 预设为五个。
 mirror 下载/上传(mirror -R)/同步 整个目录。
 put 上传文件。
 mput 上传多个文件(支持通配符)。
 mv 移动远端文件(远端文件改名)。
 rm 删除远端文件。
 mrm 删除多个远端文件(支持通配符)。
 mkdir 建立远端目录。
 rmdir 删除远端目录。
 pwd 显示目前远端所在目录(lpwd 显示本地目录)。
 du 计算远端目录的大小
 ! 执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)
 lcd 切换本地目录
 lpwd 显示本地目录
 alias 定义别名
 bookmark 设定书签。
 exit 退出ftp

lftp工具访问

下载:yum install -y lftp
在这里插入图片描述
访问:lftp zhangsan@IP
在这里插入图片描述

FileZilla Client查看

在这里插入图片描述
上传一个文件
在这里插入图片描述
在这里插入图片描述

访问限制黑白名单

ftpusers文件

[root@ftp ~]# useradd test1
[root@ftp ~]# useradd test2
[root@ftp ~]# passwd test1
[root@ftp ~]# passwd test2
//添加两个测试用户
[root@ftp vsftpd]# vim ftpusers
                   test1
//将test1添加到ftpusers文件中

在这里插入图片描述
在这里插入图片描述

user_list文件

user_list文件和vsftpd.conf中的userlist_enable以及userlist_deny紧密相关
#userlist_enableu为yes ,userlist_deny为yes,user_list为黑名单;
#userlist_enableu为yes ,userlist_deny为no,user_list为白名单;
#userlist_enableu为no ,userlist_deny 为无效配置项,user_list为无效名单;

NFS

安装(两台都要)

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce  0
关闭防火墙并设置开机不自启,selinux为0
# yum -y install -y nfs-utils rpcbind
安装所需依赖包

在这里插入图片描述
在这里插入图片描述

启动(两台都要)

rpc服务

# id nfsnobody
uid=65534(nfsnobody) gid=65534(nfsnobody)=65534(nfsnobody)
# systemctl start rpcbind
# systemctl enable rpcbind
# netstat -tnulp|grep rpc
# rpcinfo -p localhost

nfs服务

# systemctl start nfs
# systemctl enable nfs
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
# netstat -ntplu |grep rpc
# rpcinfo -p localhost

在这里插入图片描述
在这里插入图片描述

NFS配置

配置为文件/etc/exports的格式:

NFS共享的目录 NFS客户端地址(参1,参2,……) NFS客户端地址2(参1,参2,……)

NFS共享的目录 NFS客户端地址(参1,参2,……)

常用参数:

--
 ro只读访问
 rw读写访问
 sync所有数据在请求时写入共享
 asyncNFS在写入数据前可以相应请求
 secureNFS通过1024以下的安全TCP/IP端口发送
 insecureNFS通过1024以上的端口发送
 subtree_check如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
 no_subtree_check和上面相对,不检查父目录权限
 all_squash共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
 no_all_squash保留共享文件的UID和GID(默认)
 root_squashroot用户的所有请求映射成如anonymous用户一样的权限(默认)
 no_root_squashroot用户具有根目录的完全管理访问权限
 anonuid=xxx指定NFS服务器/etc/passwd文件中匿名用户的UID

//如果同时指定no_root_squash与all_squash 用户将被压缩为 nfsnobody,如果设置了anonuid、anongid将被压缩到所指定的用户与组,即no_root_squash不生效

[root@nfs ~]# mkdir /data.
[root@nfs ~]# mkdir /data./public
[root@nfs ~]# mkdir /data./test
[root@nfs ~]# mkdir /data./linux
[root@nfs ~]# chown -R nfsnobody.nfsnobody /data
[root@nfs ~]# chmod 755 -R /data.
//创建共享目录并更改权限
[root@nfs ~]# vim /etc/exports
/tmp    *(rw,no_root_squash)
/data/public    192.168.43.28(rw) 
/data/test      192.168.43.28(rw)
/data/linux     *.xmcsxy.com(rw,all_squash,anonuid=40,anongid=40)
//编辑配置文件/etc/exports

测试

重载

1、systemctl restart nfs

2、exportfs -rv
用于管理NFS(Network File System)文件系统,在不直接编辑/etc/exports文件的情况下,可用exportfs来操作(命令属性、磁盘管理、命令属权限、超级用户、普通用户)。

# exportfs [-aruv]

参数:
 -a:全部挂载(或卸载)/etc/exports文件内的设定。
 -r:重新挂载/etc/exports中的设置,此外同步更新/etc/exports及/var/lib/nfs/xtab中的内容。
 -u:卸载某一目录。
 -v:在export时将共享的目录显示在屏幕上。

检查有权限挂载的服务器是否能挂载

1、运用showmount命令查询
 --help 帮助
 -a或–all 以 host:dir 这样的格式来显示客户主机名和挂载点目录。
 -d或–directories 仅显示被客户挂载的目录名。
 -e或–exports 显示NFS服务器的输出清单。
 -h或–help 显示帮助信息。
 -v或–version 显示版本信。
 --no-headers 禁止输出描述头部信息。

显示指定NFS服务器连接NFS客户端的信息

 showmount 192.168.100.12 #此ip为nfs服务器的
显示输出目录列表
 showmount -e
显示指定NFS服务器输出目录列表(也称为共享目录列表)
 showmount -e 192.168.100.12
显示被挂载的共享目录
 showmount -d
显示客户端信息和共享目录
 showmount -a
显示指定NFS服务器的客户端信息和共享目录
 showmount -a 192.168.100.12
 showmount -e IP地址或localhost

2、可以把nfs服务器当做客户端来测试

[root@nfs ~]# mount -t nfs 192.168.43.28:/data./public /mnt/
[root@nfs ~]# df -h
[root@nfs ~]# umount /mnt/

永久挂载:
方法1:
编辑/etc/fstab,把挂载信息写进去,每次开机后就会自动挂载上去了!

# vi /etc/fstab

192.168.100.11:/data/public /mnt nfs defaults 0 0

方法2:
/etc/rc.local将挂载命令写到这个里面,每次开机都会自动去执行命令

定时计划与备份脚本

任务调动

Linux系统下的任务调动可分为两种,系统任务调动和用户任务调动。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。
系统任务调动的配置文件是/etc/crontab
在这里插入图片描述
用户任务调度:用户定期要执行的工作。

用户可以使用 crontab 工具来定制自己的计划任务。

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command
各个字段的含义:
 minute:表示分钟,可以是从0到59之间的任何整数。
 hour:表示小时,可以是从0到23之间的任何整数。
 day:表示日期,可以是从1到31之间的任何整数。
 month:表示月份,可以是从1到12之间的任何整数。
 week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
 command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
 在以上各个字段中,还可以使用以下特殊字符:
 星号( * ):代表所有可能的值,例如day字段如果是星号,则表示在满足其它字段的制约条件后每天都执行该命令操作。
 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“3-6”表示“3,4,5,6”
 正斜线(/):可以用正斜线指定时间的间隔频率,例如在hour字段中“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。*

使用crondtab

[root@nfs ~]# rpm -qa | grep crontabs
crontabs-1.11-6.20121102git.el7.noarch
[root@nfs ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2021-03-16 14:04:43 CST; 2h 34min ago
 Main PID: 639 (crond)
   CGroup: /system.slice/crond.service
           └─639 /usr/sbin/crond -n

316 14:04:43 ftp systemd[1]: Started Command Scheduler.
316 14:04:43 ftp crond[639]: (CRON) INFO (RANDOM_DELAY will be scal....)
316 14:04:46 ftp crond[639]: (CRON) INFO (running with inotify support)
Hint: Some lines were ellipsized, use -l to show in full.
[root@nfs ~]# systemctl start crondbi
启用并检查服务状态

crontab 命令常用选项及功能:
 -u user 用来设定某个用户的 crontab 服务,例如 “-u demo” 表示设备 demo
 用户的 crontab 服务,此选项一般有 root 用户来运行。
 -e 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
 -l 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
 -r 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
 -i 在删除用户的 crontab 文件时,给确认提示。

备份脚本

rsync服务:
rsync是可以实现增量备份的工具。配合任务计划,rsync能实现定时或间隔同步,配合inotify或sersync,可以实现触发式的实时同步。
rsync的选项说明:
 -v:显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
 -P:显示文件传输的进度信息。(实际上"-P"="–partial --progress",其中的"–progress"才是显示进度信息的)。
 -n --dry-run :仅测试传输,而不实际传输。常和"-vvvv"配合使用来查看rsync是如何工作的。
 -a --archive :归档模式,表示递归传输并保持文件属性。等同于"-rtopgDl"。
 -r --recursive:递归到目录中去。
 -t --times:保持mtime属性。强烈建议任何时候都加上"-t",否则目标文件mtime会设置为系统时间,导致下次更新检查出mtime不同从而导致增量传输无效。
 -o --owner:保持owner属性(属主)。
 -g --group:保持group属性(属组)。
 -p --perms:保持perms属性(权限,不包括特殊权限)。
 -D :是"–device --specials"选项的组合,即也拷贝设备文件和特殊文件。
 -l --links:如果文件是软链接文件,则拷贝软链接本身而非软链接所指向的对象。
 -z :传输时进行压缩提高效率。

# yum install rsync
//rsync

在这里插入图片描述

[root@nfs ~]# rsync /etc/fstab /tmp 		# 在本地同步
[root@nfs ~]# rsync -r 192。168.43.28:/etc /tmp 	# 将远程主机的/etc目录拷贝到本地/tmp下,以保证本地/tmp目录和远程/etc保持同步
[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是否存在
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

[root@nfs ~]# chmod 755 /usr/local/sbin/backup.sh # 添加权限
[root@nfs ~]# crontab -e
* 1 */7 * * sh /usr/local/sbin/backup.sh     #添加定时任务     


//压缩和显示部分信息,并以归档模式传输脚本
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值