全部產品
Search
文件中心

File Storage NAS:Linux用戶端以AD域使用者身份掛載並使用SMB檔案系統

更新時間:Jul 06, 2024

本文介紹在Linux作業系統中,如何以AD域身份掛載SMB檔案系統。以及掛載成功後,如何以AD域身份訪問SMB協議檔案系統,查看和編輯檔案或目錄的ACL。

前提條件

背景資訊

在SMB檔案系統掛載點接入AD域前,僅支援以匿名使用者身份掛載並使用SMB檔案系統。在SMB檔案系統掛載點接入AD域後,您可以設定是否繼續允許匿名使用者身份掛載訪問。

  • 如果繼續允許匿名訪問檔案系統,裝置可以通過Kerberos認證以域身份訪問檔案系統,也可以通過NTLM認證以Everyone身份訪問檔案系統。

  • 如果已設定為不允許匿名訪問檔案系統,該檔案系統將只允許通過Kerberos認證協議的Linux用戶端以AD域使用者身份進行掛載。

以下步驟以Ubuntu和CentOS為例介紹如何以AD域身份掛載訪問SMB檔案系統。

方式一:Linux用戶端加入AD域並掛載SMB檔案系統

  1. 登入Linux用戶端。

  2. Linux用戶端加入AD域。

    • Ubuntu作業系統

      1. 安裝AD伺服器配置包。

        sudo apt-get update
        sudo apt-get -y install realmd libnss-sss libpam-sss sssd sssd-tools adcli samba-common-bin oddjob oddjob-mkhomedir packagekit krb5-user
      2. 配置Linux用戶端在AD域的機器名。

        sudo hostnamectl set-hostname myubuntu.example-company.com

        其中,example-company.com為AD網域名稱稱,請您根據實際業務情境配置。

        配置完成後,執行hostnamectl命令檢查已配置的用戶端機器名稱。90

      3. 配置DNS。

        1. 執行以下命令停止DNS的自動更新。

          sudo systemctl disable systemd-resolved
          sudo systemctl stop systemd-resolved

        2. 將AD伺服器IP寫入/etc/resolv.conf中。DNS

        3. 執行ping命令,pingAD伺服器名稱驗證連通性。3

      4. 尋找AD域。

        realm discover <AD domain>

        10

      5. Linux用戶端加入AD域。

        sudo kinit Administrator@EXAMPLE-COMPANY.COM
        sudo realm join -U Administrator example-company.com

        執行realm list命令,如果回顯包含如下類似資訊,說明Linux用戶端已加入AD域。11

      6. 配置以AD域使用者登入時的home目錄。

        1. 配置home目錄。

          sudo bash -c "cat > /usr/share/pam-configs/mkhomedir" <<EOF
          Name: activate mkhomedir
          Default: yes
          Priority: 900
          Session-Type: Additional
          Session:
                  required                        pam_mkhomedir.so umask=0022 skel=/etc/skel
          EOF

        2. 執行以下命令啟用該配置。

          pam-auth-update

        3. 啟用後,通過上下鍵移動游標,並使用空格鍵增加選項標記*,請確保activate mkhomedir選項前標記為*,然後使用Tab鍵將游標移動至Ok,即完成設定。111

      7. 配置Linux sssd服務。

        1. 在設定檔/etc/sssd/sssd.conf中,寫入krb5_ccname_template=FILE:%d/krb5cc_%U2

        2. 執行以下命令重啟sssd服務並確認服務狀態。

          sudo systemctl restart sssd
          sudo systemctl status sssd

          如果回顯包含如下類似資訊,說明Linux sssd服務已配置成功。21

    • CentOS作業系統

      1. 安裝AD伺服器配置包。

        sudo yum update
        sudo yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python-utils -y
      2. 配置Linux用戶端在AD域的機器名。

        sudo hostnamectl set-hostname mycentos.example-company.com

        其中,example-company.com為AD網域名稱稱,請您根據實際業務情境配置。

        配置完成後,執行hostnamectl命令檢查已配置的用戶端機器名稱。Linux AD掛載

      3. 配置DNS。

        將AD伺服器IP寫入/etc/resolv.conf中,刪除預設的DNS伺服器。DNS執行ping命令,pingAD伺服器名稱驗證連通性。3

      4. 配置Kerberos。

        請在設定檔/etc/krb5.conf中添加如下內容。

            default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
            default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
            permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

        15

      5. 尋找AD域。

        realm discover example-company.com

        AD掛載Linux002

      6. Linux用戶端加入AD域。

        sudo realm join -U Administrator example-company.com

        執行realm list命令,如果回顯包含如下類似資訊,說明Linux用戶端已加入AD域。AD掛載Linux003

  3. 執行id命令,查詢AD域使用者身份狀態。

    id testuser@example-company.com

    如果回顯包含如下類似資訊,說明AD域使用者身份能被正常識別。22

  4. 添加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
  5. 為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
  6. 配置SSH登入項。

    1. 開啟/etc/ssh/sshd_config設定檔,修改如下登入配置項:

      PasswordAuthentication yes
    2. 執行以下命令重啟SSHD服務。

      • CentOS

        service sshd restart
      • Ubuntu

        service ssh restart
  7. 以AD域身份登入Linux用戶端。

    ssh localhost -l usera1@example-company.com

    如果回顯包含如下類似資訊,說明已使用AD域身份登入Linux用戶端。27

  8. 掛載SMB檔案系統。

    1. 安裝掛載工具包。

      • Ubuntu

        sudo apt-get install keyutils cifs-utils
      • CentOS

        sudo yum install keyutils cifs-utils
    2. 查詢keytab資訊。

      執行id命令查看登入後的uid、gid資訊。20

    3. 執行以下命令掛載檔案系統。

      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掛載。

  9. 添加自動掛載配置。

    掛載完成後,添加自動掛載配置。重啟Linux用戶端,將自動完成掛載。

    1. 在設定檔/etc/auto.master中,添加如下選項:

      /share    /etc/auto.cifs    --timeout=30 --ghost
    2. 按如下樣本修改設定檔/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/&

      重要參數欄位說明如下,請根據實際值替換。

      • cruiduid:為本地usera1使用者的ID。

      • gid:為本地usera1使用者的group。

      • 205dee4****-uub48.us-west-1.nas.aliyuncs.com:為檔案系統掛載點地址。

        您可以在檔案儲存體控制台檔案系統列表頁面,單擊目標檔案系統前的image..png表徵圖,在掛載點列表的掛載點地址列,將滑鼠置於掛載點地址.png表徵圖,擷取掛載點地址。

    3. 重啟autofs服務。

      systemctl restart autofs.service
    4. 確認自動掛載配置結果。

      假設建立了//205dee4****-uub48.us-west-1.nas.aliyuncs.com/myshare/usera1目錄,使用權限設定為使用者usera1擁有所有許可權。

      在AD域使用者登入後,執行ls /share/usera1命令,就能夠查看到SMB檔案系統目錄usera1下的內容即配置成功。

