Linux 客户端配置 Kerberos 身份验证的 NFS 服务器步骤

如果你需要为一组类 Unix 客户端配置文件共享,很自然的你会想到网络文件系统,或简称 NFS。

在这篇文章中我们会介绍配置基于 Kerberos 身份验证的 NFS 共享的整个流程。假设你已经配置好了一个 NFS 服务器和一个客户端。如果还没有,可以参考 安装和配置 NFS 服务器 - 它列出了需要安装的依赖软件包并解释了在进行下一步之前如何在服务器上进行初始化配置。

另外,你可能还需要配置 SELinux 和 firewalld 以允许通过 NFS 进行文件共享。

下面的例子假设你的 NFS 共享目录在 box2 的 /nfs:

# semanage fcontext -a -t public_content_rw_t "/nfs(/.*)?"
# restorecon -R /nfs
# setsebool -P nfs_export_all_rw on
# setsebool -P nfs_export_all_ro on

(其中 -P 标记指示重启持久有效)。

最后,别忘了:

创建 NFS 组并配置 NFS 共享目录

1、 新建一个名为 nfs 的组并给它添加用户 nfsnobody,然后更改 /nfs 目录的权限为 0770,组属主为 nfs。于是,nfsnobody(对应请求用户)在共享目录有写的权限,你就不需要在 /etc/exports 文件中使用 norootsquash(LCTT 译注:设为 root_squash 意味着在访问 NFS 服务器上的文件时,客户机上的 root 用户不会被当作 root 用户来对待)。

# groupadd nfs
# usermod -a -G nfs nfsnobody
# chmod 0770 /nfs
# chgrp nfs /nfs

2、 像下面那样更改 export 文件(/etc/exports)只允许从 box1 使用 Kerberos 安全验证的访问(sec=krb5)。

注意:anongid 的值设置为之前新建的组 nfs 的 GID:

exports ? 添加 NFS 共享

/nfs box1(rw,sec=krb5,anongid=1004)

3、 再次 exprot(-r)所有(-a)NFS 共享。为输出添加详情(-v)是个好主意,因为它提供了发生错误时解决问题的有用信息:

# exportfs -arv

4、 重启并启用 NFS 服务器以及相关服务。注意你不需要启动 nfs-lock 和 nfs-idmapd,因为系统启动时其它服务会自动启动它们:

# systemctl restart rpcbind nfs-server nfs-lock nfs-idmap
# systemctl enable rpcbind nfs-server

测试环境和其它前提要求

在这篇指南中我们使用下面的测试环境:

    客户端机器 [box1: 192.168.0.18]
    NFS / Kerberos 服务器 [box2: 192.168.0.20] (也称为密钥分发中心,简称 KDC)。

注意:Kerberos 服务是至关重要的认证方案。

正如你看到的,为了简便,NFS 服务器和 KDC 在同一台机器上,当然如果你有更多可用机器你也可以把它们安装在不同的机器上。两台机器都在 mydomain.com 域。

最后同样重要的是,Kerberos 要求客户端和服务器中至少有一个域名解析的基本方式和网络时间协议服务,因为 Kerberos 身份验证的安全一部分基于时间戳。

为了配置域名解析,我们在客户端和服务器中编辑 /etc/hosts 文件:

host 文件 ? 为域添加 DNS

192.168.0.18    box1.mydomain.com    box1
192.168.0.20    box2.mydomain.com    box2

在 RHEL 7 中,chrony 是用于 NTP 同步的默认软件:

# yum install chrony
# systemctl start chronyd
# systemctl enable chronyd

为了确保 chrony 确实在和时间服务器同步你系统的时间,你可能要输入下面的命令两到三次,确保时间偏差尽可能接近 0:

# chronyc tracking

用 Chrony 同步服务器时间

安装和配置 Kerberos

要设置 KDC,首先在客户端和服务器安装下面的软件包(客户端不需要 server 软件包):

# yum update && yum install krb5-server krb5-workstation pam_krb5

安装完成后,编辑配置文件(/etc/krb5.conf 和 /var/kerberos/krb5kdc/kadm5.acl),像下面那样用 mydomain.com 替换所有 example.com。

下一步,确保 Kerberos 能功过防火墙并启动/启用相关服务。

重要:客户端也必须启动和启用 nfs-secure:

# firewall-cmd --permanent --add-service=kerberos
# systemctl start krb5kdc kadmin nfs-secure   
# systemctl enable krb5kdc kadmin nfs-secure       

现在创建 Kerberos 数据库(请注意这可能会需要一点时间,因为它会和你的系统进行多次交互)。为了加速这个过程,我打开了另一个终端并运行了 ping -f localhost 30 到 45 秒):

# kdb5_util create -s

