美文网首页
网络文件共享服务

网络文件共享服务

作者: Liang_JC | 来源:发表于2020-04-16 17:03 被阅读0次

实现基于DB文件的虚拟用户FTP服务

1、安装软件
[root@Centos7 ~]#yum install vsftpd

2、创建用户数据库
[root@Centos7 ~]#vim /etc/vsftpd/vuser.txt
ftpuser1
centos
ftpuser2
centos 
[root@Centos7 ~]#cd /etc/vsftpd/
[root@Centos7 vsftpd]#db_load -T -t hash -f vuser.txt vuser.db
[root@Centos7 vsftpd]#chmod 600 vuser.txt vuser.db

3、创建用户和访问FTP目录
[root@Centos7 vsftpd]#useradd -d /var/ftproot -s /sbin/nologin vuser
[root@Centos7 vsftpd]#chmod a=rx /var/ftproot/
[root@Centos7 vsftpd]#mkdir /var/ftproot/upload
[root@Centos7 vsftpd]#setfacl -Rm u:vuser:rwx /var/ftproot/upload

4、pam配置文件
[root@Centos7 vsftpd]#vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
[root@Centos7 vsftpd]#vim /etc/vsftpd/vsftpd.conf 
user_config_dir=/etc/vsftpd/vusers.d/   
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.db
chroot_local_user=YES

5、虚拟用户建立独立的配置文件
[root@Centos7 vsftpd]#mkdir /etc/vsftpd/vusers.d
[root@Centos7 vsftpd]#cd /etc/vsftpd/vusers.d
[root@Centos7 vusers.d]#vim ftpuser1
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
[root@Centos7 vusers.d]#vim ftpuser2
local_root=/data/ftproot2 
[root@Centos7 vusers.d]#mkdir /data/ftproot2
[root@Centos7 vusers.d]#setfacl -Rm u:vuser:rwx /data/ftproot2
[root@Centos7 vusers.d]#chmod a-w /data/ftproot2/

6、启动服务
[root@Centos7 vusers.d]#systemctl restart vsftpd

#客户端测试
[root@localhost html]# ftp 192.168.37.7
Connected to 192.168.37.7 (192.168.37.7).
220 (vsFTPd 3.0.2)
Name (192.168.37.7:root): ftpuser1       
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,37,7,168,203).
150 Here comes the directory listing.
drwxrwxr-x    2 0        0               6 Apr 09 09:58 upload
226 Directory send OK.

ftp>cd upload
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (192,168,37,7,232,11).
150 Here comes the directory listing.
226 Directory send OK.

ftp> mkdir dir1
257 "/upload/dir1" created

ftp> put 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,37,7,212,152).
150 Ok to send data.
226 Transfer complete.
100475 bytes sent in 0.00188 secs (53501.06 Kbytes/sec)

ftp> ls
227 Entering Passive Mode (192,168,37,7,247,229).
150 Here comes the directory listing.
-rw-------    1 1004     1004       100475 Apr 09 10:20 1.txt
drwx------    2 1004     1004            6 Apr 09 10:18 dir1
226 Directory send OK.

ftp> rmdir dir1
250 Remove directory operation successful.
ftp> rm 1.txt
550 Remove directory operation failed.
ftp> ls
227 Entering Passive Mode (192,168,37,7,221,119).
150 Here comes the directory listing.
-rw-------    1 1004     1004       100475 Apr 09 10:20 1.txt
226 Directory send OK.

[root@localhost ~]# ftp 192.168.37.7
Connected to 192.168.37.7 (192.168.37.7).
220 (vsFTPd 3.0.2)
Name (192.168.37.7:root): ftpuser2
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.

ftp> mkdir dir2
550 Permission denied.
ftp> ls
227 Entering Passive Mode (192,168,37,7,248,36).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Apr 09 10:30 f1.txt
226 Directory send OK.

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

#环境:2台主机:ftp-server(37.17),mysql-server(37.17)

#mysql-server
[root@Centos7 ~]# yum install mariadb-server
[root@Centos7 ~]# systemctl start mariadb
[root@Centos7 ~]# mysql
MariaDB [(none)]> create database vsftpd;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> use vsftpd
Database changed
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
    -> );
