Ubuntu 16.04 搭建 NFS 文件共享服务器

by admin on 2019年9月11日

NFS 文件共享能解决在集群环境下图片、附件等文件共享的问题。

NFS
网络文件系统(Network File
System),是一种分布式文件系统协议,该协议允许客户端主机可以像访问本地文件系统一样通过网络访问服务器端文件,即可以将远程服务器文件直接
mount挂载)到本地的文件目录结构中进行访问。

  1. Install
    $ sudo apt-get install nfs-common
    $ sudo apt-get install nfs-kernel-server

#sudo apt-get install nfs-kernel-server

打开/etc/exports文件,在末尾加入:

/home/xgc *(rw,sync,no_root_squash)

注:nfs允许挂载的目录及权限,在文件/etc/exports中进行定义,各字段含义如下:

/home/xgc:要共享的目录

* :允许所有的网段访问

rw :读写权限

sync:资料同步写入内在和硬盘

no_root_squash:nfs客户端共享目录使用者权限

重启服务:
#sudo service portmap restart
#sudo service nfs-kernel-server restart
#showmount -e

现在可以在本机上试一下:

#sudo mount -t nfs localhost:/home/xgc /mnt

#sudo umount /mnt

如果用在嵌入式设备上挂载,要加上参数-o nolock

另外,要注意的是,由于NFS要依靠portmap服务才能通讯的,www.linuxidc.com而由于Ubuntu10.10中默认好像是没有安装打开portmap服务的,所以,如果客户机要连到这台NFS

环境:Ubuntu
8.04.3 LTS(2.6.24-24-generic) + nfs-kernel-server
1:1.1.2-4ubuntu1.1


NFS服务器地址:192.168.0.2
其中一台客户端地址:192.168.0.3

现在假设有两台机器192.168.1.10和192.168.1.11

一、软件安装

服务器端需要安装 nfs-kernel-server 软件包:
$ sudo apt-get update
$ sudo apt-get install nfs-kernel-server

2.设定/etc/exports (For example:将/mnt/iso share给all net使用)
$ sudo vi /etc/exports
/mnt/iso *(ro,sync)

Server上的话,最好在客户机上也安装一下服务,同时启动一下protmap。

1> 安装Ubuntu nfs

我们将192.168.1.10做为服务端,192.168.1.11作为客户端。

二、服务器配置

默认情况下,NFS
服务器上定义了某个共享目录,则该目录及其子目录下的所有文件都可被访问。
出于对安全的考虑,客户端任何需要超级用户(即 root 用户,UID=0 &
GID=0)权限的文件操作都默认映射到 UID=65534 和 GID=65534 的用户,即
Ubuntu 系统中的 nobody:nogroup。
例如客户端使用 root
权限在挂载的共享目录中创建文件时,该文件的属主属组自动变为
nobody:nogroup,而非 root:root

3.启动NFS Server
$ sudo /etc/init.d/nfs-kernel-server start

附注,在网上下来的NFS资料

Nfs服务器的配置,配置文件/etc/exports:

Exports文件中一些选项的含义

选项                            说明

Ro                        该主机对该共享目录有只读权限

Rw                       该主机对该共享目录有读写权限

Root_squash         
客户机用root用户访问该共享文件夹时,将root用户映射成匿名用户

No_root_squash     客户机用root访问该共享文件夹时,不映射root用户

All_squash            
客户机上的任何用户访问该共享目录时都映射成匿名用户

Anonuid                将客户机上的用户映射成指定的本地用户ID的用户

Anongid                将客户机上的用户映射成属于指定的本地用户组ID

Sync                     资料同步写入到内存与硬盘中

Async                   资料会先暂存于内存中,而非直接写入硬盘

Insecure                允许从这台机器过来的非授权访问

例/  zhang (rw) wang (rw,no_root_squash)  
表示共享服务器上的根目录(/)只有zhang和wang两台主机可以访问,且有读写权限;zhang主机用root用户身份访问时,将客户机的root用户映射成服务器上的匿名用户(root_squash,该参数为缺省参数),相当于在服务器使用nobody用户访问目录;wang主机用root用户身份访问该共享目录时,不映射root用户(no_root_squash),即相当于在服务器上用root身份访问该目录

