企业文件共享服务器,共享网盘搭建

NFS介绍

网络文件系统是 FreeBSD 支持的文件系统中的一种, 也被称为 NFS。 NFS 允许一个系统在网络上与它人共享目录和文件。通过使用 NFS,用户和程序可以象访问本地文件 一样访问远端系统上的文件。

构建NFS远程共享存储

文件系统级别共享(是NAS存储) ---------  已经做好了格式化,可以直接用。 速度慢比如:nfs,samba

NFS 
NFS:Network File System 网络文件系统,NFS 和其他文件系统一样,是在 Linux 内核中实现的,因此 NFS 很难做到与 Windows 兼容。NFS 共享出的文件系统会被客户端识别为一个文件系统,客户端可以直接挂载并使用。是Unix系统之间共享文件的一种协议
NFS 文件系统仅支持基于 IP 的用户访问控制,NFS 的客户端主要为Linux。

虚拟机准备

实验环境准备两台机器
支持多节点同时挂载以及并发写入
服务端:nfs-server 192.168.246.160
客户端:web1 192.168.246.161

1. 关闭防火墙(2台机器都操作)

systemctl stop firewalld

systemctl disable firewalld	

setenforce 0

 2. 安装NFS (服务端 nfs-server 192.168.246.160 操作)

[root@nfs-server ~]# yum -y install rpcbind  #安装rpc协议的包
[root@nfs-server ~]# yum -y install nfs-utils #安装nfs服务,提供文件系统
启动服务
[root@nfs-server ~]# systemctl start nfs
[root@nfs-server ~]# systemctl start rpcbind
[root@nfs-server ~]# mkdir /nfs-dir   #创建存储目录
[root@nfs-server ~]# echo "nfs-test" >> /nfs-dir/index.html  #制作test文件
[root@nfs-server ~]# vim /etc/exports   #编辑共享文件
/nfs-dir        192.168.246.0/24(rw,no_root_squash,sync)

 可选参数注释:
ro:只读
rw:读写
*:表示共享给所有网段。
sync:所有数据在请求时写入共享
root_squash: 对于使用分享目录的使用者如果是root用户,那么这个使用者的权限将被压缩成为匿名使用者,只读权限。
no_root_squash:使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限。

3. 重启nfs服务虚拟机,让配置生效 

[root@nfs-server ~]# systemctl restart nfs-server #重启服务。
[root@nfs-server ~]# systemctl enable nfs-server #制作开机启动

[root@testpm-server ~]# exportfs -v   #确认 NFS 服务器启动
/nfs-dir        192.168.246.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)

4. 用户端访问测试 (web1 192.168.246.161 操作)

[root@web1 ~]# yum -y install rpcbind
[root@web1 ~]# yum -y install nfs-utils
[root@web1 ~]# mkdir /test #创建挂载点
[root@web1 ~]# mount -t nfs 192.168.246.160:/nfs-dir /test  #挂载
[root@web1 ~]# df -Th
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  xfs        17G  1.1G   16G   7% /
tmpfs                    tmpfs      98M     0   98M   0% /run/user/0
192.168.246.160:/nfs-dir nfs4       17G  1.4G   16G   8% /test
[root@web1 ~]# ls /test
index.html
[root@web1 ~]# umount /test  #取消挂载


# 制作开机挂载
[root@web1 ~]# vim /etc/fstab
192.168.246.160:/nfs-dir    /test          nfs     defaults        0 0
[root@web1 ~]# mount -a

FTP介绍

- 文件传输协议(File Transfer Protocol,FTP),基于该协议FTP客户端与服务端可以实现共享文件、上传文件、下载文件。 FTP 基于TCP协议生成一个虚拟的连接,用户可以通过客户端向FTP服务器端上传、下载、删除文件,FTP服务器端可以同时提供给多人共享使用。

