共享文件系统、统一管理账户——NFS、NIS服务器

(注:如若记忆没有出现偏差,本文应是写于2015年,楼主习惯使用LaTeX写笔记,后发现markdown不错,于是稍有修改后发布与此。)

(下文中的所有命令需要以root权限执行)

前言

在前面的文章中提到了两种文件共享方式:

第一种是使用SSH服务器,顺便使用SFTP,Windows平台有不少SSH客户端可以直接支持SFTP,比如Xmanager、MobaXterm。相比于FTP而言,优势在于安全性,但是由于加密原因,速度比FTP慢很多,例如在千兆宽带下,SFTP传输速度稳定传输在50M/s左右,而FTP传输速度可以稳定在90M/s左右。

第二种是使用FTP服务器。Windows平台有很多FTP客户端,使用起来比较方便。

但是无论是SFTP或FTP,如果需要使用修改上面的文件,都只能先下载到本地,之后再上传到服务器,对于一些文本文档而言,问题倒是不大,一些工具软件,例如Total Commander,可以提示你上传,但是总的来说对于这种场景而言,使用起来总归不是那么方便。

这里的介绍的NFS的全称是Network File System,用于Unix-like系统之间共享文件系统(PS:Windows系统和Unix-like系统之间共享文件系统可用Samba),通过将远程主机的文件系统挂载到本机,就像本机硬盘的分区一样,使用起来十分便利。

而NIS的全称是Network Information Service,主要用于统一管理数据,这里主要用它统一管理账户。用户账户数据都统一放在服务器中,客户机需要登录时,通过RPC即Remote Procedure Call从服务器获取数据。

共享文件系统、统一管理账户——NFS、NIS服务器_第1张图片
网络结构示意图

在这里,我们假设网络结构简化后如上图所示。假设有用户Jack、Peter、MeiMei,主目录在/home下,都属于BeyondGroup用户组,该组的共享目录为/share。我们要实现的功能是:BeyondGroup组的成员可以在任意一台客户机上都能进行自己的工作。 (这个功能真熟悉,又想起了那个没有鼠标的Unix机房,咦,为什么我脑海里会浮现《花房姑娘》这首歌... ...)

一、软件配置

1.1 服务器端

首先,要安装相应的软件系统,在Debian类系统中,通过apt工具安装,Red hat类系统中通过yum安装即可。

apt-get install nfs-kernel-server nfs-common rpcbind nis -y

1.1.1 RPC服务的配置

首先,为了防止服务被阻拦,
需要在/etc/hosts.deny中增加一行portmap: ALL
/etc/hosts.allow中增加一行portmap: 192.168.2.让该网段可以通过。

然后再/etc/hosts文件中设置主机名,增加一行192.168.2.10 主机名
其中主机名可以使用命令hostname或者cat /etc/hostname查看。

之后重启一下RPC服务,使配置生效。
Ubuntu 14中,命令为service rpcbind restart
若是系统使用systemd,那么使用systemctl命令重启,命令为systemctl restart rpcbind
(关于systemd请参考上一篇中相关的介绍)

1.1.2 NIS服务的配置

接下来修改NIS的配置文件。
首先,修改/etc/default/nis文件,找到NISSERVER和NISCLIENT两处,修改为:
NISSERVER=masterNISCLIENT=false,表示本机将作为NIS的服务器端。

修改/etc/yp.conf文件,在其中添加服务器信息。
domain domainName server 主机名,主机名就是前面查到的那个。
domainName是安装nis的时候输入的信息,可以直接在/etc/defaultdomain中修改,
或者运行命令修改(限Ubuntu 14)dpkg-reconfigure nis

修改/etc/ypserv.securenets文件,添加客户端所在的网段:255.255.255.0 192.168.2.0

修改/var/yp/Makefile文件,找到ALL = passwd group ...这样一个字段,
改成ALL = passwd shadow group ...

之后重启NIS服务,在Ubuntu 14中,命令为:

service ypserv start
/usr/lib/yp/ypinit -m
service ypserv restart

1.1.3 NFS服务的配置

NFS服务配置需要修改/etc/idmapd.conf文件,
找到Domain这一行,改为Domain = domainName,domainName就是前面提到的那个。

修改/etc/default/nfs-common文件,找到NEED_IDMAPD改为NEED_IDMAPD = YES

之后重启NFS和RPC服务即可,在Ubuntu 14中,命令为:
service nfs-kernel-server restart && service rpcbind restart

1.2 客户机端

客户机端也需要安装相应的软件包,和服务器端略有不同:

apt-get install nfs-common rpcbind nis -y

1.2.1 NIS服务的配置

修改/etc/yp.conf,加入一行domain domainName server 服务器主机名
这里的domainName和服务器设置相同。

修改/etc/nsswitch.conf文件,修改以下几行,在每行末添加字段nis

passwd: compat nis
group: compat nis
shadow: compat nis
hosts: files dns nis

1.2.2 NFS服务的配置

这里也是需要设置允许网络通过,
修改/etc/hosts.deny文件,增加一行portmap: ALL
修改/etc/hosts.allow文件,增加一行portmap: 192.168.2.10

另外,需要修改/etc/hosts文件,增加一行192.168.2.10 服务器主机名

修改/etc/idmapd.conf文件,
找到Domain =字段,修改为Domain = domainName,这里的domainName与服务器相同。

之后重启服务或机器即可。

二、账户配置

2.1 服务器端

2.1.1 用户与目录

首先,需要新建用户和组并创建主目录与共享目录:

#新建用户并指定主文件夹:
mkdir /home
useradd -u 3001 -d /home/Jack -m Jack
useradd -u 3002 -d /home/Peter -m Peter 
useradd -u 3002 -d /home/MeiMei -m MeiMei 

#添加到同一个组:
groupadd BeyondGroup
usermod -a -G BeyondGroup Jack 
usermod -a -G BeyondGroup Peter 
usermod -a -G BeyondGroup MeiMei 

#设置共享目录
mkdir /share
chgrp BeyondGroup /share
chmod 2770 /share

需要注意的是,这里需要对共享目录设置SGID权限,关于SGID请参考前面的文章中Set GID的内容。

2.1.2 NIS与NFS

为新建的用户设置好密码以后,重建YP数据库make -C /var/yp

通过NFS将文件系统共享到客户端,修改/etc/exports文件,添加两行:

/home 192.168.2.0/24(rw,no\_root\_squash)
/share 192.168.2.0/24(rw,no\_root\_squash)

重启NFS服务后验证一下是否已经成功:
showmount -e localhost

2.2 客户机端

查看NFS服务器共享情况:
showmount -e 192.168.2.10

创建挂载的目标目录后mkdir /home /share,设置开机挂载,修改/etc/fstab文件,增加两行:

192.168.2.10:/home /home nfs defaults 0 0
192.168.2.10:/share /share nfs defaults 0 0

重启客户机后,BeyondGroup的每个成员可以在任意一台客户机上使用自己的账户登录,并在自己的主目录下进行工作。

后记

感冒终于好了,对抗感冒果然还是要靠爱... ...


共享文件系统、统一管理账户——NFS、NIS服务器_第2张图片

你可能感兴趣的:(共享文件系统、统一管理账户——NFS、NIS服务器)