/root/share/  192.168.1.20 (rw,insecure,sync,all_squash) 
表示共享服务器上的/root/share/目录只有192.168.1.20主机可以访问,且有读写权限;此主机用任何身份访问时,将客户机的用户都映射成服务器上的匿名用户(all_squash),相当于在服务器上用nobody用户访问该目录(若客户机要在该共享目录上保存文件(即写操作),则服务器上的nobody用户对该目录必须有写的权限)

/home/ljm/  *.gdfs.edu.cn (rw,insecure,sync,all_squash)  
表示共享/home/ljm/目录,*.gdfs.edu.cn域中所有的主机都可以访问该目录,且有读写权限

/home/share/  .gdfs.edu.cn
(ro,sync,all_squash,anonuid=student,anongid=math)    
表示共享目录/home/share/,*.gdfs.edu.cn域中的所有主机都可以访问,但只有只读的权限,所有用户都映射成服务器上的uid为student、gid为math的用户

启动nfs后又修改了/etc/exports,不用重启该服务,使用exports命令即可:

Exports [-aruv]

-a    全部mount或umount文件/etc/exports中的内容

-r     重新mount文件/etc/exports中的共享内容

-u   umount目录

-v    在export的时候,将详细的信息输出到屏幕上

例[root@localhost ~]#exports –rv        全部重新export一次

  [root@localhost ~]#exports –au              全部卸载

Nfs客户端的配置:

若是临时使用可直接执行mount命令:mount servername(or IP): 共享目录
本地挂载目录

若客户机启动就自动挂载服务器的共享目录,则需修改客户机上的/etc/fstab文件

/etc/fstab格式:(192.168.233.139:/share  /mnt    nfs     
defaults        0       2)

                  Fs_spec                    fs_file  fs_type    
fs_options   fs_dump  fs_pass

Fs_spec:定义希望加载的文件系统所在的设备或远程文件系统,对于nfs则设为IP:/共享目录

Fs_file:本地挂载点

Fs_type:挂载类型

Fs_options:挂载参数

Fs_dump:该选项被“dump”命令使用来检查一个文件系统该以多快频率进行转储,若不需转储即为0

Fs_pass:该字段被fsck命令使用来决定在启动时需要被扫描的文件系统的顺序,根文件系统“/”
对应该字段值为1,其他文件系统为2,若该文件系统无需在启动时被扫描则为0

安全提醒:确保网络安全,使用nfs时结合tcp_wrappers来限制使用范围(如只想192.168.5.123主机可挂载nfs服务器上的共享目录),另外还可结合iptables来加强安全性。

[root@localhost ~]#vi /etc/hosts.allow

Portmap:192.168.5.123:allow

[root@localhost ~]#vi /etc/hosts.deny

Portmap:ALL:deny

关机时若nfs
server上有client联机时,先关掉portmap与nfs两个系统服务。若无法正确将此2项服务关掉,用netstat
–utlp找出PID,然后用kill杀掉进程才关机

Nfsstat查看NFS的运行状态,调整NFS运行大有帮助

Rpcinfo查看rpc执行信息,用于检测rpc运行情况

挂载格式:mount –t nfs hostname(or IP):/directory  /mount point

卸载:umount  /本地挂载目录(本地client卸载方法,但用exports
–au为server卸载)

Showmount –e IP(查看NFS服务器上共享了那些目录)
Showmount –a IP(用于nfs
server上,显示已经mount上本机NFS服务器的client(客户机))

图片 1

Ubuntu上默认是没有安装Ubuntu nfs服务器的,因此我们首先安装Ubuntu
nfs服务器端:

一、服务端操作

1. 在服务器端创建共享目录

sudo mkdir -p /var/nfs/gernel
sudo mkdir -p /var/nfs/public
sudo chown nobody:nogroup /var/nfs/gernel

4.检查
$ showmount -e localhost
成功的话应该可以看到这样的讯息:
Export list for localhost:
/mnt/iso * 

  1. roger@ubuntu:/# apt-get
    install nfs-kernel-server

1.安装NFS服务端

2. 修改 exports 文件

为了使 NFS
服务器定义的共享文件可被指定的客户端主机访问,需要在服务器端的
/etc/exports 文件中添加对应的记录。
该文件的格式如下:
Directory Host(Options ...) Host(Options) #comment
关于 /etc/exports 文件的详细语法格式可参考 man exports

