网络文件共享服务
实现基于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
*服务器操作:查看即可