Query OK, 0 rows affected (0.01 sec)

MariaDB [vsftpd]> INSERT INTO users(name,password) values('ftpuser1',password('centos'));
Query OK, 1 row affected (0.00 sec)

MariaDB [vsftpd]> INSERT INTO users(name,password) values('ftpuser2',password('magedu'));
Query OK, 1 row affected (0.00 sec)

MariaDB [vsftpd]> grant select on vsftpd.users to vsftpd@'192.168.37.%' identified by 'centos';
Query OK, 0 rows affected (0.01 sec)

MariaDB [vsftpd]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

#ftp-server
1、安装软件及模块
[root@Centos7 ~]#yum install gcc gcc-c++ pam-devel mariadb-devel vsftpd
#centos7没有对应的pam_mysql模块,需要编译
[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

2、添加pam配置文件
[root@Centos7 ~]#vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.37.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.37.17 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2 

3、创建用户与目录
[root@Centos7 ~]#useradd -d /data/ftproot -s /sbin/nologin vuser
[root@Centos7 ~]#chmod 555 /data/ftproot
[root@Centos7 ~]#mkdir -p /data/ftproot/upload
[root@Centos7 ~]#setfacl -m u:vuser:rwx /data/ftproot/upload/
[root@Centos7 vusers.d]#mkdir -p /data/ftproot2/upload
[root@Centos7 vusers.d]#setfacl -m u:vuser:rwx  /data/ftproot2/upload

4、配置vsftpd文件
[root@Centos7 ~]#vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
user_config_dir=/etc/vsftpd/vusers.d/
guest_enable=YES
guest_username=vuser
pam_service_name=vsftpd.mysql
chroot_local_user=YES
[root@Centos7 ~]#mkdir -p /etc/vsftpd/vusers.d/
[root@Centos7 ~]#cd /etc/vsftpd/vusers.d/
[root@Centos7 vusers.d]#vim ftpuser1 
anon_upload_enable=YES 
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftproot
[root@Centos7 vusers.d]#vim ftpuser2
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/data/ftproot2

5、启动服务
[root@Centos7 vusers.d]#systemctl restart vsftpd

6、测试
ftp 192.168.37.7
ftpuser1:centos
ftpuser2:magedu

实现基于NFS共享服务的http实时数据备份

#服务端
[root@Centos7 ~]#systemctl start nfs-server
[root@Centos7 ~]#vim /etc/exports.d/httpd.exports
/var/www/html *(rw,all_squash,anonuid=48,anongid=48) 
[root@Centos7 ~]#exportfs -r
[root@Centos7 ~]#exportfs -v
/var/www/html   <world>(sync,wdelay,hide,no_subtree_check,anonuid=48,anongid=48,sec=sys,rw,secure,root_squash,all_squash)
[root@Centos7 ~]#setfacl -Rm u:apache:rwx /var/www/html/

#客户端
[root@localhost ~]# showmount -e 192.168.37.7
Export list for 192.168.37.7:
/var/www/html *
[root@localhost ~]# mkdir /mnt/web
[root@localhost ~]# mount 192.168.37.7:/var/www/html /mnt/web
[root@localhost ~]# ls /mnt/web
index.html

NFS持久挂载/etc/fstab

[root@localhost ~]# umount /mnt/web
[root@localhost ~]# vim /etc/fstab 
192.168.37.7:/var/www/html /mnt/web nfs defaults 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/sda2                   100G  1.3G   99G   2% /
devtmpfs                    900M     0  900M   0% /dev
tmpfs                       910M     0  910M   0% /dev/shm
tmpfs                       910M  9.5M  901M   2% /run
tmpfs                       910M     0  910M   0% /sys/fs/cgroup
/dev/sda3                   5.0G  123M  4.9G   3% /data
/dev/sda1                   197M  115M   82M  59% /boot
tmpfs                       182M     0  182M   0% /run/user/0
192.168.37.7:/var/www/html  100G  4.7G   96G   5% /mnt/web

autofs

[root@Centos7 ~]# vim /etc/auto.misc
web     -fstype=nfs,rw,nosuid,nodev 192.168.37.7:/var/www/html
[root@Centos7 ~]# systemctl restart autofs
[root@Centos7 ~]# ls /misc/web
f1.txt  index.html

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

1、服务端搭建nfs
[root@Centos7 ~]# vim /etc/exports.d/home.exports 
/home/wang 192.168.37.0/24(rw,all_squash,anonuid=1002,anongid=1002)
[root@Centos7 ~]# exportfs -r

2、相对路径挂载(会影响目录原有结构,新目录可以使用此挂载)
[root@Centos7 ~]# vim /etc/auto.master
/home   /etc/auto.home
[root@localhost ~]# vim /etc/auto.home 
wang -fstype=nfs,rw 192.168.37.7:/home/wang
[root@localhost ~]# ls  /home/ 
wang                                                #mage目录不见了

3、绝对路径挂载(不影响原有目录结构)
[root@Centos7 ~]# vim /etc/auto.master
/-  /etc/auto.home
[root@localhost ~]# vim /etc/auto.home 
/home/wang -fstype=nfs,rw 192.168.37.7:/home/wang
[root@localhost ~]# ls /home/
mage  wang                                          #mage目录还在

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

#samba-server
1、安装samba
[root@Centos7 ~]# yum install samba

2、创建用户
[root@Centos7 ~]# echo "smbuser1 smbuser2 smbuser3" | xargs -n1 useradd -s /sbin/nologin 
[root@Centos7 ~]# smbpasswd -a smbuser1
[root@Centos7 ~]# smbpasswd -a smbuser2
[root@Centos7 ~]# smbpasswd -a smbuser3

3、修改配置文件
[root@Centos7 ~]# cd /etc/samba/
[root@Centos7 samba]# cp -a smb.conf{,.bak}
[root@Centos7 samba]# vim /etc/samba/smb.conf
[global]
    workgroup = WORKGROUP
    log file= /var/log/samba/log.%m
    log level = 2
    config file=/etc/samba/conf.d/%U
[root@Centos7 samba]# mkdir conf.d
[root@Centos7 samba]# vim conf.d/smbuser1
[smb1]
    comment= smbuser1_share
    path=/data/smbuser1
    writeable=yes               
    valid users=@smbgroup
[root@Centos7 samba]# vim conf.d/smbuser2
[smb2]
    comment= smbuser2_share
    path=/data/smbuser2
    writeable=yes               
    valid users=@smbgroup    
[root@Centos7 samba]# vim conf.d/smbuser3         
[smb3]        
    comment= smbuser3_share
    path=/data/smbuser3
    writeable=yes               
    valid users=@smbgroup


4、创建组,并把smb用户加入到组
[root@Centos7 samba]# groupadd smbgroup
[root@Centos7 samba]# gpasswd -a smbuser1 smbgroup
[root@Centos7 samba]# gpasswd -a smbuser2 smbgroup
[root@Centos7 samba]# gpasswd -a smbuser3 smbgroup

5、创建目录
[root@Centos7 samba]# mkdir /data/smbuser{1,2,3}
[root@Centos7 samba]# chown .smbgroup /data/smbuser{1,2,3}

6、启动服务
[root@Centos7 samba]# systemctl start smb

7、测试
smbclient -L 192.168.37.7 -U smbuser1%centos
smbclient //192.168.37.7/smbuser1 -U smbuser1%centos

基于autofs挂载samba共享

[root@localhost ~]# yum install -y cifs-utils
[root@localhost ~]# vim /etc/auto.master
/-      /etc/auto.samba
[root@localhost ~]# vim /etc/auto.samba
/mnt/smb1 -fstype=cifs,sec=ntlmssp,credentials=/etc/smb.txt ://192.168.37.7/smb1
[root@localhost ~]# vim /etc/smb.txt
username=smbuser1
password=centos
[root@localhost ~]# chmod 600 /etc/smb.txt
[root@localhost ~]# systemctl reload autofs

#测试
[root@localhost ~]# ls /mnt/smb1/
f11.txt  file1
[root@localhost ~]# rm -rf /mnt/smb1/file1/
[root@localhost ~]# ls /mnt/smb1/
f11.txt

数据的实时同步

#服务端
1、修改rsync配置文件
[root@Centos7 ~]# 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.37.0/24
[backup]
    path = /backup/
    comment = backup
    read only = no
    auth users = rsyncuser
    secrets file = /etc/rsync.pass
[root@Centos7 ~]# echo "rsyncuser:magedu" > /etc/rsync.pass 
[root@Centos7 ~]# chmod 600 /etc/rsync.pass
[root@Centos7 ~]# mkdir /backup
[root@Centos7 ~]# systemctl restart rsyncd

#客户端
1、配置同步
[root@Centos7 ~]# echo "magedu" > /etc/rsync.pass
[root@Centos7 ~]# chmod 600 /etc/rsync.pass
[root@Centos7 ~]# systemctl restart rsyncd
[root@Centos7 ~]# mkdir /data/www
[root@Centos7 ~]# echo "It is test" > /data/www/index.html

#一次性测试(client)
[root@Centos7 ~]# rsync -avz --password-file=/etc/rsync.pass /data/www rsyncuser@192.168.37.17::backup      #/data/www 不带斜杠整个目录备份,带斜杠是目录下备份

2、利用inotify脚本实验自动同步到服务端
[root@Centos7 ~]# yum install inotify-tools
[root@Centos7 ~]# vim inotify_rsync.sh
SRC='/data/www/'
DEST='rsyncuser@192.168.37.17::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@Centos7 ~]# bash inotify_rsync.sh &

3、测试同步(client)
[root@Centos7 ~]# cd /data/www
[root@Centos7 www]# dd if=/dev/zero of=block bs=1M count=100
[root@Centos7 www]# dd if=/dev/zero of=block2 bs=1M count=200

遇到的问题

[root@Centos7 ~]# smbclient -L 192.168.37.7
protocol negotiation failed: NT_STATUS_IO_TIMEOUT           #这错误提示

#解决方法,把DNS指向修改为外网DNS地址即可
[root@Centos7 ~]# vim /etc/resolv.conf 
nameserver 223.5.5.5

相关文章

  • 网络文件共享nfs服务

    NFS服务 NFS服务介绍 NFS服务主要进程: 配置防火墙 NFS配置文件 每个条目指定目录导出到的哪些主机,及...

  • 网络文件共享服务

    实现基于DB文件的虚拟用户FTP服务 实现基于MySQL的虚拟用户FTP服务 实现基于NFS共享服务的http实时...

  • 15NFS存储服务系统

    NFS存储服务概念网络文件共享系统,主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录 FT...

  • 轻量级HTTP文件共享服务

    基于HTTP协议轻量级文件共享服务,支持同一网络下文件下载、上传,同时兼容移动手机端、pc之间的文件共享。 特点:...

  • 文件共享服务为什么要连路由器?

    文件共享服务介绍 文件共享服务,就是在云上提供共享文件系统,让多台云主机非常方便地共享文件,最参见的共享文件系统包...

  • Windows专业版无法进入网络共享文件夹

    前段时间,一个同事的电脑无法进入单位服务器上的网络共享文件夹,很是困扰。 经检查,自己的电脑可以进入服务器网络共享...

  • ftp(一)安装部署

    相关知识 1.NAS:共享文件,网络加文件存储。2.SAN:共享设备,存储加网络。 文件共享类型。 1.ftp:文...

  • Samba服务实现Linux与Windows相互共享资源

    什么是samba? samba服务与FTP NFS服务一样,是一种提供网络文件共享的服务;samba服务可以让Wi...

  • 并发网络服务器 + 网络编程

    并发网络服务器: 基本概念解释 多进程并发服务器 togglesp.c 特点:父子共享打开文件表,但不共享用户地址...

  • nfs文件共享服务器应用实战(一)

    一、NFS文件共享服务器概念: NFS是network file sytem的缩写,它允许网络中的计算机之间共享资...

网友评论

      本文标题:网络文件共享服务

      本文链接:https://www.haomeiwen.com/subject/kjbomhtx.html