创建 Kerberos 数据库

下一步,使用 kadmin.local 工具为 root 创建管理权限:

# kadmin.local
# addprinc root/admin

添加 Kerberos 服务器到数据库:

# addprinc -randkey host/box2.mydomain.com

在客户端(box1)和服务器(box2)上对 NFS 服务同样操作。请注意下面的截图中在退出前我忘了在 box1 上进行操作:

# addprinc -randkey nfs/box2.mydomain.com
# addprinc -randkey nfs/box1.mydomain.com

输入 quit 和回车键退出:

添加 Kerberos 到 NFS 服务器

为 root/admin 获取和缓存票据授权票据:

# kinit root/admin
# klist

缓存 Kerberos

真正使用 Kerberos 之前的最后一步是保存被授权使用 Kerberos 身份验证的规则到一个密钥表文件(在服务器中):

# kdadmin.local
# ktadd host/box2.mydomain.com
# ktadd nfs/box2.mydomain.com
# ktadd nfs/box1.mydomain.com

最后,挂载共享目录并进行一个写测试:

# mount -t nfs4 -o sec=krb5 box2:/nfs /mnt
# echo "Hello from Tecmint.com" > /mnt/greeting.txt

挂载 NFS 共享

现在让我们卸载共享,在客户端中重命名密钥表文件(模拟它不存在)然后试着再次挂载共享目录:

# umount /mnt
# mv /etc/krb5.keytab /etc/krb5.keytab.orig

挂载/卸载 Kerberos NFS 共享

现在你可以使用基于 Kerberos 身份验证的 NFS 共享了。

总结

在这篇文章中我们介绍了如何设置带 Kerberos 身份验证的 NFS。和我们在这篇指南中介绍的相比,该主题还有很多相关内容,可以在 Kerberos 手册 查看,另外至少可以说 Kerberos 有一点棘手,如果你在测试或实现中遇到了任何问题或需要帮助,别犹豫在下面的评论框中告诉我们吧。

linux如何知道nfs配置成功?

linux客户端挂接(mount)其他linux系统或UNIX系统的NFS共享
# mkdir ?p /mnt/nfs
注:建立一个目录用来作挂接点(mount point)
#mount -t nfs -o rw 10.140.133.9:/export/home/sunky /mnt/nfs

/etc/exports 设定档的语法与参数

以root 身份登陆Linux 服务器,编辑/etc 目录下的共享目录配置文件exports,指定共享目录及权限等。

执行如下命令编辑文件/etc/exports:

# vi /etc/exports

在该文件里添加如下内容:

/home/work 192.168.0.*(rw,sync,no_root_squash)

然后保存退出。

添加的内容表示:允许ip 地址范围在192.168.0.*的计算机以读写的权限来访问/home/work 目录。

/home/work 也称为服务器输出共享目录。

括号内的参数意义描述如下:

rw:读/写权限,只读权限的参数为ro;

sync:数据同步写入内存和硬盘,也可以使用async,此时数据会先暂存于内存中,而不立即写入硬盘。

no_root_squash:NFS 服务器共享目录用户的属性,如果用户是 root,那么对于这个共享目录来说就具有 root 的权限。

接着执行如下命令,启动端口映射:

# /etc/rc.d/init.d/portmap start

最后执行如下命令启动NFS 服务,此时NFS 会激活守护进程,然后就开始监听 Client 端的请求:

# /etc/rc.d/init.d/NFS start

用户也可以重新启动Linux 服务器,自动启动NFS 服务。

在NFS 服务器启动后,还需要检查Linux 服务器的防火墙等设置(一般需要关闭防火墙服务),确保没有屏蔽掉NFS 使用的端口和允许通信的主机,主要是检查Linux 服务器iptables,ipchains 等选项的设置,以及/etc/hosts.deny,/etc/hosts.allow 文件。

我们首先在Linux 服务器上进行NFS 服务器的回环测试,验证共享目录是否能够被访问。在Linux 服务器上运行如下命令:

# mount ?t NFS 192.168.0.20:/home/work /mnt

# ls /mnt

命令将Linux 服务器的NFS 输出共享目录挂载到/mnt 目录下,因此,如果NFS 正常工作,应该能够在/mnt 目录看到/home/work 共享目录中的内容。

时间: 2024-12-31 01:29:08

Linux 客户端配置 Kerberos 身份验证的 NFS 服务器步骤的相关文章

RHCE 系列(七):在 Linux 客户端配置基于 Kerberos 身份验证的 NFS 服务器

