总结:网络文件共享服务:FTP、NFS、SAMBA

  • DAS:直接存储(本地硬盘)
  • NAS:网络连接存储(局域网)
    • FTP
    • NFS
    • SAMBA
  • SAN:存储区域网络(跨网络)

在这里插入图片描述

FTP协议

  • 双通道协议:数据和命令连接
  • 两种模式:服务器角度
    • 主动(PORT style):服务器主动连接
      • 命令(控制):客户端:随机port —> 服务器:tcp21
      • 数据:客户端:随机port <—服务器:tcp20
    • 被动(PASV style):客户端主动连接
      • 命令(控制):客户端:随机port —> 服务器:tcp21
      • 数据:客户端:随机port —>服务器:随机port

主动模式下,服务器开启20端口主动连接客户端
被动模式下,客户端连接服务器,服务器开启一个随机端口响应,通过命令控制客户端和服务器可以知道开启的随机端口

[root@Web /var/www/html/loges]# ftp 192.168.8.7
Name (192.168.8.7:root): ftp             #匿名用户
Password:                                #密码随便输
ftp> ls
227 Entering Passive Mode (192,168,8,7,141,130).    #被动模式,服务器数据端口为141*256+130

  • FTP服务器
    • vsftpd:Very Secure FTP Daemon,CentOS默认FTP服务器
  • 客户端软件
    • ftp -A ftpserver port -A主动模式 –p 被动模式
    • lftp –u username ftpserver
  • 状态码:
    • 1XX:信息 125:数据连接打开
    • 2XX:成功类状态 200:命令OK 230:登录成功
    • 3XX:补充类 331:用户名OK
    • 4XX:客户端错误 425:不能打开数据连接
    • 5XX:服务器错误 530:不能登录
  • 用户认证:
    • 匿名用户:ftp,anonymous,对应Linux用户ftp
    • 系统用户:Linux用户,用户/etc/passwd,密码/etc/shadow
    • 虚拟用户:特定服务的专用用户,独立的用户/密码文件
  • nsswitch:network service switch名称解析框架
    • pam:pluggable authentication module 用户认证
    • /lib64/security /etc/pam.d/ /etc/pam.conf

vsftpd

  • 用户认证配置文件:/etc/pam.d/vsftpd
  • 服务脚本:
    /usr/lib/systemd/system/vsftpd.service
    /etc/rc.d/init.d/vsftpd
  • 配置文件:/etc/vsftpd/vsftpd.conf
    man 5 vsftpd.conf
    格式:option=value
    注意:= 前后不要有空格
  • 匿名用户(映射为系统用户ftp )共享文件位置:/var/ftp
  • 系统用户共享文件位置:用户家目录
  • 虚拟用户共享文件位置:为其映射的系统用户的家目录
[root@rsyslog ~]# rpm -ql vsftpd 
/etc/logrotate.d/vsftpd             日志滚动
/etc/pam.d/vsftpd                   用户认证
/etc/vsftpd/vsftpd.conf              配置文件
/usr/lib/systemd/system/vsftpd.service    	      服务
/usr/sbin/vsftpd                           	      命令
/var/ftp                                         文件路径
/var/ftp/pub                             	     共享目录

1、命令端口

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
listen_port=21

2、主动模式端口

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
connect_from_port_20=YES                               主动模式端口为20
ftp_data_port=20                                       指定主动模式的端口(没有这条时默认为20)

3、被动模式端口范围

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
linux                                    客户端默认使用被动模式
windows                                  客户端默认使用主动模式
pasv_min_port=6000                       0为随机分配
pasv_max_port=6010                       范围指定需大一些

匿名用户

1、启用匿名用户

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                 支持匿名用户

2、centos登录时不输入口令

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                       支持匿名用户
no_anon_password=YES(默认NO)               匿名用户略过口令检查

3、匿名上传文件及目录

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES                 支持匿名用户
anon_upload_enable=YES               匿名上传,注意:文件系统权限
anon_mkdir_write_enable=YES          匿名建目录

只能上传不能下载

  • 默认只能下载所有组全有读权限的文件
    • 一、修改下载读权限的配置为所有权限都可下载
    • 二、上传文件默认都有读权限

4、实现下载(一)

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
anon_world_readable_only=no          (默认YES)只能下载全部读的文件

5、实现下载(二)
默认上传文件权限600

anon_umask=0222                     指定匿名上传文件的umask,默认077

以上配置不能删除及修改文件

6、删除和修改上传的文件

anon_other_write_enable=YES         可删除和修改上传的文件

7、指定上传文件的默认的所有者和权限

chown_uploads=YES(默认NO)
chown_username=wang
chown_upload_mode=0644

系统用户

1、允许系统用户登录

local_enable=YES 是否允许linux用户登录
write_enable=YES 允许linux用户上传文件
local_umask=022 指定系统用户上传文件的默认权限

2、允许系统用户上传文件

local_enable=YES                              是否允许linux用户登录
write_enable=YES                              允许linux用户上传文件

默认上传到家目录

3、指定上传文件的权限

local_enable=YES                              是否允许linux用户登录
write_enable=YES                              允许linux用户上传文件
local_umask=022                               指定系统用户上传文件的默认权限

4、所有系统用户上传到指定目录

guest_enable=YES                          所有系统用户都映射成guest用户
guest_username=ftp                        配合上面选项才生效,指定guest用户
local_root=/ftproot                       guest用户登录所在目录(没有时为guest家目录)

系统默认当根目录有写权限时拒绝登录,指定目录是要注意该目录权限
当不映射到guest用户时,可以配置只能登录自己的家目录,不能访问其他

5、禁锢所有系统用户在家目录中

chroot_local_user=YES(默认NO,不禁锢)      禁锢系统用户

6、禁锢时,部分用户可以列外
禁锢用户时实际是系统认为的根目录有写权限

chroot_local_user=YES(默认NO,不禁锢)      禁锢系统用户
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

