代码改变世界

网络文件共享服务

2019-08-05 19:08  我男友好用么  阅读(359)  评论(0编辑  收藏  举报

网络文件共享服务

  实现基于MySQL的虚拟用户FTP服务

    *实验环境三台主机:一台ftp服务器192.168.198.6,一台mariadb服务器192.168.198.72,一台测试机192.168.198.135

    *mariadb服务器操作:yum install mariadb-server -y[安装数据库]

              启动数据库服务:systemctl start mariadb

              启动数据库mysql[mysql要做安全加密,自此我就忽略了]

              创建ftp数据库:create database vsftpd;

              启用数据库:use vsftpd

              创建表及其字段:create table vuser (id int auto_increment primary key,username char(30),password char(50) binary);

              添加数据:insert vuser(username,password)values('ftp1',password('xdk')),('ftp2',password('lj'));

              创建用户:grant select on vsftpd.vuser to vsftpd@'192.168.198.%' identified by 'centos';

    *ftp服务器操作:wget http://prdownloads.sourceforge.net/pam-mysql/pam_mysql-0.7RC1.tar.gz[下载包]

            把包放置data目录下:mv pam_mysql-0.7RC1.tar.gz /data/

            解压包:tar xf pam_mysql-0.7RC1.tar.gz

            安装服务:yum install gcc gcc-c++ pam-devel mariadb-devel

            进入解压的包目录:cd pam_mysql-0.7RC1/

            生成模板放入指定目录:./configure --with-pam-mods-dir=/lib64/security --with-mysql=/usr -with-pam=/usr

             安装服务:make && make install

            编写数据库文件:vi /etc/pam.d/vsftpd.mysql        

auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.198.72  db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.198.72 db=vsftpd table=vuser usercolumn=username passwdcolumn=password crypt=2

            编写vsftpd配置文件:vim /etc/vsftpd/vsftpd.conf[在最后加入以下代码]

pam_service_name=vsftpd.mysql
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers.d/
userlist_enable=YES
tcp_wrappers=YES

           建立虚拟用户映射的系统用户及对应的目录:useradd -r -s /sbin/nologin -d /data/ftproot vuser

            创建目录:mkdir -pv /data/ftproot

            除去ftp根目录的写权限:chmod 555 /data/ftproot

           创建所需要目录,并为虚拟用户提供配置文件:mkdir -pv /etc/vsftpd/vusers.d,vi /etc/vsftpd/vusers.d/ftp1 

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftp1

            创建共享目录:mkdir -pv /data/ftp1

            目录中添加文件:echo file1 > /data/ftp1/file1

            启动vsftpd服务:systemctl start vsftpd

    *测试机操作:yum install ftp -y[安装服务]

          启动服务:service ftp start

          测试操作:ftp 192.168.198.6[输入数据库中的用户名和密码,登录即可]

          登录操作

[root@centos6 ~]#ftp 192.168.198.6
Connected to 192.168.198.6 (192.168.198.6).
220 (vsFTPd 3.0.2)
Name (192.168.198.6:root): ftp1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,198,6,114,194).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               6 Jul 29 07:43 file1
226 Directory send OK.

---------------------------------------------------------------------------------------------------------------------------------------------------------------

  NFS持久挂载/etc/fstab

    *实验环境两台新机器,演示Ip为192.168.198.6nfs,192.168.198.135测试

    *nfs操作:安装服务yum install -y nfs-utils 

         准备好共享的目录文件[这里我演示为/data/www]

         配置/etc/exports文件:/data/www  *(rw)[*是指所有主机都可访问,给予读写权限]

          配置完成,同步更新:exportfs -r

         启动服务:systemctl start nfs-server

    *测试机操作:查看共享目录showmount -e 192.168.198.6

          开机挂载/etc/fstab:192.168.198.6:/data/www  /mnt/nfs  nfs  defaults  0  0[写入配置文件/etc/fstab中]

          创建挂载文件:mkdir /mnt/nfs  

          检测挂载:mount -a

          查看挂载:df

          查看共享文件:ls /data/www[NFS持久挂载成功]