- FTP服务是Client/Server(简称C/S)模式,基于FTP协议实现FTP文件对外共享及传输的软件称之为FTP服务器源端,客户端程序基于FTP协议,则称之为FTP客户端,FTP客户端可以向FTP服务器上传、下载文件。

FTP Server
作用:提供文件共享服务,实现上传下载
端口:
21号,建立tcp连接  默认端口
20号:传输数据

ftp主动模式

ftp主动模式:客户端开启一个端口N(>1023)向服务端的21端口,建立连接,同时开启一个N+1,告诉服务端,我监听的是N+1端口,服务端接到请求之后,用自己的20端口连接到客户端的N+1端口,进行传输

21端口建立连接
20端口传输数据

 ftp被动模式

ftp被动模式:客户端同时开启两个端口(1024,1025),一个端口(1024)跟服务端的21端口建立连接,并请求,大哥,我连上了,你再开一个端口呗。服务端接到请求之后,随机会开启一个端口(1027)并告诉客户端我开启的是1027端口,客户端用另一个端口(1025)与服务端的(1027)端口进行连接,传输数据

 Vsftp 服务器简介

非常安全的FTP服务进程(Very Secure FTP daemon,Vsftpd),Vsftpd在Unix/Linux发行版中最主流的FTP服务器程序,优点小巧轻快,安全易用、稳定高效、满足企业跨部门、多用户的使用(1000用户)等。

构建vsftpd服务器

虚拟机准备

FTP Server(服务端)
实验环境--准备两台机器
关闭防火墙和selinux
#systemctl stop firewalld
#systemctl disable firewalld    
#setenforce 0
=========================================
ftp-server 192.168.246.160
client 192.168.246.161

 1. 安装ftp服务端(作为文件共享服务器的虚拟机操作)

[root@ftp-server ~]# yum install -y vsftpd
[root@ftp-server ~]# systemctl start vsftpd

2. 配置ftp

# FTP默认共享目录:/var/ftp
[root@ftp-server ~]# touch /var/ftp/pub/test.txt  #创建文件到共享目录
[root@ftp-server ~]# systemctl enable vsftpd
[root@ftp-server ~]# cd /var/ftp/
[root@ftp-server ftp]# ls
pub
[root@ftp-server ftp]# chown ftp.ftp pub/ -R  #修改根目录的属主与属组
[root@ftp-server ftp]# ll 
total 0
drwxr-xr-x. 2 ftp ftp 22 Aug  3 03:15 pub

注意:

  • 改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root

 找到29行将下面的注释取消,vsftp版本不同,需要修改的行可能不一样

[root@ftp-server ~]# vi /etc/vsftpd/vsftpd.conf

34 anon_other_write_enable=YES
anon_umask=000  #匿名用户上传下载目录权限掩码

 修改完配置之后需要重启完服务才能生效
还需要从新从客户端登陆,否则修改后的配置看不到效果。

重启vsftpd

[root@ftp-server ~]# systemctl restart vsftpd

客户端使用ftp

Linux需要安装ftp客户端