当chroot_local_user=YES时,则chroot_list中用户不禁锢
当chroot_local_user=NO时,则chroot_list中用户禁锢

启用禁锢,magedu例外,magedu能够登录及切换到其他目录,wang用户登录拒绝,是因为有写权限

[root@rsyslog ~]# vim /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 

[root@rsyslog ~]# vim /etc/vsftpd/chroot_list 
magedu

[root@Web /var/www/html/loges]# ftp 192.168.8.7
Name (192.168.8.7:root): wang
Password:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()       登录报错

[root@rsyslog ~]# chmod 500 /home/wang         修改权限

[root@Web /var/www/html/loges]# ftp 192.168.8.7
Name (192.168.8.7:root): wang
ftp> cd /etc
550 Failed to change directory.                       不能切换目录
 
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

chroot_local_user=YES去掉时magedu用户不能登录,改变家目录权限后可以

日志

1、wu-ftp日志:默认启用

xferlog_enable=YES (默认) 启用记录上传下载日志
xferlog_std_format=YES (默认) 使用wu-ftp日志格式
xferlog_file=/var/log/xferlog (默认)可自动生成

2、vsftpd日志:默认不启用

dual_log_enable=YES 使用vsftpd日志格式,默认不启用
vsftpd_log_file=/var/log/vsftpd.log(默认路径)可自动生成     #可不写

提示信息

1、登录提示信息

ftpd_banner=“welcome to mage ftp server"
banner_file=/etc/vsftpd/ftpbanner.txt

banner_file优先级更高

2、目录访问提示信息

dirmessage_enable=YES (默认)
message_file=.message(默认) 信息存放在指定目录下.message

.message放在共享目录文件下,对该文件说明

用户控制

1、使用pam(Pluggable Authentication Modules)完成用户认证

