Active Directory + NFS:為什麼域使用者的 uidNumber、gidNumber 在 Windows 中不通過“id”命令顯示?
我正在將 NFS v3 共享(ZFS 數據集)從域使用者擁有的 Solaris 文件伺服器連接到 Windows 電腦,但這個概念基本上應該適用於任何 POSIX 樣式的伺服器。我希望找到一種直覺的方式讓權限跨平台持久化,這也可以應用於使用同一客戶端的多個使用者。
mount
Solaris 伺服器在使用命令 in裝載數據集時無法辨識使用者身份cmd
,儘管數據集被設置為伺服器上存在的同一域使用者,但使用 AD LDAPuidNumber
和gidNumber
.我已經看到了一種
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
命令。