RSYNC03-搭建rsync服务器,不使用系统用户实现数据备份

1,为什要搭建rsync服务器:

  • 使用rsync命令备份需要输入用户密码;
  • 使用ssh免秘钥无交互备份,需要生成密码文件并发送给客户端,且需要使用系统用户登录客户端;

结论:无论使用rsync命令,还是使用ssh免秘钥无交互备份,都需要使用系统用户,这样就会不安全;解决办法:搭建rsync服务器,不使用系统用户,实现数据备份。

2,方案说明:

  • 需要自己创建自己的配置文件: /etc/rsyncd.conf
  • 定义备份帐户
  • rsync 以daemon方式运行

3,创建配置文件,默认配置文件不存在,需要自己创建

[root@cdncenter scripts]# cat /etc/rsyncd.conf 
uid = root
gid = root
use chroot = yes
max connections = 10
strict modes =yes
port = 873
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
motd file=/etc/rsyncd.motd

[rhel5_warehouse]
path =  /mpeg/mirrors/yumwarehouse/rhel5/
ignore errors
read only = yes
list = no
hosts allow = 172.1.1.1/255.0.0.0
hosts deny = 0.0.0.0/0
auth users = root
secrets file = /etc/rsync.pas

4,配置文件详解

  • 配置文件/etc/rsyncd.conf,整体分为两个部分:全局参数和模块参数
  1. 全局参数 :对于rsync 服务器生效。如果模块参数和全局参数冲突,针对冲突的模块,模块参数生效(模块参数优先级高于全局参数)
  2. 模块参数: 定义rsync 输出的目录的参数。
  • 参数说明:
配置项 说明 配置方法 参数类型
uid 文件传输过程中,守护进程的用户身份。 运行进程的身份:一般情况下,采用默认值:root 全局参数
gid 文件传输过程中,守护进程的组身份。 运行进程的组:一般情况下,采用默认值:root 全局参数
address 监听IP地址 请根据实际情况填写 全局参数
port Rsync的服务端口 一般情况下,采用默认值:873 全局参数
use chroot 锁定家目录。rsync被黑了,黑客无法在rsync运行的家目录之外创建文件,该选项设置为yes 该选项设置为yes 全局参数
max connections 指定允许的最大并发客户端连接数,如果配置为“0”,则表示没有限制。 请根据实际情况配置,如“4” 全局参数
strict modes 是否检查密码文件的权限:
yes:则密码文件只能被Rsync服务器运行身份的用户访问,其他任何用户不可以访问该文件
no:其他用户身份能够访问
请根据实际情况填写 全局参数
pid file pid文件。存放进程ID。自动生成,以便于使用脚本终止进程 一般情况下,采用默认值“/var/run/rsyncd.pid” 全局参数
lock file 指定支持max connections参数的锁文件 一般情况下,采用默认值“/var/run/rsync.lock” 全局参数
log file 指定使用独立的日志文件的位置 举例:/var/log/rsyncd.log 全局参数
motd file 客户端登录后的弹出的信息。需要创建。 举例:/etc/rsyncd.motd  
[rhel_warehouse] 共享模块名,自定义 客户端配置时需使用到 共享模块名
path 供备份的路径 请根据实际情况填写 模块参数
comment 描述 请根据实际情况填写 模块参数
ignore errors 可以忽略一些无关的IO错误 不需配置 模块参数
read only 以只读的方式 提供备份,即允许客户端下行同步,不允许上传 建议配置为:yes 模块参数
list 是否允许查看模块信息 建议配置为:yes 模块参数
hosts allow 允许连接该模块的客户端IP或者网段 单个IP地址,例如:192.167.0.1
整个网段,例如:192.168.0.0/24,或者是192.168.0.0/255.255.255.0
“*”则表示所有,默认是允许所有主机连接。
多个IP或网段中间用英文的”逗号”或者”空格”隔开
模块参数
hosts deny 指定不允许连接Rsync服务器的机器 请根据实际情况配置 模块参数
auth users Rsync认证的用户名,指定备份的用户,和系统用户无关 一般情况下,采用默认值:root。必须和etc/rsync.pas文件中配置的认证用户保持一致 模块参数
secrets file 指点存放用户 和密码文件。格式: 用户名:密码 请根据实际配置创建认证用户和密码的文件。此处创建的是etc/rsync.pas,所以应当配置etc/rsync.pas 模块参数
  • 创建提示信息文件
[root@xuegod63 ~]# echo "welcome to backup server"  > /etc/rsyncd.motd
  • 创建密码文件,修改密码文件权限(重要)
#vi /etc/rsync.pas                           #按“i”键添加如下内容,为Rsync认证添加用户和密码。
root:coship
#chmod 600 /etc/rsync.pas                    #rsync.pas必须赋予600或者700权限,即仅文件属主有读写权限,而所属组和其他用户无任何权限,否则启动会报错。

权限设置不对的话身份验证会失败,会弹以下出错信息,当然,输错密码后,也会弹这个信息:

[root@Usvn~]# rsync -avz root@10.80.0.1::rhel5_warehouse /tmp/

welcome to backup server

Password: 

@ERROR: auth failed on module wwwroot

rsync error: error starting client-server protocol (code 5) at main.c(1503) [receiver=3.0.6]
  • 启动rsync服务(两种方式)
  1. rsync –daemon (rsync –daemon –help 查看帮助信息)
  2. 使用xinetd管理rsync。修改/etc/xinetd.d/rsync 配置文件,将disable = yes 改为 disable = no ,然后重启xinetd服务(service xinetd restart)
  • 测试备份:

   语法:rsync 选项 用户名@备份源服务器IP::共享模块名 目标目录

[root@storeMS tmp]# rsync -avz backup@10.80.0.1::rhel6_warehouse /tmp/rhel6/
welcome to backup server

Password:                                             #此处需要输入密码
receiving file list ... done
./
PyYAML-3.10-3.1.el6.x86_64.rpm
libyaml-0.1.3-4.el6_6.x86_64.rpm
m2crypto-0.20.2-9.el6.x86_64.rpm
openpgm-5.1.118-3.el6.x86_64.rpm
  • 实现无交互脚本,备份数据-两种方法
  1. 声明RSYNC_PAASSWORD变量
  2. 从本地文件读取密码

脚本1:

[root@storeMS tmp]# cat time.sh 
#!/bin/bash

export RSYNC_PASSWORD=coship
rsync -avz backup@10.80.0.1::rhel6_warehouse /tmp/rhel6/

脚本2:

[root@storeMS tmp]# echo "coship" >/etc/rsync.pas
[root@storeMS tmp]# chmod 600 /etc/rsync.pas                  #此步骤非常重要,否则会鉴权失败
[root@storeMS tmp]# cat time2.sh 
#!/bin/sh

rsync -avz --delete backup@10.80.0.1::rhel6_warehouse /tmp/rhel6/ --password-file=/etc/rsync.pas

备注:添加防火墙规则:

[root@xuegod63 ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT

 

 

---未完待续

原文地址:https://www.cnblogs.com/snailshadow/p/8128061.html