我正在将 NFS v3 共享(ZFS 数据集)从域用户拥有的 Solaris 文件服务器连接到 Windows 计算机,但该概念应该适用于基本上任何 POSIX 样式的服务器。我希望找到一种直观的方法让权限在各个平台之间保持持久性,这也可以适用于使用同一客户端的多个用户。
mount
在使用命令挂载数据集时,Solaris 服务器无法识别用户的身份cmd
,尽管数据集被设置为服务器上存在的同一域用户,但使用 AD LDAPuidNumber
和进行识别gidNumber
。
我看到过一种解决方案,uid/gid
可以在注册表中设置,允许 NFS 共享以一个用户身份作为匿名共享安装在 Windows 中。这不仅不方便,而且仅适用于一个用户。
我使用的是 MSYS2(例如“Git Bash”),并注意到该id
命令没有显示属性选项卡uidNumber/gidNumber
中设置的任何内容ADUC
。我知道 Windows 使用SID
s 来识别用户和设备,这与 Unix id 系统非常不同 - 但这个数字是MSYS2
从哪里获得的?
我希望通过阐明这一点,它可以帮助我找到某种设置用户属性的方法,以便命令mount
能够cmd
以我的 Solaris 服务器能够理解的方式传达我用户的身份。
下面是我所说的一个例子:
在 中ADUC
,让我们回顾一下uid/gid
的Administrator
:
Active Directory Users and Computers
----------------------------------------------
[Menu] View --> Advanced Features -->
+ [Domain] Users --> Administrator --> Properties -->
+ [Tabs] Attribute Editor -->
+ [Tables] uidNumber, gidNumber
uidNumber: 2500
gidNumber: 2512
好的,那我们来Administrator
检查id
一下MSYS2
:
└─ ▶ id administrator
uid=1049076(Administrator) gid=1049089(Domain Users) groups=1049089(Domain Users)
uid/gid
显然,这些数字有很大差异。显示用户的 Unix 不是更有意义吗?
这些看起来奇怪的数字从何MSYS2
而来,有没有办法uid/gid
在命令行中利用用户的 AD 指定身份?
答案1
嗯,这很容易 - 因为我的用户已经uidNumber
设置gidNumber
好了,我要做的就是在客户端上启用 AD 身份映射。
我打开了管理员命令提示符,启动了 powershell (ver 7),然后运行 cmdlet:
PS C:\Windows\System32> Set-NfsMappingStore -EnableADLookup $True -ADDomainName "example.com"
为了确认,我检索了设置:
PS C:\Windows\System32> Get-NfsMappingStore
UNMServer :
UNMLookupEnabled : False
ADDomain : example.com
ADLookupEnabled : True
LdapServer :
LdapNamingContext :
LdapLookupEnabled : False
PasswdFileLookupEnabled : False
现在,关键时刻——挂载用户的 NFS 共享(这是 ConEmu 中的用户级 cmd shell):
happyuser@WINSLAVE C:\Users\happyuser
$ mount \\solarisbeast\mnt\hallofzmirrors\trough\happyuser\all-pascal-projects n:
到目前为止看起来不错,不需要任何身份设置(无论如何,使用 NFS v3 是不可能的,但仍然......)
留下了一些痕迹...
happyuser@WINSLAVE N:\
$ echo 'this is from winslave' > 'test-from-winslave.txt'
然后,检查服务器上文件创建者的身份:
admin@solarisbeast:/mnt/hallofzmirrors/trough/happyuser/all-pascal-projects% ls -la
total 88
drwxr-xr-x 6 happyuser DomainUsers 8 Jul 22 22:19 .
drwxr-x--- 35 happyuser DomainUsers 56 Jul 21 11:37 ..
drwxr-xr-x 2 happyuser DomainUsers 3 Jul 21 11:37 .$EXTEND
-rw-r--r-- 1 happyuser DomainUsers 25 Jul 21 13:04 test-from-bloatedwharfrat.txt
-rwxr-xr-x 1 happyuser DomainUsers 25 Jul 22 22:02 test-from-winslave.txt
身份方面看起来不错。希望它稳定!
在 Windows 中从 Unix 服务器挂载 NFS 导出
更新:我很快提到了这一点,但对于任何错过它的人来说,NFS 挂载应该以拥有共享权限的用户身份在非提升的 cmd 中执行。对于更熟悉 Posix 系统上的 NFS 挂载的人来说,这似乎不直观,因为在 Posix 系统中,只有 root(即 sudo)才有权调用mount
命令。