文件示例:

/var/nfs/gernel  192.168.56.0/24(rw,insecure,sync,no_subtree_check)
/var/nfs/public  *(ro,insecure,sync,no_subtree_check)
/home/starky 192.168.56.1(rw,insecure,no_root_squash,sync,no_subtree_check)
  • 第一条纪录表示 192.168.56.0/24 子网中的所有主机都可挂载
    var/nfs/gernel 目录并拥有读写(rw)权限

  • 第二条纪录表示所有主机都可挂载 /var/nfs/public
    目录且拥有只读ro)权限

  • 第三条纪录表示客户端 IP 地址为 192.168.56.1 的主机可以挂载
    /home/starky 目录并拥有读写权限,而且任何 root 权限(UID=0 ,
    GID=0)的文件操作都不默认映射给 nobody:nogroup,而保持属主(组)仍为
    root(no_root_squash

  • insecure 选项:允许通过任意端口的远程访问

  • sync 选项:强制 NFS
    服务器在响应请求之前将文件的改动写入磁盘(强调客户端和服务端文件内容的一致性,但会降低文件操作的效率)。

  • no_subtree_check 选项:禁用 subtree_check
    。subtree_check
    用来设置服务器在收到请求时,检查该文件是否在指定目录结构中依旧可用(该选项会在某些情况下发生错误:重命名某文件的同时,该文件在客户端打开)。

图片 2

在一些文档中,提出还需要使用apt-get来手动安装nfs的客户端nfs-common,以及端口映射器portmap,但其实这是没有必要的,因为在安装nfs-kernel-server时,apt会自动为我们把它们安装好。

[plain]  

三、客户端挂载共享目录

列出 nfs 服务器上的共享目录

$ showmount -e 192.168.56.102
Exports list on 192.168.56.102:
/home/starky                        192.168.56.1
/var/nfs/public                     *
/var/nfs/gernel                     192.168.56.0/24

创建挂载点
sudo mkdir -p /mnt/nfs/gernel
sudo mkdir -p /mnt/nfs/public
sudo mkdir -p /mnt/nfs/starky

挂载远程目录
sudo mount 192.168.56.102:/var/nfs/gernel /mnt/nfs/gernel
sudo mount 192.168.56.102:/var/nfs/public /mnt/nfs/public
sudo mount 192.168.56.102:/home/starky /mnt/nfs/starky

权限测试

如截图所示:

图片 3

nfs 权限测试

NFS 的权限设定基于 Linux
文件系统的权限管理,即客户端挂载远程共享目录后,会把它们当成本地磁盘目录一样对待,也是根据文件的属主(组)及其对应的权限设定来限制访问。
gernel 目录的属主(组)为
nobody:nogroup(65534:65534),所以虽然该目录为读写权限,非 root
用户无法执行新建操作。而 root 用户由于 NFS 默认的安全机制,会自动映射到
nobody:nogroup。
由于我在客户端和服务端都有一个名为 starky 的用户,且它们的 UID:GID
都为1000:1000,所以服务端的 /home/starky 目录可以直接被客户端的 starky
用户访问。且由于 no_root_squash 选项,通过 sudo
命令创建的文件其属主仍为 root(而不会再映射为 nobody)。
当然这会导致一些安全问题,比如多个客户端同时都有
UID(GID)为1000的用户(不管用户名是什么),则这些用户会共享服务端
/home/starky 目录里的文件权限。

2> 配置/etc/exports

sudo apt-get install nfs-kernel-server  

四、系统启动时自动挂载共享目录

可编辑 /etc/fstab 文件令挂载共享目录的 mount
操作成为系统的固定配置(手动输入的 mount
命令属于临时挂载,重启会自动卸载),使得系统重启后可以自动挂载远程文件系统。/etc/fstab
文件的示例内容如下:

# filesystem                    mountpoint       fstype  flags                        dump    fsck
192.168.56.102:/var/nfs/gernel  /mnt/nfs/gernel  nfs     rw,bg,intr,hard,nodev,nosuid 0       0
192.168.56.102:/var/nfs/public  /mnt/nfs/public  nfs4    ro,bg,intr,soft,nodev,nosuid 0       0
192.168.56.102:/home/starky     /mnt/nfs/starky  nfs     rw,bg,intr,hard,nodev,nosuid 0       0

Ubuntu nfs允许挂载的目录及权限在文件/etc/exports中进行了定义。
例如,我们要将根目录下的rogerdir目录共享出来,那么我们需要在/etc/exports文件末尾添加如下一行:

 

附录:

  1. /rogerdir *(rw,sync,no_root_squash)

2.打开/etc/exports文件,在末尾加入:

1. /etc/exports 文件中的 Host 格式

/etc/exports
文件的格式为:Directory Host(Options ...) Host(Options) #comment
其中的 Host 项用来指定可访问对应共享目录的主机,其格式可分为以下几种:

  • 单个主机
    Host 项可以为一个或多个单独的 TCP/IP 主机名或 IP 地址

admin
admin.starky.net
192.168.56.101
  • IP 子网

10.0.0.0/255.0.0.0  
172.16.0.0/255.255.0.0
192.168.56.0/24
  • TCP/IP 域
    通过使用通配符,可以指定某个特定域中的全部或部分主机

*.starky.net
*craft.starky.net
???.starky.net
  • NIS 组
    可以指定某个 NIS 组中所有主机的访问权限,使用 @group

其中:/rogerdir是要共享的目录,*代表允许所有的网络段访问(可以设置为192.168.0.3,只允许192.168.0.3访问),rw是可读写权限,sync是资料同步写入内存和硬盘,no_root_squash是
Ubuntu
nfs客户端分享目录使用者的权限,如果客户端使用的是root用户,那么对于该共享目录而言,该客户端就具有root权限。

[plain] 

2. /etc/exports 文件中的 Options
选项 描述
ro 只读权限
rw 读写权限(默认)
rw=list 通过 list 指定具有写权限的客户端主机,其他主机则为只读权限
root_squash 将 UID 0 和 GID 0 映射到 anonuid 和 anongid(即 Ubuntu 系统中的 nobody 和 nogroup)
no_root_squash 允许需要 root 权限的文件操作,有安全风险
all_squash 将所有的 UID 和 GID 映射到它们的匿名形式,主要针对不信任的主机
anonuid=xxx 指定客户端 root 权限的操作需要映射到的 UID(默认是65534)
anongid=xxx 指定客户端 root 权限的操作需要映射到的 GID(默认是65534)
insecure 允许通过任意端口的远程访问
async 服务器可以在写入硬盘之前响应客户端的写入请求
wdelay 通过延迟同步多个客户端对文件的更新
sec=flavor 指定共享目录的安全验证方法,包括 sys(UNIX 验证),dh (DES),krb5ikrb5pnone(匿名访问)

其它Ubuntu nfs常用的参数有:

/home/zdw *(rw,sync,no_root_squash)  

3. NFS 挂载选项
选项 描述
rw 以读写模式挂载文件系统(rw 也需在服务端定义)
ro 以只读模式挂载文件系统
bg 如挂载失败(服务器无响应),在后台继续尝试并执行其他挂载请求
hard 如果服务器无响应,重复发送请求直到服务器回复
soft 如果服务器无响应,重复发送请求,超过一定时间后返回错误,而不会一直阻塞
intr 允许用户中断阻塞的文件操作(并返回错误)
nointr 不允许用户中断客户端的文件操作请求
retrans=n 在 soft 模式下,指定返回错误前重复发送请求的次数
timeo=n 设置超时后重复发送请求的时间间隔(单位 1/10 秒)
rsize=n 设置读取 buffer 大小为 n bytes
wsize=n 设置写入 buffer 大小为 n bytes
sec=flavor 设置安全验证方法
proto=proto 设置传输协议,NFSv4 必须为 TCP
  1. ro
    只读访问
  2. rw
    读写访问sync 所有数据在请求时写入共享
  3. async nfs在写入数据前可以响应请求
  4. secure nfs通过1024以下的安全TCP/IP端口发送
  5. insecure nfs通过1024以上的端口发送
  6. wdelay
    如果多个用户要写入nfs目录,则归组写入(默认)
  7. no_wdelay 如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。
  8. hide
    在nfs共享目录中不共享其子目录
  9. no_hide
    共享nfs目录的子目录
  10. subtree_check 如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)
  11. no_subtree_check 和上面相对,不检查父目录权限
  12. all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
  13. no_all_squash 保留共享文件的UID和GID(默认)
  14. root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
  15. no_root_squas root用户具有根目录的完全管理访问权限
  16. anonuid=xxx
    指定nfs服务器/etc/passwd文件中匿名用户的UID
  17. anongid=xxx
    指定nfs服务器/etc/passwd文件中匿名用户的GID

 

