作者 主題: Windows client無法使用ACL權限進入Linux server的NFS+Kerbeors目錄  (閱讀 5147 次)

0 會員 與 1 訪客 正在閱讀本文。

zhaorongyi

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
請教一個問題,
我有4台電腦如下:
--
第1台是Windows Server 2012, 用來當作AD server(DC)
第2台是Linux Fedora Server, 用來當作Storage server
第3台是Linux Fedora Workstation, 用來當作Client端.
第4台也是Windows Server 2012, 但用來當作Client端.
--
我照著網路上的教學,
1. 先架設DC server, 4台電腦都加入DOMAIN.

2. Linux Fedora Server安裝NFS server+Kerbeors的相關程式(SAMBA WINBIND NFS KRB5等等), 設定要被mount的目錄權限是770+, acl權限是AD的user才能rwx.

3. Linux Fedora Workstation安裝NFS client+Kerbeors的相關程式(SAMBA WINBIND NFS KRB5等等), 接著匯入AD產生的keytab讓Linux Fedora Server和Workstation都有principal

最後在Fedora Workstation上測試
mount -t nfs -o sec=krb5  Fedora_Server:/nfs/test /mnt/nfstest
結果mount成功而且access也有照著acl設定只有指定的ad的user才能rwx
也就是說NFS+Kerberos的存取設定是成功的.

但是相同的環境組態下
我把client端換成了第4台電腦Windows Server 2012, 也安裝了NFS client feature了.
使用AD user登入電腦並確認過klist有取得AD給的principal
然後下指令mount -o sec=krb5  Fedora_Server:/nfs/test x:
有出現
--
x: is now successfully connected to Fedora_Workstation:/nfs/test
The command completed successfully.
--
但是我想進入x:時, 卻出現了 Access is denied.
我使用檔案總管查看x:的內容
只有出現NFS Attributes, File permissions 是Linux Fedora Server的目錄權限770沒錯.
猜得沒錯似乎應該要有出現NFS Mount Options的內容才是能夠正常存取
但是因為用Linux client是可以正常存取
所以想請教 Linux Fedora Server 還需要做甚麼特殊的設定才可以讓Windows client在mount完後可以使用acl權限來存取???
« 上次編輯: 2016-10-31 17:22 由 zhaorongyi »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17292
    • 檢視個人資料
    • http://www.study-area.org
抱歉我沒有實務上的經驗, 但感覺上是 windows NFS client 的問題...
不知道windows 在處理 NFS 內容時, user id 的 mapping 是怎麼處理的? 或許是個研究方向...

zhaorongyi

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
我有試過將Synology NAS加入DOMAIN(就當作是第5台電腦好了)
設定NFS和Kerberos後
可以被Windows client在mount完後進入該資料夾(也可以正常rw)
所以Windows client應該只是單純mount即可

而且奇怪的是登入Synology NAS查看NFS share folder的權限是000
但是被Windows client mount後用檔案總管看NFS Attributes的File permissions 竟然是777.
而且有出現NFS Mount Options

我試過把Fedora Server的NFS目錄權限改為777+的話(也就是Others從0改成7)
NFS Mount Options 才會出現
但我的理解是Linux目錄權限的Others為0+的話 就會以ACL作為預設的使用者/群組
(但是Windows似乎是認定Others為7或5或3才會讓目前的AD使用者進入NFS目錄)

所以想問問看要讓Windows client去mount 770+的目錄是否有甚麼特別的設定?
(該不會是需要修改NFS server mount的source code才能辦到?)
« 上次編輯: 2016-10-27 18:22 由 zhaorongyi »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17292
    • 檢視個人資料
    • http://www.study-area.org
如果是771呢?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17292
    • 檢視個人資料
    • http://www.study-area.org
如果是771呢?
看起來是沒用的, 不過我在w2012r2測試不能用 -o sec=krb5 的選項...
不帶-o可以掛載, 但 nfs shared 目錄的 others 需要同時有  rx 才行。

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17292
    • 檢視個人資料
    • http://www.study-area.org
這篇是解決id對應的問題, 但我沒實際設定過:
https://technet.microsoft.com/en-us/library/bb463218.aspx

zhaorongyi

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
如果是771呢?
看起來是沒用的, 不過我在w2012r2測試不能用 -o sec=krb5 的選項...
不帶-o可以掛載, 但 nfs shared 目錄的 others 需要同時有  rx 才行。
Windows的NFS mount指令跟Linux不一樣
其實不用帶-o sec=krb5也會自動判斷有沒有AD給的kerberos principal
現在問題卡在Linux端需要ACL所以不能把others設定成0以外的權限
但是Windows非要看到others是rx wx rwx才能存取
難道真的非得要修改Linux端NFS server 的source code才能辦到???

dark

  • 俺是博士!
  • *****
  • 文章數: 1481
    • 檢視個人資料
不知修改 source code 難度 , 升級版本時是否困難 ...

若依您敘述 ..
小弟會改採取再加兩台 linux 電腦 , 當作 storage 的 interface (auto mount)
一台供 M$ , 一台供 unixlike 當 client 連現介面

未必須要實體主機 (不知 chroot 能否達到)

不過若在公司環境
實體可以增加 interface
不失為高效配置

zhaorongyi

  • 可愛的小學生
  • *
  • 文章數: 4
    • 檢視個人資料
目前的配置就是一台AD一台File server...
Google搜尋相關問題還沒找到解決方法
大部分的教學都是Linux client去mount
不然就是一開始就要求 -R 777

另外發現QNAP也是會在Windows client mount成功後讓client看到權限是777
真不知道到底是如何辦到??

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17292
    • 檢視個人資料
    • http://www.study-area.org
爲何不用 CIFS ?

dark

  • 俺是博士!
  • *****
  • 文章數: 1481
    • 檢視個人資料
有 MS 用 cifs 最方便 ...
有時要變更沒分享的資料夾
就得用上 sshfs ... (看影片一樣不 lag)

沒用過 qnap
不過那是特別設計過的 ... 看不到他的 source code

若站在 "使用上應用" 的角度
您的需求若是認證後 , 大家可以隨意寫入
那搭配 cifs 即可 ..

將 home 透過 cifs 掛到本機 home1
nfs 就操作 home1

若有個別寫入權限
那在多個如 ldap , nis 當中介 , 放棄本機帳號方式
這時你可選擇利用 auto 機制掛 cifs 區 (但可能需偷改 mount)
或比對 samba 與 ypserver 間帳號差異 , 另寫新增帳號程式 (改變 useradd 習慣)

想法歸想法 ... 實現過程要克服不少