RHCE 系列(七):在 Linux 客户端配置基于 Kerberos 身份验证的 NFS 服务器 在本系列的前一篇文章,我们回顾了如何在可能包括多种类型操作系统的网络上配置 Samba 共享.现在,如果你需要为一组类 Unix 客户端配置文件共享,很自然的你会想到网络文件系统,或简称 NFS. RHCE 系列:第七部分 - 设置使用 Kerberos 进行身份验证的 NFS 服务器 在这篇文章中我们会介绍配置基于 Kerberos 身份验证的 NFS 共享的整个流程.假设你已经配置好了一个 N

Linux服务器配置—搭建NFS服务器步骤_Linux

一.安装配置NFS服务器 1> 要使NFS服务器提供服务,必须启动inet ,portmap,nfs 和 mount这4个守护进程,并保持在后台运行.2>规划好要共享的分区或目录3>定义客户机的参数4>配置NFS主配置文件:/etc/exports5>重启NFS服务 1.配置/etc/exports文件的语法#vi  /etc/exports /sharedir     -maproot=daemon   host2 /sharedir2    -ro     -networ

CentOS 6配置Postfix+Mysql认证的邮件服务器步骤

在开始配置邮件服务器前,先了解下邮件发送的基本过程和几个概念.MUA:邮件用户代理,客户端的例如outlook,foxmail,网页版如163邮箱等.MTA:邮件传输代理,MUA写好邮件后通过MTA传输,可能会有多个MTA做relay,这里sendmail和postfix就是.MDA:邮件投递代理,MTA找到目标后把邮件发送指定地方等待用户取走. 一封邮件的基本流程类似如下: 发件人:MUA --发送--> MTA -> 若干个MTA... -> MTA -> MDA <--

Linux NFS服务器的安装与配置

一.NFS服务简介 NFS 是Network File System的缩写,即网络文件系统.一种使用于分散式文件系统的协定,由Sun公司开发,于1984年向外公布.功能是通过网络让不同的机器.不同的操 作系统能够彼此分享个别的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据,是在类Unix系统间实现磁盘文件共享的一种方法. NFS 的基本原则是"容许不同的客户端及服务端通过一组RPC分享相同的文件系统",它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享. N

PHP中配置IIS7实现基本身份验证的方法_php技巧

在PHP运行环境中配置IIS7实现基本身份验证的方法,其实IIS7身份验证的方法有好几种,比如Windows身份验证.摘要式身份验证等,相对来说IIS7基本身份验证是最简单的一种,下面以图文方式介绍下IIS7基本身份验证的实现方法及注意事项,希望对PHP入门学习的朋友有所帮助. 准备工作 1.由于默认IIS7并没有安装配置身份验证功能,所以如果想要实现IIS7基本身份验证,首先必须安装IIS7身份验证功能,你需要打开 控制面板>程序和功能>打开或关闭Windows功能,找到IIS,选择基本身份

ASP .NET 中的身份验证:.NET 安全性指导

安全|安全性 摘要本文讨论了设计服务器应用程序时考虑安全性的重要性.Internet Information Services 和 ASP .NET 均提供了安全模型,以便您对用户进行适当的身份验证,并在应用程序中获得正确的安全环境. -------------------------------------------------------------------------------- 目录简介安全性考虑IIS 和 ASP .NET 之间的关系身份验证方法Web 服务的安全性代码访问安全

也谈ASP.NET 中的身份验证

一.配置安全身份验证模式 在Web.config 文件中,通过 <authentication> 节可以配置 ASP.NET 使用的安全身份验证模式,以标识传入的用户. <authentication mode="[Windows|Forms|Passport|None]"><forms>...</forms><passport/></authentication> <authentication> 节

asp.net身份验证方式介绍_实用技巧

windows身份验证: IIS根据应用程序的设置执行身份验证.要使用这种验证方式,在IIS中必须禁用匿名访问. Forms验证:用Cookie来保存用户凭证,并将 未经身份验证的用户重定向到自定义的登录页. Passport验证:通过Microsoft的集中身份验证服务执行的,他为成员站点提供单独登录 和核心配置文件服务. 一. 配置windows身份验证 1)配置IIS设置 2)设置Web.config <system.web> <authentication mode = &quo

SQL Server 2012 身份验证(Authentication)_MsSql

在保密你的服务器和数据,防备当前复杂的攻击,SQL Server有你需要的一切.但在你能有效使用这些安全功能前,你需要理解你面对的威胁和一些基本的安全概念.这篇文章提供了基础,因此你可以对SQL Server里的安全功能充分利用,不用在面对特定威胁,不能保护你数据的功能上浪费时间. 身份验证是验证主体(需要访问SQL Server数据库的用户或进程,是声称是的人或物)的过程.主体需要唯一的身份,这样的话SQL Server可以决定主体有哪个许可.在提供安全访问数据库对象中,正确的身份验证是必须的