4. NFS 协议讨论

传输协议
最初的 NFSv2 由于性能原因使用 UDP 协议,虽然 NFS
添加了自己的包序列重组错误检查功能,但 UDP 和 NFS
都不具备阻塞控制算法,所以在大型的互联网络环境中缺乏足够的性能。
NFSv3 提供了 UDP 和 TCP 协议之间的选择。NFSv4 只能使用 TCP 协议。
随着 CPU,内存等硬件设备和网络传输速度的提高,最初由于性能需求而倾向 UDP
协议的选择也变得不再必要。

State
NFSv2 和 NFSv3
无状态的连接,服务端不会跟踪客户端对共享目录的挂载情况,而是使用
“cookie” 来记录一次成功的挂载。”cookie”
不会因为服务器重启而删除,可以用来在服务器挂掉之后保留客户端的连接信息。
NFSv4
有状态的连接,客户端和服务端都会维护文件操作纪录及文件锁的状态。所以不再需要
“cookie” 的使用。

文件锁
早期版本的 NFS 协议(v2 &
v3)由于是无状态的连接,它们并不清楚哪些主机正在使用哪些文件。但是文件锁的实现又需要获取状态信息。所以早期协议中的文件锁是独立于
NFS 实现的。
而 NFSv4
将文件锁的实现整合到了核心协议中,虽然此举增加了复杂度,但同时也解决了早期版本中的很多问题。
但是为了兼容使用 V2 和 V3 协议的客户端,独立的 lockedstatd
守护进程仍旧需要。

