本文介紹在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域。
安裝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
配置Linux客戶端在AD域的機器名。
sudo hostnamectl set-hostname myubuntu.example-company.com
其中,
example-company.com
為AD域名稱,請您根據實際業務場景配置。配置完成后,執行hostnamectl命令檢查已配置的客戶端機器名稱。
配置DNS。
執行以下命令停止DNS的自動更新。
sudo systemctl disable systemd-resolved sudo systemctl stop systemd-resolved
將AD服務器IP寫入/etc/resolv.conf中。
執行ping命令,pingAD服務器名稱驗證連通性。
查找AD域。
realm discover <AD domain>
Linux客戶端加入AD域。
sudo kinit Administrator@EXAMPLE-COMPANY.COM sudo realm join -U Administrator example-company.com
執行realm list命令,如果回顯包含如下類似信息,說明Linux客戶端已加入AD域。
配置以AD域用戶登錄時的home目錄。
配置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
執行以下命令激活該配置。
pam-auth-update
激活后,通過上下鍵移動光標,并使用空格鍵增加選項標記
*
,請確保activate mkhomedir
選項前標記為*
,然后使用Tab鍵將光標移動至Ok,即完成設置。
配置Linux sssd服務。
在配置文件/etc/sssd/sssd.conf中,寫入
krb5_ccname_template=FILE:%d/krb5cc_%U
。執行以下命令重啟sssd服務并確認服務狀態。
sudo systemctl restart sssd sudo systemctl status sssd
如果回顯包含如下類似信息,說明Linux sssd服務已配置成功。
安裝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
配置Linux客戶端在AD域的機器名。
sudo hostnamectl set-hostname mycentos.example-company.com
其中,
example-company.com
為AD域名稱,請您根據實際業務場景配置。配置完成后,執行hostnamectl命令檢查已配置的客戶端機器名稱。
配置DNS。
將AD服務器IP寫入/etc/resolv.conf中,刪除默認的DNS服務器。執行ping命令,pingAD服務器名稱驗證連通性。
配置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
查找AD域。
realm discover example-company.com
Linux客戶端加入AD域。
sudo realm join -U Administrator example-company.com
執行realm list命令,如果回顯包含如下類似信息,說明Linux客戶端已加入AD域。
執行id命令,查詢AD域用戶身份狀態。
id testuser@example-company.com
如果回顯包含如下類似信息,說明AD域用戶身份能被正常識別。
添加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客戶端。
掛載SMB文件系統。
安裝掛載工具包。
Ubuntu
sudo apt-get install keyutils cifs-utils
CentOS
sudo yum install keyutils cifs-utils
查詢keytab信息。
執行id命令查看登錄后的uid、gid信息。
執行以下命令掛載文件系統。
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服務器。
安裝AD服務器配置包。
sudo apt-get -y install keyutils cifs-utils krb5-user
配置DNS。
執行以下命令停止DNS的自動更新。
sudo systemctl disable systemd-resolved sudo systemctl stop systemd-resolved
將AD服務器IP寫入/etc/resolv.conf中。
執行ping命令,pingAD服務器名稱驗證連通性。
安裝AD服務器配置包。
sudo yum install keyutils cifs-utils krb5-workstation
配置DNS。
將AD服務器IP寫入/etc/resolv.conf中,刪除默認的DNS服務器。執行ping命令,pingAD服務器名稱驗證連通性。
配置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
以本地用戶身份保存SMB文件系統掛載點的票據信息。
新建本地用戶并記錄新建用戶的UID和GID。
useradd usera1 su - usera1 id
使用新建的本地用戶保存SMB文件系統掛載點的票據信息。
kinit administrator@EXAMPLE-COMPANY.COM klist
掛載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/
sudo setcifsacl -a "ACL:S-1-5-21-3076751034-3769290925-1520581464-513:ALLOWED/OI|CI|I/FULL" usera1/