本文介紹在Linux作業系統中,如何以AD域身份掛載SMB檔案系統。以及掛載成功後,如何以AD域身份訪問SMB協議檔案系統,查看和編輯檔案或目錄的ACL。
前提條件
-
SMB檔案系統掛載點已接入AD域。具體操作,請參見將SMB檔案系統掛載點接入AD域。
背景資訊
在SMB檔案系統掛載點接入AD域前,僅支援以匿名使用者身份掛載並使用SMB檔案系統。在SMB檔案系統掛載點接入AD域後,您可以設定是否繼續允許匿名使用者身份掛載訪問。
-
如果繼續允許匿名訪問檔案系統,裝置可以通過Kerberos認證以域身份訪問檔案系統,也可以通過NTLM認證以Everyone身份訪問檔案系統。
-
如果已設定為不允許匿名訪問檔案系統,該檔案系統將只允許通過Kerberos認證協議的Linux用戶端以AD域使用者身份進行掛載。
以下步驟以Ubuntu和CentOS為例介紹如何以AD域身份掛載訪問SMB檔案系統。
方式一:Linux用戶端加入AD域並掛載SMB檔案系統
-
登入Linux用戶端。
-
Linux用戶端加入AD域。
-
-
執行id命令,查詢AD域使用者身份狀態。
id testuser@example-company.com如果回顯包含如下類似資訊,說明AD域使用者身份能被正常識別。
[user1@mycentos root]$ id usera1@example-company.com uid=371801107(usera1@example-company.com) gid=371800513(domain users@example-company.com) groups=371800513(domain users@example-company.com) -
添加AD域使用者登入許可權。
-
授予指定使用者登入Linux用戶端的許可權。
sudo realm permit usera1@example-company.com sudo realm permit userb1@example-company.com userb2@example-company.com -
授予指定使用者組登入Linux用戶端的許可權。
sudo realm permit -g 'Security Users' sudo realm permit -g 'Domain Users' 'Domain Admins' -
授予所有使用者登入Linux用戶端的許可權。
sudo realm permit --all -
授予禁止所有使用者登入Linux用戶端的許可權。
sudo realm deny --all
-
-
為AD域使用者添加sudo許可權。
執行以下命令開啟sudo設定檔,並根據業務情境配置sudo許可權。
sudo vim /etc/sudoers.d/domain_admins-
為指定使用者添加sudo許可權。
usera1@example-company.com ALL=(ALL) ALL userb2@example-company.com ALL=(ALL) ALL -
為指定使用者組添加sudo許可權。
%admingroupc1@example-company.com ALL=(ALL) ALL -
為指定多word組成組名的使用者組添加sudo許可權。
%domain\ admins@example-company.com ALL=(ALL) ALL
-
-
配置SSH登入項。
-
開啟/etc/ssh/sshd_config設定檔,修改如下登入配置項:
PasswordAuthentication yes -
執行以下命令重啟SSHD服務。
-
CentOS
service sshd restart -
Ubuntu
service ssh restart
-
-
-
以AD域身份登入Linux用戶端。
ssh localhost -l usera1@example-company.com如果回顯包含如下類似資訊,說明已使用AD域身份登入Linux用戶端。
[user1@mycentos root]$ ssh localhost -l usera1@example-company.com The authenticity of host 'localhost (127.0.0.1)' can't be established. ECDSA key fingerprint is SHA256:t/sEr63muG4UvBiAODXW9cHuMDBUlWUXO3cQ4xxmN78. Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. usera1@example-company.com@localhost's password: Welcome to Alibaba Cloud Elastic Compute Service ! Activate the web console with: systemctl enable --now cockpit.socket -
掛載SMB檔案系統。
-
安裝掛載工具包。
-
Ubuntu
sudo apt-get install keyutils cifs-utils -
CentOS
sudo yum install keyutils cifs-utils
-
-
查詢keytab資訊。
執行id命令查看登入後的uid、gid資訊。
[usera1@example-company.com@mycentos ~]$ klist Ticket cache: KCM:371801107:64031 Default principal: usera1@EXAMPLE-COMPANY.COM Valid starting Expires Service principal 08/31/2021 07:56:42 08/31/2021 17:56:42 krbtgt/EXAMPLE-COMPANY.COM@EXAMPLE-COMPANY.COM renew until 09/07/2021 07:56:42 [usera1@example-company.com@mycentos ~]$ id uid=371801107(usera1@example-company.com) gid=371800513(domain users@example-company.com) groups=371800513(domain users@example-company.com),371801110(groupa@example-company.com) -
執行以下命令掛載檔案系統。
sudo mount -t cifs //205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare /mnt -o vers=2.1,sec=krb5,cruid=371801107,uid=371801107,gid=371800513 --verbose其中,
205dee4****-uub48.us-west-1.nas.aliyuncs.com為檔案系統掛載點地址,請根據實際值替換。說明如果控制台SMB ACL選項中選擇了啟用傳輸加密,則需要使用vers=3.0掛載。
-
-
添加自動掛載配置。
掛載完成後,添加自動掛載配置。重啟Linux用戶端,將自動完成掛載。
-
在設定檔/etc/auto.master中,添加如下選項:
/share /etc/auto.cifs --timeout=30 --ghost -
按如下樣本修改設定檔/etc/auto.cifs內容:
* -fstype=cifs,vers=2.1,sec=krb5,cruid=${UID},uid=${UID},gid=${GID},file_mode=0700,dir_mode=0700 ://205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/&重要參數欄位說明如下,請根據實際值替換。
-
cruid和uid:為本地usera1使用者的ID。 -
gid:為本地usera1使用者的group。 -
205dee4****-uub48.us-west-1.nas.aliyuncs.com:為檔案系統掛載點地址。您可以在檔案儲存體控制台檔案系統列表頁面,單擊目標檔案系統前的
表徵圖,在掛載點列表的掛載點地址列,將滑鼠置於
表徵圖,擷取掛載點地址。
-
-
重啟autofs服務。
systemctl restart autofs.service -
確認自動掛載配置結果。
假設建立了//205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/usera1目錄,使用權限設定為使用者usera1擁有所有許可權。
在AD域使用者登入後,執行
ls /share/usera1命令,就能夠查看到SMB檔案系統目錄usera1下的內容即配置成功。
-
方式二:Linux用戶端串連AD伺服器並掛載SMB檔案系統
-
登入Linux用戶端。
-
串連AD伺服器。
-
-
以本機使用者身份儲存SMB檔案系統掛載點的票據資訊。
-
建立本機使用者並記錄建立使用者的UID和GID。
useradd usera1 su - usera1 id[root@iZrj9gqbtl7kefeqxxx ~]# useradd usera1 [root@iZrj9gqbtl7kefeqxxx ~]# su - usera1 [usera1@iZrj9gqbtl7kefeqxxx ~]$ id uid=1004(usera1) gid=1004(usera1) groups=1004(usera1) -
使用建立的本機使用者儲存SMB檔案系統掛載點的票據資訊。
kinit administrator@EXAMPLE-COMPANY.COM klistuser1@iZrj9gqbtl7xxx :~$ kinit administrator@EXAMPLE-COMPANY.COM Password for administrator@EXAMPLE-COMPANY.COM: user1@iZrj9gqbtl7xxx :~$ klist Ticket cache: FILE:/tmp/krb5cc_1000 Default principal: administrator@EXAMPLE-COMPANY.COM Valid starting Expires Service principal 09/08/2021 05:47:53 09/08/2021 15:47:53 krbtgt/EXAMPLE-COMPANY.COM@EXAMPLE-COMPANY.COM renew until 09/09/2021 05:47:49 user1@iZrj9gqbtl7xxx :~$
-
-
掛載SMB檔案系統。
-
安裝掛載工具包。
-
Ubuntu
sudo apt-get install keyutils cifs-utils -
CentOS
sudo yum install keyutils cifs-utils
-
-
執行以下命令掛載檔案系統。
sudo mount -t cifs //205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare /mnt -o vers=2.1,sec=krb5,cruid=1004,uid=1004,gid=1004 --verbose其中,
205dee4****-uub48.us-west-1.nas.aliyuncs.com為檔案系統掛載點地址,請根據實際值替換。說明如果控制台SMB ACL選項中選擇了啟用傳輸加密,則需要使用vers=3.0掛載。
-
-
添加自動掛載配置。
掛載完成後,添加自動掛載配置。重啟Linux用戶端,將自動完成掛載。
-
在設定檔/etc/auto.master中,添加如下選項:
/share /etc/auto.cifs --timeout=30 --ghost -
按如下樣本修改設定檔/etc/auto.cifs內容:
* -fstype=cifs,vers=2.1,sec=krb5,cruid=${UID},uid=${UID},gid=${GID},file_mode=0700,dir_mode=0700 ://205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/&重要參數欄位說明如下,請根據實際值替換。
-
cruid和uid:為本地usera1使用者的ID。 -
gid:為本地usera1使用者的group。 -
205dee4****-uub48.us-west-1.nas.aliyuncs.com:為檔案系統掛載點地址。您可以在檔案儲存體控制台檔案系統列表頁面,單擊目標檔案系統前的
表徵圖,在掛載點列表的掛載點地址列,將滑鼠置於
表徵圖,擷取掛載點地址。
-
-
重啟autofs服務。
systemctl restart autofs.service -
確認自動掛載配置結果。
假設建立了//205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/usera1目錄,使用權限設定為使用者usera1擁有所有許可權。
在AD域使用者登入後,執行
ls /share/usera1命令,就能夠查看到SMB檔案系統目錄usera1下的內容即配置成功。
-
使用cifsacl工具管理SMB檔案系統ACL
您可以使用getcifsacl和setcifsacl命令管理SMB檔案系統ACL。樣本如下:
getcifsacl usera1/
usera1@example-company.com@myubuntu:/mnt$ getcifsacl usera1/
REVISION:0x1
CONTROL:0x8404
OWNER:S-1-5-21-2849381876-3817135681-4198507328-1107
GROUP:S-1-5-21-2849381876-3817135681-4198507328-513
ACL:S-1-5-21-2849381876-3817135681-4198507328-1107:ALLOWED/I/FULL
ACL:S-1-3-0:ALLOWED/OI|CI|IO|I/FULL
ACL:S-1-5-18:ALLOWED/OI|CI|I/FULL
ACL:S-1-5-32-544:ALLOWED/OI|CI|I/FULL
ACL:S-1-5-21-3076751034-3769290925-1520581464-512:ALLOWED/OI|CI|I/FULL
sudo setcifsacl -a "ACL:S-1-5-21-3076751034-3769290925-1520581464-513:ALLOWED/OI|CI|I/FULL" usera1/
usera1@example-company.com@myubuntu:/mnt$ sudo setcifsacl -a "ACL:S-1-5-21-3076751034-3769290925-1520581464-513:ALLOWED/OI|CI|I/FULL" usera1/
usera1@example-company.com@myubuntu:/mnt$ getcifsacl usera1
REVISION:0x1
CONTROL:0x8004
OWNER:S-1-5-21-2849381876-3817135681-4198507328-1107
GROUP:S-1-5-21-2849381876-3817135681-4198507328-513
ACL:S-1-5-21-2849381876-3817135681-4198507328-1107:ALLOWED/I/FULL
ACL:S-1-3-0:ALLOWED/OI|CI|IO|I/FULL
ACL:S-1-5-18:ALLOWED/OI|CI|I/FULL
ACL:S-1-5-32-544:ALLOWED/OI|CI|I/FULL
ACL:S-1-5-21-3076751034-3769290925-1520581464-512:ALLOWED/OI|CI|I/FULL
ACL:S-1-5-21-3076751034-3769290925-1520581464-513:ALLOWED/OI|CI|I/FULL
usera1@example-company.com@myubuntu:/mnt$