方式二:Linux用戶端串連AD伺服器並掛載SMB檔案系統

  1. 登入Linux用戶端。

  2. 串連AD伺服器。

    • Ubuntu作業系統

      1. 安裝AD伺服器配置包。

        sudo apt-get -y install keyutils cifs-utils krb5-user
      2. 配置DNS。

        1. 執行以下命令停止DNS的自動更新。

          sudo systemctl disable systemd-resolved
          sudo systemctl stop systemd-resolved

        2. 將AD伺服器IP寫入/etc/resolv.conf中。DNS

        3. 執行ping命令,pingAD伺服器名稱驗證連通性。3

    • CentOS作業系統

      1. 安裝AD伺服器配置包。

        sudo yum install keyutils cifs-utils krb5-workstation
      2. 配置DNS。

        將AD伺服器IP寫入/etc/resolv.conf中,刪除預設的DNS伺服器。DNS執行ping命令,pingAD伺服器名稱驗證連通性。3

      3. 配置Kerberos。

        請在設定檔/etc/krb5.conf中添加如下內容。

            default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
            default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
            permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

        15

  3. 以本機使用者身份儲存SMB檔案系統掛載點的票據資訊。

    1. 建立本機使用者並記錄建立使用者的UID和GID。

      useradd usera1
      su - usera1
      id

      usera1

    2. 使用建立的本機使用者儲存SMB檔案系統掛載點的票據資訊。

      kinit administrator@EXAMPLE-COMPANY.COM
      klist

      21

  4. 掛載SMB檔案系統。

    1. 安裝掛載工具包。

      • Ubuntu

        sudo apt-get install keyutils cifs-utils
      • CentOS

        sudo yum install keyutils cifs-utils
    2. 執行以下命令掛載檔案系統。

      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掛載。

  5. 添加自動掛載配置。

    掛載完成後,添加自動掛載配置。重啟Linux用戶端,將自動完成掛載。

    1. 在設定檔/etc/auto.master中,添加如下選項:

      /share    /etc/auto.cifs    --timeout=30 --ghost
    2. 按如下樣本修改設定檔/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/&

      重要參數欄位說明如下,請根據實際值替換。

      • cruiduid:為本地usera1使用者的ID。

      • gid:為本地usera1使用者的group。

      • 205dee4****-uub48.us-west-1.nas.aliyuncs.com:為檔案系統掛載點地址。

        您可以在檔案儲存體控制台檔案系統列表頁面,單擊目標檔案系統前的image..png表徵圖,在掛載點列表的掛載點地址列,將滑鼠置於掛載點地址.png表徵圖,擷取掛載點地址。

    3. 重啟autofs服務。

      systemctl restart autofs.service
    4. 確認自動掛載配置結果。

      假設建立了//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/

57

sudo setcifsacl -a "ACL:S-1-5-21-3076751034-3769290925-1520581464-513:ALLOWED/OI|CI|I/FULL" usera1/

58