[root@client ~]# yum -y install lftp #安装客户端
[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:~> ls
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
lftp 192.168.246.160:/> cd pub/
lftp 192.168.246.160:/pub> ls
-rw-r--r--    1 14       50              0 Aug 02 19:14 test.txt

get命令(下载,首先要开启下载功能)

下载完成后,文件将会出现在客户端当前目录下。

#连接ftp服务器
[root@client ~]# lftp 192.168.246.160
#看到ftp服务器上有个目录pub
lftp 192.168.246.160:~> ls
drwxr-xr-x    2 0        0               6 Oct 30  2018 pub
#进入目录
lftp 192.168.246.160:/> cd pub/
#下载test文件
lftp 192.168.246.160:/pub> ls
-rw-r--r--    1 14       50              0 Aug 02 19:14 test.txt
lftp 192.168.246.160:/pub> get test.txt
#下载后退出ftp服务器
lftp 192.168.246.160:/pub> exit
#可以看到下载到了当前目录
[root@client ~]# ls
anaconda-ks.cfg  test.txt

 put命令(上传命令,上传之前请在服务端进行配置,将上传功能打开)

#创建一个测试文件upload.txt
[root@client ~]# touch upload.txt
#连接ftp服务器
[root@client ~]# lftp 192.168.246.160
#进入要上传的目录
lftp 192.168.246.160:~> cd pub/
#上传文件
lftp 192.168.246.160:/pub> put /root/upload.txt
lftp 192.168.246.160:/pub> ls
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt

创建目录

[root@client ~]# lftp 192.168.246.160
lftp 192.168.246.160:/pub> mkdir dir
lftp 192.168.246.160:/pub> ls
drwx------    2 14       50              6 Aug 02 19:17 dir

mirror上传目录

#在根目录创建了test目录
[root@client ~]# mkdir /test
#在/test目录下创建了test1文件
[root@client ~]# touch /test/test1.txt
[root@client ~]# lftp 192.168.246.160
#上传到ftp服务器
lftp 192.168.246.160:/pub> mirror -R /test/
lftp 192.168.246.160:/pub> ls
drwx------    2 14       50             23 Nov 16 12:18 test
-rw-------    1 14       50              0 Nov 16 12:14 upload.txt

 同样地,使用mirror命令下载整个目录

[root@client ~]# lftp 192.168.246.160
2lftp 192.168.246.160:/pub> mirror -R pub/

这将会把pub目录及其所有子目录和文件下载到客户端的当前目录

企业实战

给不同的部门或者用户分配不同的目录和权限

创建测试用户

创建 zhangsan、lisi 密码都设置为 “123456”

[root@ftp-server ~]# useradd zhangsan 
[root@ftp-server ~]# useradd lisi
[root@ftp-server ~]# passwd zhangsan  #修改密码
Changing password for user zhangsan.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@ftp-server ~]# passwd lisi 
Changing password for user zhangsan.
New password: 
BAD PASSWORD: The password fails the dictionary check - it is too simplistic/systematic
Retype new password: 
passwd: all authentication tokens updated successfully.

配置本地用户ftp配置文件

禁止匿名登录

[root@ftp-server ~]# vim /etc/vsftpd/vsftpd.conf  ---添加注释并修改 
anonymous_enable=NO           #将允许匿名登录关闭
#anon_umask=022                #匿名用户所上传文件的权限掩码 
#anon_upload_enable=YES        #允许匿名用户上传文件
#anon_mkdir_write_enable=YES   #允许匿名用户创建目录
#anon_other_write_enable=YES    #是否允许匿名用户有其他写入权(改名,删除,覆盖)

添加以下配置

新添加
local_root=/home/zhangsan       # 设置本地用户的FTP根目录,一般为用户的家目录
local_max_rate=0                # 限制最大传输速率(字节/秒)0为无限制

重启ftp

[root@ftp-server ~]# systemctl restart vsftpd

客户端使用分配的账号和密码登录

[root@ftp-client ~]# lftp 192.168.153.137 -u zhangsan
Password: 
lftp zhangsan@192.168.153.137:~> ls
lftp zhangsan@192.168.153.137:~> mkdir aaa
mkdir ok, `aaa' created
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
lftp zhangsan@192.168.153.137:~> put /root/test.txt 
lftp zhangsan@192.168.153.137:~> ls
drwxr-xr-x    2 1000     1000            6 Aug 02 20:55 aaa
-rw-r--r--    1 1000     1000            0 Aug 02 20:59 test.txt

服务端查看目录下用户上传的文件

[root@ftp-server ~]# cd /home/zhangsan/
[root@ftp-server zhangsan]# ls
aaa  test.txt
[root@ftp-server zhangsan]# ll
total 0
drwxr-xr-x. 2 zhangsan zhangsan 6 Aug  3 04:55 aaa
-rw-r--r--. 1 zhangsan zhangsan 0 Aug  3 04:59 test.txt

教程结束 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值