安全相关
NFS 协议最初在设计时并不关注安全性,NFSv4
通过引入对更强大的安全服务和身份验证的支持,加强了该协议的安全性。

传统的 NFS 协议大多使用 AUTH_SYS 验证方式,基于 UNIX
的用户和组标识。在这种方式下,客户端只需要发送自己的 UID 和 GID
并与服务器上的 /etc/passwd 文件内容作对比,以决定其拥有怎样的权限。
所以当多个客户端存在 UID
相同的用户时,这些用户会拥有相同的文件权限。更进一步,拥有 root
权限的用户可以通过 su 命令切换到任意 UID
登录,服务器会因此给予其对应 UID 的权限。
为了防止上面的问题出现,服务器可选择使用更健壮的验证机制比如
Kerberos 结合 NFS PRCSEC_GSS。

NFS 共享目录的访问控制基于 /etc/exports 文件中定义的主机名或 IP
地址。但是客户端很容易针对其身份和 IP
地址造假,这也会导致一些安全问题。
NFSv4 只使用 TCP 作为自己的传输协议,而且通常只开放 2049
端口进行数据传输。在配置防火墙时,除了放开 2049
端口的限制外,还要时刻注意数据传输的源地址和目标地址。

3> Ubuntu nfs重启服务

其中/home/zdw 是你要共享的目录

5. Windows 系统挂载共享目录

win10 系统默认不能挂载 NFS 共享目录,需要进入控制面板 – 程序 –
程序和功能 – 启用或关闭 Windows 功能
,勾选上 NFS 服务

图片 4

启用 nfs 服务

之后就可以使用 mount 命令挂载共享目录了。

图片 5

mount 命令挂载共享目录

只是 Windows 系统并不使用 Linux
那样的用户管理,导致挂载的共享目录只能读取而没有写入的权限。

图片 6

无法写入文件

解决办法是在注册表中新建两个 DWORD 值,用作匿名用户的 UID 和
GID。
默认参数下的挂载选项,UID 和 GID 都为 -2:

图片 7

默认挂载选项

