如何獲取 cifs 掛載文件夾上的文件元數據?
在我們公司,我們有一個共享的 Windows 文件夾。如果我從 Windows 訪問它,我可以彈出文件的屬性菜單並找到它的元數據:創建它的人、上次訪問時間等等。
在 linux 上,我使用
mount -t cifs
. 我想編寫一個腳本來獲取有關文件夾使用情況的一些統計資訊。有沒有辦法從 linux 訪問這個元數據?
UPD:我不能使用
getfacl
,stat
或ls -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=
這告訴本地系統有兩個方面:
- 使用指定為元組 { 使用者、域、密碼 } 的憑據向遠端伺服器進行身份驗證
- 偽造對遠端共享的所有訪問/來自遠端共享的所有訪問,就好像它們來自 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 上下文中使用的名稱。這對這裡來說太多了,但要領是這些
- 安裝
realmd
和samba
依賴- 確保您的 DNS 伺服器是 AD 域伺服器(或本地等效伺服器)
- 執行
realm discover
以查找並檢查您是否可以看到正確的 AD 域- 執行
realm join {domain}
加入域您現在可能想要拒絕其他 AD 使用者登錄到您的本地系統。要查看的命令是 和 的變體
realm deny -all
,realm permit --groups 'domain admins'
以及AllowUsers
和AllowGroups
in/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