Windows

如何獲取 cifs 掛載文件夾上的文件元數據?

  • October 8, 2018

在我們公司,我們有一個共享的 Windows 文件夾。如果我從 Windows 訪問它,我可以彈出文件的屬性菜單並找到它的元數據:創建它的人、上次訪問時間等等。

在 linux 上,我使用mount -t cifs. 我想編寫一個腳本來獲取有關文件夾使用情況的一些統計資訊。

有沒有辦法從 linux 訪問這個元數據?

UPD:我不能使用getfacl,statls -la用於我的任務,因為所有這些都只給了我安裝此文件夾的本地 linux 使用者名,而不是來自 Windows 域伺服器的名稱。

UPD2:我使用命令安裝共享:sudo mount -t cifs //data/Shared /mnt/Shared -o uid=1000,gid=1000,user=<my_windows_account_name>,dom=<my_domain>,pass=<my_windows_password>,其中 uid=1000 和 gid=1000 是我的 linux 帳戶的 uid 和 gid。

你正在使用

mount -t cifs //data/Shared /mnt/Shared -o uid=1000,gid=1000,user=<my_windows_account_name>,dom=<my_domain>,pass=

這告訴本地系統有兩個方面:

  1. 使用指定為元組 { 使用者、域、密碼 } 的憑據向遠端伺服器進行身份驗證
  2. 偽造對遠端共享的所有訪問/來自遠端共享的所有訪問,就好像它們來自 UID 1000 和 GID 1000 的使用者帳戶一樣

您需要繼續使用 #1,儘管我強烈建議您將使用者憑據移動到一個安全文件中,該文件只能由 root 和代表帳戶憑據的本地使用者讀取。詳情見man mount.cifs_

# As root...
cat >/usr/local/etc/Shared.cifs <<'X'
username=my_windows_account_name
domain=my_domain
password=my_windows_password
X
chmod u=rw,go= /usr/local/etc/Shared.cifs
chown my_unix_account_name:root /usr/local/etc/Shared.cifs

# Then mount becomes
mount -t cifs //data/Shared /mnt/Shared -o credentials=/usr/local/etc/Share.cifs,noperm

但是,您需要停止使用 #2,而是讓您的本地客戶了解 AD 上下文中使用的名稱。這對這裡來說太多了,但要領是這些

  • 安裝realmdsamba依賴
  • 確保您的 DNS 伺服器是 AD 域伺服器(或本地等效伺服器)
  • 執行realm discover以查找並檢查您是否可以看到正確的 AD 域
  • 執行realm join {domain}加入域

您現在可能想要拒絕其他 AD 使用者登錄到您的本地系統。要查看的命令是 和 的變體realm deny -allrealm permit --groups 'domain admins'以及AllowUsersAllowGroupsin /etc/ssh/sshd_config。如果您不是域管理員,則需要相應地進行更改。手冊頁非常好。

您可以使用以下命令測試連接是否成功

net ads testjoin
getent password my_windows_account_name    # As above
getent group "domain admins"               # An example group that will exist

引用自:https://unix.stackexchange.com/questions/473502