在复杂的主机与网络环境中,我们可能会接触到多种主机与操作系统,配合Windows Server 2008 R2的原生“NFS服务器”功能可以让这样的复杂操作系统更方便应用。

然而面对网络上众多的帮助指南和设置向导难免会造成一些操作不够全面,本博文进行相关尝试后对其中的匿名访问的少支持进行一些弥补,同时也欢迎诸多网友的指正。

微软官方网站上提供相应NFS服务器配置指南,如果您是初次使用可以参考这个链接:http://technet.microsoft.com/zh-cn/library/cc753312.aspx

本文涉及到的Unix客户端匿名访问Windows提供的NFS服务器属于较特殊方向,因此如果在没有较为安全的防护措施下还是非常建议您使用有身份验证授权的方式进行访问与连接;同时现有环境并没有使用域控进行统一授权与管理,因此操作中完全是按照独立主机的模式进行实践的。

以下内容是本人在亲自使用后总结的允许匿名访问后的常见问题。

问题一:Unix客户端进行挂载(mount)的时候出现 “Input/output error”是什么情况?

解答:客户端需要开启Protmap服务;同时服务端需要设置好相应的NFS访问权限(匿名访问权限需要设置GID=-2,UID=-2),安全策略中设置“网络访问: 将 Everyone 权限应用于匿名用户”为“已启用”,以及NFS权限对共享目录进行读写操作。

Figure 1问题一图示,设置NFS身份验证,确保匿名访问有效

Figure 2问题一图示,设置NFS权限,确保共享目录的可读写

问题二:客户端挂载后提示没有权限(“Permission Denied”)创建文件或文件夹