-----------------------------------------------------------------------------------------------------------------------------------------------------

  autofs 挂载规则

    #相对路径写法

      *实验环境两台新机器,演示Ip为192.168.198.6nfs,192.168.198.72挂载

      *nfs操作:安装服务yum install -y nfs-utils 

         准备好共享的目录文件[这里我演示为/data/www]

         配置/etc/exports文件:/data/www  192.168.198.72(rw)[仅72机器访问,给予读写权限]

         配置完成,同步更新:exportfs -r

         启动服务:systemctl start nfs-server

      *挂载机器:安装服务yum install -y autofs

           配置/etc/auto.master:添加/nfs  /etc/auto.nfs

           配置/etc/auto.nfs:添加/nfs1 -fstype=nfs,rw   192.168.198.6:/data/www

           启动服务:systemctl start autofs;

            挂载操作:ls /nfs[没有任何东西,自动生成nfs这个文件夹]

                ls /nfs/nfs1[查看到共享文件]

                df[查看挂载成功]  

    #绝对路径写法

      *实验环境两台新机器,演示Ip为192.168.198.6nfs,192.168.198.72挂载

      *nfs操作:安装服务yum install -y nfs-utils 

         准备好共享的目录文件[这里我演示为/data/www]

         配置/etc/exports文件:/data/www  192.168.198.72(rw)[仅72机器访问,给予读写权限]

         配置完成,同步更新:exportfs -r

         启动服务:systemctl start nfs-server

      *挂载机器:安装服务yum install -y autofs

           配置/etc/auto.master:添加/-  /etc/auto.test

           配置/etc/auto.test:添加/data/www  -fstype=nfs  192.168.198.6:/data/www

           启动服务:systemctl start nfs-server

           查看文件:ll /data/www[查看文件成功]

----------------------------------------------------------------------------------------------------------------------------------------------------------------

  利用autofs 实现家目录的漫游NFS

    *三台新主机,一台192.168.198.6NFS服务,家目录的NFS共享,两台192.168.198.72A,192.168.198.135B的autofs实现,家目录的挂载NFS[NFS与A为Centos7,B为Centos6]

    *NFS安装服务:yum install -y nfs-utils

           启动服务:systemctl start nfs-server

           设置开机启动:systemctl enable nfs-server

           添加共享文件夹:vim /etc/exports.d/xdk.exports(结尾只要为exports即可)          

                                /data/www 192.168.198.0/24(rw,anonuid=1000,anongid=1000,all_squash)
                   [插入的代码,rw是权限,由于6系统和7系统的用户 UID不一致,如果单纯设置(rw)权限,
                     将是6系统没法正常写入,需 要设置权限的压榨,都将权限压榨为1000]

           使用exportfs -r 使其生效,使用exportfs -v 查看是否生效。

    *A机器:安装服务yum install -y autofs

        查看共享:showmount -e 192.168.198.6

        家目录进行挂载:vim /etc/fstab

               192.168.198.6:/data/www  /data/www nfs defaults 0 0

        实现挂载:mount -a

         查看挂载:df[挂载已成功]

        查看共享文件:ls /data/www/[查看共享文件成功]

     *B机器:安装服务yum install -y autofs

        查看共享:showmount -e 192.168.198.6

        家目录进行挂载:vim /etc/fstab

               192.168.198.6:/data/www  /data/www nfs defaults 0 0

        实现挂载:mount -a

         查看挂载:df[挂载已成功]

        查看共享文件:ls /data/www/[查看共享文件成功]

    *测试:在任意一个客户端新建文件,然后在其他端查看     

