zoukankan      html  css  js  c++  java
  • 网络文件共享服务

    网络文件共享服务

      实现基于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

        *服务器操作:查看即可


            

            

          

     

               

              

                  

                  

                  

     

     

  • 相关阅读:
    关于Visual Studio.NET 2008开发一册通C# 3.0从基础到项目实战的读后感
    书.NET 3.5与VB 2008高级编程(第3版)的评论
    Java 基础语法
    idea 无法创建子目录
    壁纸
    【博客园】美化
    Java变量和常量
    本人负责任的告诉你,从博客看不出什么东东来。
    DataFormating的用法总结
    javascript弹出div(一)
  • 原文地址:https://www.cnblogs.com/dengkui/p/11264529.html
Copyright © 2011-2022 走看看