Active-Directory

Active Directory + NFS:為什麼域使用者的 uidNumber、gidNumber 在 Windows 中不通過“id”命令顯示?

  • July 26, 2021

我正在將 NFS v3 共享(ZFS 數據集)從域使用者擁有的 Solaris 文件伺服器連接到 Windows 電腦,但這個概念基本上應該適用於任何 POSIX 樣式的伺服器。我希望找到一種直覺的方式讓權限跨平台持久化,這也可以應用於使用同一客戶端的多個使用者。

mountSolaris 伺服器在使用命令 in裝載數據集時無法辨識使用者身份cmd,儘管數據集被設置為伺服器上存在的同一域使用者,但使用 AD LDAPuidNumbergidNumber.

我已經看到了一種uid/gid可以在系統資料庫中設置的解決方案,允許 NFS 共享作為具有一個使用者身份的匿名共享安裝在 Windows 中。這不僅不方便,而且只適用於一個使用者。

我正在使用 MSYS2(例如“Git Bash”)並註意到該命令在’s 屬性選項卡中的集合id附近沒有顯示任何內容。我知道 Windows 使用s 來辨識使用者和設備,這與 Unix id 系統完全不同——但是從哪裡得到這個數字呢?uidNumber/gidNumber``ADUC``SID``MSYS2

我希望通過闡明這一點,它可以幫助我找到一些設置使用者屬性的方法,這樣mount命令 incmd將以我的 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)

顯然,這些是非常不同的數字。顯示使用者的 Unix 不是更有意義uid/gid嗎?

從哪裡MSYS2得到這些看起來很奇怪的數字,有沒有辦法uid/gid在命令行中使用使用者指定的 AD 作為身份?

uidNumber好吧,這很容易——因為我的使用者gidNumber已經設置好了,我所要做的就是在客戶端上啟用 AD 身份映射。

我打開了一個管理員命令提示符,啟動了 powershell(版本 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 掛載的人來說,這可能看起來不直覺,其中只有 root(即 sudo)有權呼叫mount命令。

引用自:https://serverfault.com/questions/1070276