----------------------------------------------------------------------------------------------------------------------------------------------------------------

  实现SAMBA共享,实现用户权限不同,目录可不同

    *实验前景,两台新机器,演示Ip为192.168.198.6smb,192.168.198.72客户端

    *smb操作:安装服务yum install samba -y

         创建两个用户:useradd -r -s /sbin/nologin smbadmin | useradd -r -s /sbin/nologin smbadmin1

         加入Samba数据库中并设置密码:smbpasswd -a smbadmin | smbpasswd -a smbadmin1

         创建共享目录:mkdir -pv /data/samba/smbadmin1

         赋予不同账号权限:setfacl -Rm u:smbadmin:rwx /data/samba/smbadmin1

         编写配置文件:vi /etc/samba/smb.conf,添加如下代码    

[class1]
   path = /data/samba/smbadmin1
   valid users = smbadmin smbadmin1
   write list = smbadmin
   browseable = No

 

        启动服务:systemctl start smb  

        共享目录添加文件:echo xdk > /data/samba/smbadmin1>file1.txt

    *客户端操作:安装服务yum install -y samba-client

          查看:smbclient -L //192.168.198.6/smbadmin1 -U smbadmin1

          操作:smbclient  /192.168.198.6/smbadmin1 -U smbadmin1[操作命令,但他没有权限,不能改变]

             smbclient  /192.168.198.6/smbadmin1 -U smbadmin[操作命令,有权限,可以改变]  

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  基于autofs挂载samba共享与基于/etc/fstab开机自动挂载

    *实验前景:继续上述samba共享,在其基础上做改变[以下两种方法自选]

    *客户端操作:编写配置文件/etc/auto.master:/-      /etc/auto.test[添加]

           编写文件/etc/auto.test:/data/smbadmin1  -fstype=cifs,sec=ntlmssp,credentials=/etc/smb.txt  ://192.168.198.6/smbadmin1[添加,credentials=/etc/smb.txt放入smb用户,开机启动]

           编写配置文件/etc/smb.txt:username=smbadmin password=xdk[添加,其他smb用户也可以,优先放权限大者]

            挂载生效:mount -a

            查看:df

            查看共享文件:ls /data/smbadmin1

    *客户端操作②:设置samba文件共享,开机自动挂载

          安装服务:yum install -y cifs-utils

          编写配置文件/etc/fstab://192.168.198.6/smbadmin1  /data/smbadmin1 cifs credentials=/etc/smb.txt 0 0[添加,credentials=/etc/smb.txt放入smb用户,开机启动]

          编写配置文件/etc/smb.txt:username=smbadmin password=xdk[添加,其他smb用户也可以,优先放权限大者]

          挂载生效:mount -a

          查看:df

          查看共享文件:ls /data/smbadmin1

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  数据的实时同步

    *实验环境:两台机器192.168.198.6inotify客户端,192.168.198.72rsync服务器

    *服务器操作:安装包yum install rsync -y

          服务器端修改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.198.0/24
[backup]
path = /backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass

 

         生成服务器验证文件:echo "rsyncuser:123456" > /etc/rsync.pass    chmod 600 /etc/rsync.pass

         创建文件用于存放备份文件:mkdir /backup    chmod 600 /backup/

         启动rsyncd服务:rsync --daemon 可加入/etc/rc.d/rc.local实现开机启动    systemctl start rsyncd

 

    *客户端操作:安装软件包yum install inotify-tools rsync -y

          准备需要监控备份的文件夹:echo xdk > /data/f1.txt

          生成密码文件,如果没有会变成交互式命令,创建后rsync会使用该密码自动同步:echo "123456" > /etc/rsync.pass  chmod 600 /etc/rsync.pass

          测试能否同步到rsync服务器:rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@192.168.198.72::backup

            

          创建实时监控脚本:vi inotify_rsync.sh

#!/bin/bash
SRC='/data/'
DEST='rsyncuser@192.168.198.72::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

         启动脚本:bash inotify_rsync.sh[脚本会一直运行,不用管他,开个新终端即可]

    *服务器操作:监控watch -n1 ls -l /backup

          

    *客户端操作:测试创建个新文件cd /data/  touch f2.txt

    *服务器操作:查看即可