可进入注册表编辑器regedit),定位到
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default,新建两个名为
AnonymousUidAnonymousGid
DWORD(32位)值,改成自己需要用到的数字(我都改成了 0 ,即对应 Linux
系统中的 root 用户。如需要改为 0 以外的数字,注意先转换成 16 位)。
此时的挂载选项变为:

图片 8

更改 UID 和 GID

如更改未生效,可重启电脑。

  1. roger@ubuntu:/#
    /etc/init.d/nfs-kernel-server restart

* :允许所有的网段访问

参考资料

UNIX and Linux System Administration Handbook, 4th
Edition
How to Mount an NFS Share Using a Windows 10 Machine

4、测试Ubuntu nfs

rw :读写权限

此时可以运行以下命令来显示一下共享出来的目录:
$showmount -e
或者可以使用以下命令把它挂载在本地磁盘上,例如将/rootfs挂载到/mnt下:
$ sudo mount -t nfs localhost:/rogerdir /mnt
可以运行df命令查看是否挂载成功。查看后可以使用以下命令卸载:
$ sudo umount /mnt

sync:资料同步写入内在和硬盘

图片 9

no_root_squash:nfs客户端共享目录使用者权限

如果需要指定只对某个网段(如192.168.1.1~192.168.1.192)可以这样设置

[plain]  

sudo /usr/local/www/
192.168.1.*(rw,sync,no_root_squash,no_subtree_check)    

 

也可以手动指定多个网段

[plain]  

/usr/local/www/
192.168.1.10(rw,sync,no_root_squash,no_subtree_check)
192.168.1.11(rw,sync,no_root_squash,no_subtree_check)  

 

多目录共享添加多行即可。

 

3.重启服务

[plain]  

sudo /etc/init.d/portmap restart                  <—重启portmap,  

sudo /etc/init.d/nfs-kernel-server restart      <—重启nfs服务  

showmount -e                                        
 <—显示共享出的目录  

 

二、客户端端操作

1.安装nfs服务

安装nfs-common或nfs-kernel-server都行

[plain]  

sudo apt-get isntall nfs-common  

[plain] 

sudo apt-get install nfs-kernel-server  

 

2.挂载

[plain] 

sudo mount -t nfs 192.168.1.10:/usr/local/www /usr/local/www  

这一命令就已经将10上的/usr/local/www
目录挂载到客户机的/usr/loca/www目录上了。

可以在客户机上挂载目录里创建一个文件进行测试。

[plain] 

sudo touch 1.txt  

加到服务端上查看发现文件已经存在了,共享成功。

3.取消挂载

[plain] 

sudo umount /usr/local/www  

 

如果取消挂载的时候提示 “/usr/local/www device is busy ”
的提示,表示目录正在使用,无法取消挂载。

这里我们可以执行如下命令:

[plain]  

fuser -km /usr/local/www  

df -lh  

 

完成后再执行umount命令就可以了。

4.开机自动挂载

如果想实现开机自动挂载,可以在/etc/rc.local文件中exit 0之前

加入我们要挂载的命令

sudo mount -t nfs 192.168.1.10:/usr/local/www /usr/local/www

即可。

 

三、附录NFS常用参数

[plain]  

ro 只读访问  

rw 读写访问sync 所有数据在请求时写入共享  

async nfs在写入数据前可以响应请求  

secure nfs通过1024以下的安全TCP/IP端口发送  

insecure nfs通过1024以上的端口发送  

wdelay 如果多个用户要写入nfs目录,则归组写入(默认)  

no_wdelay
如果多个用户要写入nfs目录,则立即写入,当使用async时,无需此设置。  

hide 在nfs共享目录中不共享其子目录  

no_hide 共享nfs目录的子目录  

subtree_check
如果共享/usr/bin之类的子目录时,强制nfs检查父目录的权限(默认)  

no_subtree_check 和上面相对,不检查父目录权限  

all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。  

no_all_squash 保留共享文件的UID和GID(默认)  

root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)  

no_root_squas root用户具有根目录的完全管理访问权限  

anonuid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的UID  

anongid=xxx 指定nfs服务器/etc/passwd文件中匿名用户的GID  

 

文件共享能解决在集群环境下图片、附件等文件共享的问题。
现在假设有两台机器192.168.1.10和192.168.1.11
我们将192.168.1.10做为服务端,1…

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图