解答:这里面提到的没有权限多数是因为在NFTS的权限策略无法创建,因为使用的是Windows下本身不存在的Unix匿名账户ID=-2的这个“用户”,我们需要将这个特殊的用户ID添加到对应的NTFS访问控制权限(ACL里面,这里面我们借助nfsfile命令(该命令需要在NFS服务角色安装好之后方可使用)来完成。

帮助命令很简单,下表展示内容即为帮助文件信息:

操作 NFS 文件的服务属性。

NFSFILE [/v] [/s] [/i[[u=<uid>]|[g=<gid>]|[wu=<account>]|[wg=<account>]]] [/r[[u=<uid>]|[g=<gid>]|[m=<mode>]]] [/c[w|x]] <filespec>

/? - 此消息

/v - 详细

/s - 扫描子目录查找匹配的文件

/i - 包括与指定标准相匹配的文件

u <uid> - NFS 所有者 SID 匹配<uid>

g <gid> - NFS 组 SID 匹配<gid>

wu <account> - NFS 所有者 SID 匹配<account>

wg <account> - NFS 组 SID 匹配<account>

/r - 替换文件上指定的选项

u <uid> - 设置 uid

g <gid> - 设置 gid

m <mode> - 将模式位设置为<mode>

wu <account> - 设置 Windows 所有者帐户

wg <account> - 设置 Windows 组帐户

/c - 转换文件依据

w - Windows 样式 ACL (已映射)

x - Unix 样式 ACL (未映射)

实例:

nfsfile /v /ru=-2 /rg=-2 /s /cx e:\testaa

Figure 3添加匿名用户(组)-2进入共享文件夹

此时在通过客户端Unix访问这个共享目录,即可创建文件(夹)了。

问题三:如果遇到通过手工自行修改过ACL的文件夹,在设置了NFS共享后无法在客户端创建文件夹该如何操作?

回答:首先通过问题一与问题二进行一下设置,一般来说只要设置好了NFTS的权限与NFS的权限就可以进行客户端的访问与写入操作了。但是如果有一个要设置NFS共享的文件夹之前被做过多次的ACL的设置导致了ACL的权限出现的错乱,使得共享之后无法创建相应的文件夹与文件,此时有两种比较好的方法:

方法一:在这个已经进行了NFS共享的文件夹下创建一个子文件夹,并且使用nfsfile设置相应的权限映射,以后对这个子文件夹进行操作即可。

方法二:停止之前的NFS共享,创建一个新的文件夹并设置好NFS权限,最后按照问题二中的操作使用nfsfile进行全新设置,然后将原始的文件夹下的内容拷贝(剪切)到新文件夹下即可解决。

问题四:这种映射的原理是什么?

回答:先看一下nfsfile设置好映射权限后的文件夹acl属性

Figure 4左侧是Windows下的文件夹所有者,右侧的显示是Mount到Unix客户端之后的这个文件夹的所有者

可以很清楚的看到相应的-2用户组对应的Unix编号为4294967294(-2转换为32位二进制后再转换成十进制后的呈现),而这样的ACL在Windows 的表现是什么样的?

Figure 5通过PowerShell的Get-Acl命令捕获到的访问列表,因为我并没有设MODE SID,所以上面显示阻止了所有控制权;Owner与Group ID均为4294967294,且有可读权限,Owner同时还具有全部控制权限;Other ID允许读的权限

Figure 6这是一张微绘制的UNIX客户端用户信息与NTFS下ACL信息的对应图

Figure 7 Linux下面的User和UserID的对应关系,其中nfsnobody对应的UserID=65534,他的目的是用作匿名(Anonymous)共享

同样的在一些商用存储中对于这个匿名映射使用的也是-2来实现的,只不过由于使用的字节长度不同,所表现出来的数值是不一样的。

Figure 8一款NatApp的NAS提供的匿名共享所映射过去的匿名用户是UID=65534,实际上是另一种-2(16位带符号运算)

Figure 9 16位带符号的-2

Figure 10十进制的-2

Figure 11 32位带符号的-2

附录:

关于4294967294 用户可以参考MSDN的文章,Who's 4294967294? http://blogs.msdn.com/b/sfu/archive/2007/04/19/who-s-4294967294.aspx

NFS_Account_Mapping_in_Windows_Server_2008_R2.doc 的下载地址 http://download.microsoft.com/download/F/5/0/F5062BD4-4B9D-4D00-ACB6-D94D2E2DABEA/NFS_Account_Mapping_in_Windows_Server_2008_R2.docx

-=EOB=-

Windows Server 2008 R2 添加且制成“NFS服务器”角色后与Unix客户端匿名访问常见问题的更多相关文章

  1. Windows Server 2008 R2 配置Exchange 2010邮件服务器

    windows server 服务器系统搭建邮件服务器一般两种情况: 1:Winmail server 软件 2:Exchange 参考教程:http://www.cnblogs.com/zhongw ...

  2. windows Server 2008 R2 添加新用户时密码不满足密码策略的要求

    ---------------------------本地用户和组---------------------------在计算机 WINSERVER2008R2 上创建用户 lintx 时,出现了以下 ...

  3. Windows server 2008 R2搭建主域控制器 + 辅域控制器

    一:实验模拟环境: Zhuyu公司是一个小公司,随着公司状大,公司越来越重视信息化建设,公司考虑到计算机用户权限集中管理及共享资源同步管理, 需要架设一套AD域控服务器,考虑到成本和日后管理问题,计划 ...

  4. Windows Server 2008 R2 FTP无法从外部访问的解决方法

    在Windows Server 2008 R2中配置好FTP服务器后,可以在本机访问,但是无法从另一台电脑访问.原因就是在于防火墙没有配置好. 1.首先检查服务器管理器中的入站规则,确保已启用FTP服 ...

  5. Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:

    Windows Server 2008 R2中IIS7.5配置完网站权限不足问题的解决办法:常见问题:HTTP 错误 500.0 - Internal Server Error无法显示页面,因为发生内 ...

  6. Windows Server 2008 R2 备份与恢复详细实例

    Windows Server 2008 R2中Windows Server Backup备份与恢复 本实验是在虚拟机操作,因公司的需求,将备份存储到另一台服务器,于是我在现有linux备份服务器搭建了 ...

  7. Windows Server 2008 R2 服务器内存使用率过高几乎耗光

    系统环境: Windows Server 2008 R2 Enterprise 搭建有 web服务器(iis) 和  文件服务   问题描述: Windows Server 2008 R2系统内存耗光 ...

  8. windows server 2008 R2 部署NFS,实现多台服务器间、客户端间的共享目录。

    如何通过Windows Server 2008 R2建立NFS存储服务? 通过Windows Server 2008 R2,我们可以很容易地将其作为一台NFS存储服务器,得到一个NFS软存储,轻松解决 ...

  9. Windows Server 2008 R2常规安全设置及基本安全策略

    这篇文章主要介绍了Windows Web Server 2008 R2服务器简单安全设置,需要的朋友可以参考下 用的腾讯云最早选购的时候悲催的只有Windows Server 2008 R2的系统,原 ...

随机推荐

  1. PHP的数组排序函数

    <?php class order{ /** * * 数组排序 * @param array $arr 例如: * array ( array ( 'deskId' => '460646' ...

  2. 关于iOS后台问题( 一 )(ios后台刷新,后台定位,后台下载,真后台)

    关于iOS的后台,以下引用一些文段进行一下脑补,请同学们大致看一下,有个基础,原文出处 -------------------------------------------------------- ...

  3. 安装OS X虚拟机错误vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123

    新建一个虚拟机, 选择客户机操作系统为Apple MacOS X 10.10, 其余参数可以默认. 注意建好之后不要急着打开客户机, 因为直接打开你会发现新建的客户机将会无法启动. 仔细阅读Mac O ...

  4. 树莓派pppoe

    连接的网络是移动(铁通)的宽带,不同的宽带的dns需要修改. 1.首先安装pppoe包 apt-get install pppoe 2.然后,复制conf文件/etc/ppp/pppoe.conf: ...

  5. final 140字评论

    按照演讲顺序 1.约跑app         个人感觉约跑现在做的已经很不错了,要是能添加地图就更好了. 2.礼物挑选         给人感觉在一定的时间做到这个程度,很不错很好,讲的声音有点小. ...

  6. shared_ptr

    省去对象指针的显示delete typedef tr1::shared_ptr<int> IntPtr; IntPtr fun() { IntPtr p = new int(3); ret ...

  7. C#_技巧:真伪随机数

    使用 Random 产生随机数.(这是一种伪随机数,需要seed,同一个seed后,采用某种算法产生的数字序列都是一样的) 两种写法 错误 for(int i=0;i<100;i++) {    ...

  8. Excel VBA 函数

    Instr函数 一. 定义 InStr 函数 返回 Variant (Long),指定一字符串在另一字符串中最先出现的位置. InStr([start, ]string1, string2[, com ...

  9. shell简单用法笔记(shell中数值运算)二

    shell中变量值,如果不手动指定类型,默认都是字符串类型: 例如: a= b= c=$a+#b echo $c 结果会输出:123+456 shell中,如果要进行数值运算,可以通过一下方法: 方法 ...

  10. 智能路由器操作系统OpenWrt

    小米路由器的“MiWiFi”又让路由器成了关键词,每台智能路由器的系统是该款产品的亮点之一,其系统肯定有不少“好玩”的地方.为自己的智能路由器量身打造系统,并且纷纷开发了适合智能手机.平板电脑等使用的 ...