[root@CentOS7 ~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd

[root@CentOS7 ~]# vim /etc/pam.d/vsftpd
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
####/etc/vsftpd/ftpusers的用户拒绝登录当sense=allow时,该文件用户允许登录,其他用户不能登录


[root@CentOS7 ~]# cat /etc/vsftpd/ftpusers
# Users that are not allowed to login via ftp    默认文件中用户拒绝登录
root
bin
daemon

2、是否启用控制用户登录的列表文件

userlist_enable=YES 默认有此设置
userlist_deny=YES(默认值) 黑名单,不提示口令,NO为白名单
userlist_file=/etc/vsftpd/users_list 此为默认值

userlist_enable=YES时users_list拒绝登录,但当userlist_deny=NO时只能是users_list登录

3、vsftpd服务指定用户身份运行

nopriv_user=nobody (默认值)   指定第二层nobody用户

[root@CentOS7 ~]# ps auxf

root       2185  0.0  0.0  53288   704 ?        Ss   03:17   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
nobody     2557  0.0  0.1  55412  1488 ?        Ss   03:38   0:00  \_ /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
ftp        2559  0.0  0.1  57520  1452 ?        S    03:38   0:00      \_ /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

4、连接数限制

max_clients=0     最大并发连接数
max_per_ip=0      每个IP同时发起的最大连接数(一般设置为1或2)     

5、传输速率:字节/秒

anon_max_rate=0 匿名用户的最大传输速率
local_max_rate=0 本地用户的最大传输速率

6、连接时间:秒为单位

connect_timeout=60 主动模式数据连接超时时长
accept_timeout=60 被动模式数据连接超时时长
data_connection_timeout=300 数据连接无数据输超时时长
idle_session_timeout=60 无命令操作超时时长

7、优先以文本方式传输

ascii_upload_enable=YES
ascii_download_enable=YES

默认以二进制传输(不需更改,文本传输时,win端容易出现问题)

实现基于SSL的FTPS

实现SSL需要自签名证书,进入/etc/pki/tls/certs/目录使用make 跟带.key .csr .crt .pem后缀的文件可以生成各种该后缀的文件,因为Makefile脚本

创建自签名证书

[root@CentOS7 ~]# cd /etc/pki/tls/certs/
[root@CentOS7 /etc/pki/tls/certs]# make vsftpd.pem
[root@CentOS7 /etc/pki/tls/certs]# openssl x509 -in vsftpd.pem -noout -text     #查看内容

配置vsftpd服务支持SSL:/etc/vsftpd/vsftpd.conf

[root@CentOS7 ~]# /etc/vsftpd/vsftpd.conf
ssl_enable=YES                                  启用SSL
allow_anon_ssl=NO                               匿名不支持SSL
force_local_logins_ssl=YES                      本地用户登录加密
force_local_data_ssl=YES                        本地用户数据传输加密
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem     指定证书路径

用filezilla等工具测试

虚拟用户

所有虚拟用户会统一映射为一个指定的系统帐号:访问共享位置,即为此系统帐号的家目录
各虚拟用户可被赋予不同的访问权限,通过匿名用户的权限控制参数进行指定

  • 虚拟用户帐号的存储方式:
    • 文件:编辑文本文件,此文件需要被编码为hash格式
      • 奇数行为用户名,偶数行为密码
      • db_load -T -t hash -f vusers.txt vusers.db 把文本转换为数据库文件
    • 关系型数据库中的表中:
      • 实时查询数据库完成用户认证
    • mysql库:pam要依赖于pam-mysql
      • /lib64/security/pam_mysql.so
      • /usr/share/doc/pam_mysql-0.7/README
实现基于文件验证的vsftpd虚拟用户

一、创建用户数据库文件

[root@CentOS7 ~]# vim /etc/vsftpd/vusers.txt      #奇数行为用户名,偶数行为密码
ftpuser1
centos
ftpuser2
magedu  

[root@CentOS7 ~]# cd /etc/vsftpd/
[root@CentOS7 /etc/vsftpd]# db_load -T -t hash -f vusers.txt vusers.db    #生成数据库

二、创建用户和访问FTP目录

[root@CentOS7 ~]# useradd -d /var/ftproot -s /sbin/nologin vuser
[root@CentOS7 ~]# chmod a=rx /var/ftproot/
[root@CentOS7 ~]# mkdir /var/ftproot/upload
[root@CentOS7 ~]# setfacl -m u:vuser:rwx /var/ftproot/upload

三、创建pam配置文件

[root@CentOS7 ~]# vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers

四、指定pam配置文件

[root@CentOS7 ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db

此时已经可以登录ftp,但是登录时权限一样,看见的文件也一样。

五、虚拟用户建立独立的配置文件

允许wang用户可读写,其它用户只读

mdkir /etc/vsftpd/vusers.d/ 创建配置文件存放的路径
[root@CentOS7 ~]# vim /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd/vusers.d/
[root@CentOS7 /etc/vsftpd]# mkdir /etc/vsftpd/vusers.d
[root@CentOS7 ~]# cd /etc/vsftpd/vusers.d/  
[root@CentOS7 /etc/vsftpd/vusers.d]# vim ftpuser1 创建各用户自已的配置文件
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

此时其他用户没有写入权限,ftpuser1有

创建各自的目录,使用户看见的文件不一致,只能看见自己的文件

[root@CentOS7 /etc/vsftpd/vusers.d]# vim ftpuser2
local_root=/data/ftpuser2 

[root@CentOS7 /etc/vsftpd]# mkdir /data/ftpuser2
[root@CentOS7 /etc/vsftpd]# touch /data/ftpuser2/ftpuser2
[root@CentOS7 /etc/vsftpd]# chmod 555 /data/ftpuser2/

[root@CentOS7 /etc/vsftpd]# systemctl restart vsftpd
实现基于MYSQL验证的vsftpd虚拟用户
  • 环境:
    • hostA:FTP、pam-mysql(编译)
    • hostB:mariadb

一、hostB安装mariadb-server,建立数据库并授权

[root@hostB ~]# yum install mariadb-server -y
[root@hostB ~]# systemctl start mariadb
[root@hostB ~]# mysql
MariaDB [(none)]> create database vsftpd;
MariaDB [(none)]> use vsftpd;
MariaDB [vsftpd]> create table users (id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,name CHAR(50) BINARY NOT NULL,password CHAR(48) BINARY NOT NULL);
MariaDB [vsftpd]> desc users;
MariaDB [vsftpd]> insert users(name,password) value ('ftpuser1',password('centos'));  #添加用户,密码用mysql自带的password加密
MariaDB [vsftpd]> insert users(name,password) value ('ftpuser2',password('magedu'));
MariaDB [vsftpd]> grant select on vsftpd.* to vsftpd@'192.168.8.%' identified by 'centos';   #授权

二、编译pam-mysql

[root@CentOS7 ~]# yum install gcc gcc-c++ pam-devel mariadb-devel -y
[root@CentOS7 ~]# tar xf pam_mysql-0.7RC1.tar.gz 
[root@CentOS7 ~]# cd pam_mysql-0.7RC1/
[root@CentOS7 ~/pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security/
[root@CentOS7 ~/pam_mysql-0.7RC1]# make && make install

三、在FTP服务器上配置vsftpd服务

[root@CentOS7 ~]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.8.12 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.8.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 

[root@CentOS7 ~]# vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql  


crypt是加密方式,0表示不加密,1表示crypt(3)加密,2表示使用mysql password()函数加密,3表示md5加密,4表示sha1加密
•auth 表示认证
•account 验证账号密码正常使用
•required 表示认证要通过
•pam_mysql.so模块是默认的相对路径,是相对/lib64/security/路径而言,也可以写绝对路径;后面为给此模块传递的参数
•user=vsftpd为登录mysql的用户
•passwd=magedu 登录mysql的的密码
•host=mysqlserver mysql服务器的主机名或ip地址
•db=vsftpd 指定连接msyql的数据库名称
•table=users 指定连接数据库中的表名
•usercolumn=name 当做用户名的字段
•passwdcolumn=password 当做用户名字段的密码
•crypt=2 密码的加密方式为mysql password()函数加密

此时用户ftpuser1可以登录;用户权限配置及目录配置见上面实验最后一步(本实验是在上一个实验的基础上搭建,后面的步骤不做也可以达到要求)

四、在FTP服务器上配置虚拟用户具有不同的访问权限

见上个实验

NFS文件系统

  • NFS:Network File System 网络文件系统,基于内核的文件系统。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Remote Procedure Call Protocol远程过程调用)实现
  • RPC采用C/S模式,客户机请求程序调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行
  • NFS优势:节省本地存储空间,将常用的数据,如home目录,存放在NFS服务器上且可以通过网络访问,本地终端将可减少自身存储空间的使用
[root@CentOS7 ~]# locate nfs.ko                   文件系统,内核功能
/usr/lib/modules/3.10.0-1062.el7.x86_64/kernel/fs/nfs/nfs.ko.xz
  • 软件包:nfs-utils
  • 端口:2049(nfsd), 其它端口由portmap(111)分配
  • 配置文件:/etc/exports,/etc/exports.d/*.exports
  • CentOS7不支持同一目录同时用nfs和samba共享,因为使用锁机制不同
  • 相关软件包:rpcbind(必须),tcp_wrappers
  • entOS6开始portmap进程由rpcbind代替
  • NFS服务主要进程:
    • rpc.nfsd 最主要的NFS进程,管理客户端是否可登录
    • rpc.mountd 挂载和卸载NFS文件系统,包括权限管理
    • rpc.lockd 非必要,管理文件锁,避免同时写出错
    • rpc.statd 非必要,检查文件一致性,可修复文件
  • 日志:/var/lib/nfs/
[root@CentOS7 ~]# yum install nfs-utils.x86_64
[root@CentOS7 ~]# rpm -ql nfs-utils
/etc/exports.d
/etc/exports
/usr/lib/systemd/system/nfs.service

[root@CentOS7 ~]# rpm -ql rpcbind
/etc/sysconfig/rpcbind
/usr/lib/systemd/system/rpcbind.service
/usr/lib/systemd/system/rpcbind.socket

[root@CentOS7 ~]# systemctl start nfs-server

centos6启动NFS服务需要先启动rpcbind服务

相关命令

rpcinfo

1、查看相关使用端口

[root@CentOS7 ~]# rpcinfo -p
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100005    1   udp  20048  mountd
    100024    1   udp  35413  status
    100024    1   tcp  54039  status
    100005    1   tcp  20048  mountd
    100005    2   udp  20048  mountd
    100003    3   tcp   2049  nfs
    100021    1   udp  42722  nlockmgr

exportfs
  • –v 查看本机所有NFS共享
  • –r 重读配置文件,并共享目录
  • –a 重启本机所有共享
  • –au 停止本机所有共享
showmount

显示远程主机共享目录

[root@CentOS7 ~]# showmount -e 192.168.8.7
Export list for 192.168.8.7:

实现NFS服务

/etc/exports配置格式及相关参数涵义

  • 格式:
    • /dir 主机1(opt1,opt2) 主机2(opt1,opt2)…
    • #开始为注释
  • 主机格式:
    • 单个主机:ipv4,ipv6,FQDN
      • IP networks:两种掩码格式均支持
        172.18.0.0/255.255.0.0
        172.18.0.0/16
    • wildcards:主机名通配,例如*.magedu.com,IP不可以
    • netgroups:NIS域的主机组,@group_name
    • anonymous:表示使用*通配所有客户端
  • 参数
    • 默认选项:(ro,sync,root_squash,no_all_squash)
    • ro,rw 只读和读写
    • async 异步,数据变化后不立即写磁盘,性能高
    • sync(1.0.0后为默认)同步,数据在请求时立即写入共享
    • no_all_squash (默认)保留共享文件的UID和GID
    • all_squash 所有远程用户(包括root)都变成nfsnobody
    • root_squash (默认)远程root映射为nfsnobody,UID为65534,早期版本是4294967294 (nfsnobody)
    • no_root_squash 远程root映射成root用户
    • anonuid和anongid 指明匿名用户映射为特定用户UID和组GID,而非nfsnobody,可配合all_squash使用

1、NFS服务器安装配置

[root@CentOS7 ~]# yum install nfs-utils.x86_64

[root@CentOS7 ~]# systemctl start nfs-server

[root@CentOS7 ~]# cat /etc/exports
/data/nfsdir1  *            任何人都可以访问
[root@CentOS7 ~]# exportfs -r      加载配置


2、客户机查看远程主机共享目录及挂载上传

[root@CentOS7 ~]# showmount -e 192.168.8.7
Export list for 192.168.8.7:
/data/nfsdir1 *

[root@CentOS7 ~]# mkdir /mnt/nfs1
[root@CentOS7 ~]# mount 192.168.8.7:/data/nfsdir1 /mnt/nfs1

[root@CentOS7 ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
192.168.8.7:/data/nfsdir1  52403200   33024  52370176   1% /mnt/nfs1

[root@CentOS7 ~]# cd /mnt/nfs1/
[root@CentOS7 /mnt/nfs1]# touch nfs       创建文件失败,只读系统
touch: cannot touch ‘nfs’: Read-only file system
######NFS服务器修改配置可读写(不写时默认为只读)
[root@CentOS7 ~]# cat /etc/exports
/data/nfsdir1  *(rw)
######访问拒绝,属于文件系统权限,添加文件系统读写权限
[root@CentOS7 /mnt/nfs1]# touch nfs
touch: cannot touch ‘nfs’: Permission denied
######NFS修改文件权限
[root@CentOS7 ~]# setfacl -m u:nfsnobody:rwx /data/nfsdir1
#####远程客户端可以上传文件

1、root用户访问时映射为nfsnobody(默认),权限变小,称为权限压制
root映射为nfsnobody,其他用户UID、gid不变(默认)

[root@CentOS7 ~]# cat /etc/exports
/data/nfsdir1  *(rw,root_squash,no_all_squash)            任何人都可以访问

2、所有人员访问时映射为nfsnobody,root不变

[root@CentOS7 ~]# cat /etc/exports
/data/nfsdir1  *(rw,all_squash,no_root_squash)

3、映射成其他账号登录

[root@CentOS7 ~]# cat /etc/exports
/data/nfsdir1  *(rw,all_squash,anonuid=952,anongid=952)

应用:创建Apache用户,所有人登录都映射成Apache用户,该目录可以远程作为web的网站目录
4、192.168.8.0/24能读写,192.168.7.0/24只能读

[root@CentOS7 ~]# cat /etc/exports
/data/nfsdir2  192.168.8.0/24(rw)    192.168.7.0/24(ro)
实验:实现基于NFS共享服务的LAMP,实时数据备份

在这里插入图片描述
实验环境:

  • powerdns :192.168.8.27
  • Apache
    • 主:192.168.8.7
  • mariadb-server:192.168.8.37
  • NFS:192.168.8.17
  • 客户端:192.168.8.47

1、配置mariadb

[root@mariaDB ~]# yum install mariadb-server -y
[root@mariaDB ~]# systemctl start mariadb
[root@hostB ~]# mysql
MariaDB [(none)]> create database pdnsdb;
MariaDB [(none)]> grant all on pdnsdb.* to pduser@'192.168.8.%' identified by 'centos';
MariaDB [(none)]> create database wpdb;
MariaDB [(none)]> grant all on wpdb.* to wpuser@'192.168.8.%' identified by 'centos';

2、配置poweradmin

[root@powerDNS ~]#  yum install -y pdns pdns-backend-mysql
[root@powerDNS ~]#  vim /etc/pdns/pdns.conf
launch=gmysql
gmysql-host=192.168.8.37
gmysql-port=3306
gmysql-dbname=pdnsdb
gmysql-user=pduser
gmysql-password=centos                                                                                                                                
[root@powerDNS ~]#  systemctl start pdns
####启动失败53端口被占
[root@powerDNS ~]# lsof -i :53        #查看被占用端口进程
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dnsmasq 1348 nobody    5u  IPv4  25482      0t0  UDP bogon:domain 
dnsmasq 1348 nobody    6u  IPv4  25483      0t0  TCP bogon:domain (LISTEN)
[root@powerDNS ~]# kill 1348      #杀死进程再启动



[root@powerDNS ~]# yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
[root@powerDNS ~]# systemctl start httpd

[root@powerDNS ~]# cd /var/www/html
[root@powerDNS /var/www/html]# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
[root@powerDNS /var/www/html]#tar xvf poweradmin-2.1.7.tgz
[root@powerDNS /var/www/html]#mv poweradmin-2.1.7 poweradmin

http://192.168.8.27/poweradmin/install/

注意:从第五步开始需要在数据库写入权限及手动写入配置/inc/config.inc.php

3、NFS配置


[root@nfs-server /data/web]#  yum install nfs-utils -y
[root@nfs-server /data/web]#  mkdir /data/web
[root@nfs-server /data/web]#  getent passwd apache
[root@nfs-server /data/web]#  useradd -r -s /sbin/nologin  -u 48  apache    #UID根据Apache服务器查询得来
[root@nfs-server /data/web]#  setfacl -m u:apache:rwx /data/web
[root@nfs-server /data/web]#  vim /etc/exports
/data/web *(rw,all_squash,anonuid=48,anongid=48) 
[root@nfs-server /data/web]#  systemctl start nfs-server


5、Apache安装及挂载NFS及配置mysql连接

[root@Apache ~]# yum install httpd

[root@Apache ~]# systemctl start httpd

[root@Apache ~]# mount 192.168.8.17:/data/web /var/www/html/
[root@Apache ~]# cd /var/www/html/
[root@Apache /var/www/html]# tar xf wordpress-4.8.3-zh_CN.tar.gz
[root@Apache /var/www/html]# ll
total 8468
drwxr-xr-x 5 apache apache    4096 Nov 16  2017 wordpress
-rw-r--r-- 1 apache apache 8666537 Jul 21 11:03 wordpress-4.8.3-zh_CN.tar.gz

安装数据库不能识别
[root@Apache /var/www/html]# yum install php
[root@Apache /var/www/html]# yum install php-mysql
[root@Apache /var/www/html]# systemctl restart httpd

挂载

客户端挂载
  • NFS相关的挂载选项:man 5 nfs
    • fg(默认)前台挂载,bg后台挂载
    • hard(默认)持续请求,soft 非持续请求
    • intr 和hard配合,请求可中断
    • rsize和wsize 一次读和写数据最大字节数,rsize=32768
    • _netdev 无网络不挂载
  • 基于安全考虑,建议使用nosuid,nodev,noexec挂载选项
  • 示例:
    • mount -o rw,nosuid,fg,hard,intr 172.16.0.1:/testdir /mnt/nfs/
开机挂载
  • 开机挂载可以写入/etc/fstab开机启动,NFS基于网络,依赖network和netfs服务
  • 系统开机时会挂载,发现是本地磁盘挂载,网络资源不挂载,启动后netfs服务能够扫描fstab,发现网络资源自动挂载

centos6 实现开机挂载

[root@CentOS6 ~]# chkconfig --list nfs
nfs            	0:off	1:off	2:off	3:off	4:off	5:off	6:off
[root@CentOS6 ~]# chkconfig  nfs on
[root@CentOS6 ~]# ls /etc/rc.d/rc3.d/
S10network     S25netfs      S30nfs 

[root@CentOS6 ~]# vim /etc/fstab      开机挂载
192.168.8.7:/data/nfs             /mnt        nfs    defaults 0 0

[root@CentOS6 ~]# df                   开机后挂载成功
Filesystem             1K-blocks    Used Available Use% Mounted on
192.168.8.7:/data/nfs   52403200   32768  52370432   1% /mnt
                      
[root@CentOS6 ~]# chkconfig netfs off           关闭netfs服务
[root@CentOS6 ~]# chkconfig --list netfs
netfs          	0:off	1:off	2:off	3:off	4:off	5:off	6:off

[root@CentOS6 ~]# df             开机挂载不成功
[root@CentOS6 ~]# service netfs start         启动服务提示挂载,启动服务会自动扫描fstab
NFS filesystems queued to be mounted
Mounting filesystems:                                      [  OK  ]
**[root@CentOS6 ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
192.168.8.7:/data/nfs    52403200   32768  52370432   1% /mnt
                     
自动挂载

系统有/misc当访问时会自动挂载光盘,依赖于aotufs服务

[root@CentOS7 ~]# rpm -ql autofs
/etc/auto.master
/etc/auto.master.d
[root@CentOS7 ~]# cat /etc/auto.master
/misc	/etc/auto.misc
[root@CentOS7 ~]# cat /etc/auto.misc 
cd		-fstype=iso9660,ro,nosuid,nodev	:/dev/cdrom

以上光盘自动挂载用的相对路径法

实现wang家目录共享(相对路径)

nfs服务器配置

[root@CentOS7 ~]# yum install nfs-utils
[root@CentOS7 ~]# systemctl start nfs-server
[root@CentOS7 ~]# cat /etc/exports
/home/wang *(rw,all_squash,anonuid=1000,anongid=1000)
[root@CentOS7 ~]# exportfs -r
[root@CentOS7 ~]# exportfs -v
/home/wang     	<world>(sync,wdelay,hide,no_subtree_check,anonuid=1000,anongid=1000,sec=sys,rw,secure,root_squash,all_squash)

2、客户端配置

[root@CentOS7 ~]# vim /etc/auto.master           
/home     /etc/auto.home
[root@CentOS7 ~]# cat /etc/auto.home
wang  -fstype=nfs,rw   :192.168.8.7:/home/wang

弊端:该目录下其他文件消失

实现wang家目录共享(绝对路径)
[root@CentOS7 ~]# vim /etc/auto.master
/-     /etc/auto.home
[root@CentOS7 ~]# cat /etc/auto.home        所以有路径写在子配置文件
/home/wang  -fstype=nfs,rw   :192.168.8.7:/home/wang

临时使用,如果知道主机IP,可以/net/192.168.37.17直接访问,不用设置

[root@CentOS7 ~]# ls /net/192.168.8.7
home

samba

[root@CentOS7 ~]# smbclient -L 192.168.8.1 -U test%wang
链接win共享文件
[root@CentOS7 ~]# mount -o vers=3.0,username=test,password=wang //192.168.8.1/ads /mnt  挂载
  • 相关包:
    • Samba 提供smb服务
    • Samba-client 客户端软件
    • samba-common 通用软件
    • cifs-utils smb客户端工具
    • samba-winbind 和AD相关
  • 相关服务进程:
    • smbd 提供smb(cifs)服务 TCP:139,445
    • nmbd NetBIOS名称解析 UDP:137,138
  • 主配置文件:/etc/samba/smb.conf

samba使用自己的虚拟用户登录,但虚拟用户必须是系统用户

[root@CentOS7 ~]# ll /var/lib/samba/private/passdb.tdb      存放samba虚拟用户数据库
-rw------- 1 root root 421888 Jul 21 20:43 /var/lib/samba/private/passdb.tdb
[root@CentOS7 ~]# pdbedit -L       查看你samba账号

[root@CentOS7 ~]# useradd -r -s /sbin/nologin smbuser1           创建用户
[root@CentOS7 ~]# useradd -r -s /sbin/nologin smbuser2
[root@CentOS7 ~]# smbpasswd -a smbuser1            加入samba账户
New SMB password:
Retype new SMB password:
Added user smbuser1.
[root@CentOS7 ~]# pdbedit -L        查看
smbuser1:987:
[root@CentOS7 ~]# smbpasswd -a smbuser2

[root@CentOS7 ~]# pdbedit -L -v
---------------
Unix username:        smbuser1
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-883155864-35602996-1539950649-1000    
Primary Group SID:    S-1-5-21-883155864-35602996-1539950649-513
Full Name:            
Home Directory:       \\centos7\smbuser1       默认家目录共享

######创建家目录,设置相关权限(用于家目录的恢复)
[root@CentOS7 ~]# cp -r /etc/skel/   /home/smbuser1
[root@CentOS7 ~]# cp -r /etc/skel/   /home/smbuser2
[root@CentOS7 ~]# ls /home/ -l
total 4
drwxr-xr-x   3 root root   78 Jul 21 20:51 smbuser1
drwxr-xr-x   3 root root   78 Jul 21 20:51 smbuser2
drwx------. 15 wang wang 4096 Jun 18 02:58 wang
[root@CentOS7 ~]# chmod 700 /home/smbuser1
[root@CentOS7 ~]# chmod 700 /home/smbuser2
[root@CentOS7 ~]# chown -R smbuser1.smbuser1 /home/smbuser1
[root@CentOS7 ~]# chown -R smbuser2.smbuser2 /home/smbuser2

win端访问
\192.168.8.17输入账户密码

C:\Users\adminwang>net use     查看缓存
C:\Users\adminwang>net user    查看用户
C:\Users\adminwang>net share    查看共享
C:\Users\adminwang>net user test /del    删除用户test
C:\Users\adminwang>net share test /del    删除共享

win默认所有分区都是共享,加$隐藏

\127.0.0.1\c$ 访问隐藏目录

配置选项

  • 全局设置:
    • [global] 服务器通用或全局设置的部分

      • workgroup 指定工作组名称
      • server string 主机注释信息
      • netbios name 指定NetBIOS名
      • interfaces 指定服务侦听接口和IP
      • hosts allow 可用“,” ,空格,或tab分隔,默认允许所有主机访问,也可在每个共享独立配置,如在[global]设置,将应用并覆盖所有共享设置
        • hosts allow = 172.25.
        • hosts allow = 172.25. .example.com
      • hosts deny 拒绝指定主机访问
      • config file=/etc/samba/conf.d/%U 用户独立的配置文件
      • Log file=/var/log/samba/log.%m 不同客户机采用不同日志
      • log level = 2 日志级别,默认为0,不记录日志
      • max log size=50 日志文件达到50K,将轮循rotate,单位KB
      • Security三种认证方式:
        • share:匿名(CentOS7不再支持)
        • user:samba用户(采有linux用户,samba的独立口令)
        • domain:使用DC(DOMAIN CONTROLLER)认证
      • passdb backend = tdbsam 密码数据库格式
    • samba用户须是Linux用户,建议使用/sbin/nologin

  • 特定共享设置:
    • [homes] 用户的家目录共享
    • [printers] 定义打印机资源和服务
    • [sharename] 自定义的共享目录配置
  • 其中:#和;开头的语句为注释,大小写不敏感
    • [共享名称] 远程网络看到的共享名称
    • comment 注释信息
    • path 所共享的目录路径
    • public 能否被guest访问的共享,默认no,和guest ok 类似
    • browsable 是否允许所有用户浏览此共享,默认为yes,no为隐藏
    • writable=yes 可以被所有用户读写,默认为no
    • read only=no 和writable=yes等价,如与以上设置冲突,放在后面的设置生效,默认只读
    • write list 三种形式:用户,@组名,+组名,用,分隔
      • 如writable=no,列表中用户或组可读写,不在列表中用户只读
    • valid users 特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
  • 宏定义:
    • %m 客户端主机的NetBIOS名 -------%M 客户端主机的FQDN
    • %H 当前用户家目录路径------------- %U 当前用户用户名
    • %g 当前用户所属组-------------------- %h samba服务器的主机名
    • %L samba服务器的NetBIOS名----- %I 客户端主机的IP
    • %T 当前日期和时间 ------------------- %S 可登录的用户名

管理SAMBA用户

  • 实现samba用户:
    包: samba-common-tools
    工具:smbpasswd pdbedit

1、添加samba用户

smbpasswd -a <user>
pdbedit -a -u <user>

2、修改用户密码

smbpasswd <user>

3、删除用户和密码:

smbpasswd –x <user>
pdbedit –x –u <user>

4、查看samba用户列表:

/var/lib/samba/private/passdb.tdb
pdbedit –L –v

5、查看samba服务器状态

smbstatus

配置举例

解析计算机名
[root@CentOS7 ~]# vim /etc/samba/smb.conf
[global]
        workgroup = WORKGROUP       #组
        netbios name = wangsrv      #解析计算机名  
[root@CentOS7 ~]# systemctl restart smb     #重启
  • 重启后用windows、centos ping wangsrv都不通
  • 需要启动nmb名字解析服务 systemctl start nmb.service
[root@CentOS7 ~]# systemctl start nmb.service 
  • 启动nmb服务后Windows能ping通,centos不能,是因为Linux只能host、DNS解析地址,而Windows除了host、DNS外,还可以广播方式询问IP
不同客户机采用不同日志
[global]
        workgroup = WORKGROUP
        netbios name = wangsrv
        log file = /var/log/samba/log.%m   
        log level = 2   

默认log level值为0,不记录日志,需加上log level = 2 并设置等级为2

[root@CentOS7 ~]# ls /var/log/samba/
cores  log.192.168.8.27  log.nmbd  log.smbd  old

远程访问后生成日志log.192.168.8.27

共享目录

允许匿名登录并有写权限

[root@CentOS7 ~]# vim /etc/samba/smb.conf
[share1]
path=/data/smbshare1 
read only = no                或者writeable=yes     可以写入
public = yes                  或guest_no=no        允许匿名登录
[root@CentOS7 ~]# mkdir /data/smbshare1
[root@CentOS7 ~]# systemctl restart smb

[root@CentOS7 ~]# smbclient //192.168.8.17/share1 -U magedu%wang   

只允许smbuser1、smbuser2用户登录

[root@CentOS7 ~]# vim /etc/samba/smb.conf
[share1]
path=/data/smbshare1 
read only = no                或者writeable=yes     可以写入
#public = yes                  或guest_no=no        允许匿名登录
valid users = smbuser1 smbuser2

只允许smbuser1、smbuser2具有写权限

[share1]
path=/data/smbshare1 
read only = yes                或者writeable=no     不具有写权限
#public = yes                  或guest_no=no        允许匿名登录
write list = smbuser1 smbuser2

隐藏共享目录(客户端不登录看不见共享目录)

[share1]
path=/data/smbshare1 
read only = no                或者writeable=yes     可以写入
#public = yes                  或guest_no=no        允许匿名登录
valid users = smbuser1 smbuser2
browsable = no

添加共享目录描述

[share1]
path=/data/smbshare1 
comment = testdir
read only = no                或者writeable=yes     可以写入
#public = yes                  或guest_no=no        允许匿名登录
valid users = smbuser1 smbuser2
browsable = no
挂载
[root@CentOS7 ~]# mount -o username=magedu,password=wang //192.168.8.17/share1 /mnt

centos6由于内核与centos7不一样,导致mount安全版本sec不一致,要挂载需要加选项

[root@CentOS7 ~]# man mount.cifs       查看sec选项

[root@CentOS7 ~]# mount -o sec=ntlmssp,username=magedu,password=wang //192.168.8.17/share1 /mnt
开机挂载

centos7开机挂载

[root@CentOS7 ~]# vim /etc/fstab
//192.168.8.17/shares1    /mnt   cifs  username=magedu,password=wang  0 0 

centos6开机挂载

[root@CentOS6 ~]# vim /etc/fstab
//192.168.8.17/shares1    /mnt   cifs  sec=ntlmssp,username=magedu,password=wang  0 0 

直接把密码写在fstab不安全

[root@CentOS7 ~]# vim /etc/fstab
//192.168.8.17/shares1    /mnt   cifs  username=magedu,credentials=/etc/smb.txt  0 0
[root@CentOS7 ~]# vim /etc/smb.txt
username=magedu
password=wang
[root@CentOS7 ~]# chmod 600 /etc/smb.txt     设置权限

自动挂载
[root@CentOS7 ~]# vim /etc/auto.master
/-      /etc/auto.samba 
[root@CentOS7 ~]# cat /etc/auto.samba 
/data/smbshare -fstype=cifs,credentials=/etc/smb.txt ://192.168.8.17/share1
[root@CentOS7 ~]# vim /etc/smb.txt
username=magedu
password=wang
[root@CentOS7 ~]# chmod 600 /etc/smb.txt
用户具有独立的权限
[root@CentOS7 ~]# vim /etc/samba/smb.conf
[global]        
        config file = /etc/samba/conf.d/%U
[share]                                                                                                                                               
        path=/data/smbshare1
        read only = yes
[root@CentOS7 ~]# mkdir /etc/samba/conf.d
[root@CentOS7 ~]# vim /etc/samba/conf.d/smbshare2
[share]
path=/data/smbshare2
read only = no      

访问share时进入的目录不一样(共享名一样)smbshare2访问目录/data/smbshare2,具有可写权限,其余用户访问/data/smbshare1,只有读权限

rsync实现备份
[root@CentOS7 ~]# rsync -av 192.168.8.17:/data/* /data/backip     备份需要输入密码
[root@CentOS7 ~]# ssh-keygen                                 基于key验证登录
[root@CentOS7 ~]# ssh-copy-id 192.168.8.17
[root@CentOS7 ~]# rsync -av 192.168.8.17:/data/* /data/backip     再次备份不输入密码
rsync、inotify实现实时备份

rsync服务器(共享服务器)

vi /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
hosts allow = 192.168.8.0/24
[backup]
path = /backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass

服务器端生成验证文件

echo "rsyncuser:magedu" > /etc/rsync.pass
chmod 600 /etc/rsync.pass

服务器端准备目录

mkdir /backup

客户端启动rsync服务

  • CentOS 7
systemctl start rsyncd 
  • CentOS 6
yum install xinted
chkconfig rsync on
service xinetd start

客户端配置密码文件(nfs服务器)

echo “magedu” > /etc/rsync.pass
chmod 600 /etc/rsync.pass

客户端测试同步数据

rsync -avz --password-file=/etc/rsync.pass /data/ [email protected]::backup

客户端创建inotify_rsync.sh脚本


#!/bin/bash
SRC='/data/'
DEST='rsyncuser@rsync服务器IP::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done
实验基于nfs的lamp并实时备份nfs
  • 环境:
    • powerdns:powerdns+mysql
      • IP:192.168.8.6
    • Apache:Apache PHP PHP-mysql php-fpm(基于ficg)
      • IP:192.168.8.7
    • mysql: mariadb
      • IP:192.168.8.17
    • nfs-master:nfs
      • IP:192.168.8.27
    • nfs-bak:实时备份(inotify+rsync)
      • IP:192.168.8.16

1、基于ficg配置apache

[root@Apache /var/www/html]# yum install httpd php php-mysql php-fpm -y
[root@Apache ~]# vim /etc/httpd/conf.d/fcgi.conf
DirectoryIndex index.php
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1    
  
[root@Apache ~]# httpd -M |grep fcgi
[root@Apache ~]# systemctl start php-fpm
[root@Apache ~]# systemctl start httpd
[root@Apache ~]# ss -ntl

[root@Apache ~]# vim /var/www/html/test,php
<?php                                                                                                                                                 
echo date("Y/m/d H:i:s");
phpinfo();
?>

2、安装NFS-master

[root@nfs-server /data/web]#  yum install nfs-utils -y
[root@nfs-server /data/web]#  mkdir /data/web
[root@nfs-server /data/web]#  getent passwd apache
[root@nfs-server /data/web]#  useradd -r -s /sbin/nologin  -u 48  apache    #UID根据Apache服务器查询得来
[root@nfs-server /data/web]#  setfacl -m u:apache:rwx /data/web
[root@nfs-server /data/web]#  vim /etc/exports
/data/web *(rw,all_squash,anonuid=48,anongid=48) 
[root@nfs-server /data/web]#  systemctl start nfs-server

3、Apache挂载nfs及安装wordpress

[root@Apache ~]# mount 192.168.8.27:/data/web /var/www/html
[root@Apache ~]# df
[root@Apache ~]# cd /var/www/html/
[root@Apache /var/www/html]# vim /etc/fstab
192.168.8.27:/data/wordpress        /var/www/html/    nfs    defaults 0 0 

[root@Apache /var/www/html]# tar xf wordpress-5.0.4-zh_CN.tar.gz 

测试http://192.168.8.7/wordpress/

4、mysql安装配置

[root@mariaDB ~]# yum install mariadb-server -y
[root@mariaDB ~]# systemctl start mariadb
[root@hostB ~]# mysql
MariaDB [(none)]> create database wpdb;
MariaDB [(none)]> grant all on wpdb.* to wpuser@'192.168.8.%' identified by 'centos';

IE浏览器安装配置wordpress
.>5、安装powerdns+mysql

[root@powerDNS ~]# epel
[root@powerDNS ~]# yum install mysql-server pdns pdns-backend-mysql -y
[root@powerDNS ~]# service mysqld start
[root@powerDNS ~]# mysql
mysql> create database pdnsdb;
mysql> grant all on pdnsdb.* to pduser@'192.168.8.%' identified by 'centos';
[root@powerDNS ~]# vim /etc/pdns/pdns.conf 
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=pdnsdb
gmysql-user=pduser
gmysql-password=centos   

[root@powerDNS ~]# service  pdns start
[root@powerDNS ~]# yum -y install httpd php php-devel php-gd php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext
[root@powerDNS ~]# service httpd start
[root@powerDNS ~]# cd /var/www/html/
[root@powerDNS /var/www/html]# wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz
[root@powerDNS /var/www/html]#  tar xf poweradmin-2.1.7.tgz 
[root@powerDNS /var/www/html]#  mv poweradmin-2.1.7 poweradmin

IE安装,安装时注意5-7步骤需要拷贝写入硬盘

6、inotify+rsync实时备份

  • rsync服务器 (备份服务器)
[root@NFS-bak ~]# vim /etc/rsyncd.conf
uid = root                                                                                                                                            
gid = root
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
hosts allow = 192.168.8.0/24
[backup]
path = /data/backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
                              
[root@NFS-bak ~]# mkdir /data/backup/
[root@NFS-bak ~]# echo "rsyncuser:magedu" > /etc/rsync.pass
[root@NFS-bak ~]# chmod 600 /etc/rsync.pass
[root@NFS-bak ~]# yum install xinetd
[root@NFS-bak ~]# chkconfig rsync on
[root@NFS-bak ~]# service xinetd start

  • nfs服务器
[root@NFS-master ~]# yum install inotify-tools
[root@NFS-master ~]# echo "magedu" > /etc/rsync.pass
[root@NFS-master ~]# chmod 600 /etc/rsync.pass

[root@NFS-master ~]# rsync -avz --password-file=/etc/rsync.pass /var/www/html/ [email protected]::backup

[root@NFS-master ~]# vim inotify_rsync.sh
#!/bin/bash
SRC='/data/web/'
DEST='[email protected]::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
done

[root@NFS-master ~]# chmod +x inotify_rsync.sh 
[root@NFS-master ~]# ./inotify_rsync.sh &      后台运行

猜你喜欢

转载自blog.csdn.net/wauzy/article/details/107449973