最近正在做單位電腦的AD域管理。
為漫游用戶文件,研究配置Samba通過ad域進行認證並限制空間大小。
參考了很多資料,現總結如下:
DC:windows server 2016(配置安裝域控制器)略...
samba:Centos 7 server 1810(指定IP,其中DNS1地址指定為DC的地址i,DNS2指定為可用的DNS服務器地址。)
域名:xyz.local
dc計算機名:dc
linux計算機名:file
一:前期准備
1.准備分區
因為磁盤配額只能在一塊單獨的分區上啟用,所以筆者專門添加了一塊分區掛載到home目錄下,這點要注意。
https://www.cnblogs.com/jackadam/p/8213712.html
可以按這篇文章的介紹,掛在新的分區,或新的硬盤。
一般服務器都跑在虛擬化的服務器上,所以添加個新的虛擬硬盤,也是這樣添加硬盤。
2.准備linux
我們使用samba的ads模式加入域並提供共享,那么就需要安裝若干軟件來實現這個功能。
yum -y install pam_krb5* krb5-libs* krb5-workstation* krb5-devel* krb5-auth samba samba-winbind* samba-client* samba-swat* bind-utils quota
其中主要的有samba系列,krb5系列,winbind系列,bind-utils是網絡工具,quota是磁盤限額工具
二:samba加入AD域(NT4域)
1.配置DNS
這里並不是配置配置DNS服務器地址,是配置DNS搜索域。
vi /etc/sysconfig/network-scripts/ifcfg-ens33
在最后添加一行:
SEARCH="your_domain_name"
本例是
SEARCH=“xyz.local"
重啟linux,或者使用命令 systemctl restart network 來重啟網絡。
2.驗證DNS
使用下面的的命令查看DNS配置參數
cat /etc/resolv.conf
應該有至少兩行:
search xyz.local nameserver 10.99.**.**
第一行是搜索域,第二行是dns服務器地址指向DC,如果你還有可用的DNS地址,可能會在第三行,第四行。
3.查看(配置)主機名
使用命令查看主機名
hostname
如果主機名需要修改可以使用以下命令
hostnamectl set-hostname newname
newname就是新的主機名。
4.測試DNS
能ping 通 dc 並自動解析為 dc.xyz.local即可
ping dc ping dc.xyz.local
5.使用命令行加入域
authconfig --enablewinbind --enablekrb5 --enablewinbindauth --krb5realm=XYZ.LOCAL --krb5kdc=dc.xyz.local --enablekrb5kdcdns --enablekrb5realmdns --smbsecurity=ads --smbrealm=xyz.local --smbservers=dc.xyz.local --winbindtemplateshell=/bin/bash --winbindjoin=administrator --enablewinbindusedefaultdomain --disablewinbindoffline --smbworkgroup=XYZ --enablemkhomedir --update
根據提示輸入域管理員密碼即可加入域。
但是提示是有錯誤
[root@file ~]authconfig --enablewinbind --enablekrb5 --enablewinbindauth --krb5realm=ZZCLD.LOCAL --krb5kdc=dc1.zzcld.local --enablekrb5kdcdns --enablekrb5realmdns --smbsecurity=ads --smbrealm=zzcld.local --smbservers=dc1.zzcld.local --winbindtemplateshell=/bin/bash --winbindjoin=administrator --enablewinbindusedefaultdomain --disablewinbindoffline --smbworkgroup=ZZCLD --enablemkhomedir --update [/usr/bin/net join -w XYZ -S dc.xyz.local -U administrator] Enter administrator's password: Using short domain name --XYZ Joined 'FILE' to dns domain 'xyz.local' No DNS domain configured for file. Unable to perform DNS Update. DNS update failed: NT_STATUS_INVALID_PARAMTER
盡管有提示錯誤,但是貌似是DNS注冊失敗而已。
自己在DC里面注冊一個DNS解析就好了。
6.測試域身份
wbinfo -t 可以查看信任關系。
7.手動補全配置
vi /etc/samba/smb.conf
在Global當中添加以下兩行
Winbind enum users = yes Winbind enum groups = yes
在home當中添加以下一行
path = /home/%U
這是authconfig當中沒有設置的,經過幾天的測試,確實就是這里沒有設置,導致了顯示共享目錄,卻無法打開。
三:測試登錄域
使用putty登錄linux,使用域用戶即可登錄,並且會自動創建用戶的主目錄。
建議使用administrator登錄,自動創建用戶家目錄,為后面磁盤配額做准備。
四:配置磁盤配額
1.編輯fstab
按下面格式填入/etc/fstab ,格式是XFS格式
/dev/mapper/storage-storage /storage xfs defaults 0 0
修改為:
/dev/mapper/storage-storage /storage xfs defaults,usrquota,grpquota
重啟linux,使設置生效。
2.設置磁盤配‘額
我們使用了XFS格式的磁盤,所以磁盤配額命令有區別了。
xfs_quota -x -c "limit -u bsoft=950M bhard=1024M administrator" /home xfs_quota -x -c "report -ubin" /home
第一行是設置administrator的磁盤限額。
第二行是查看磁盤限額。
3.將設置的磁盤配額作為模板設置給新用戶
剛才我們配置了--enablemkhomedir參數來給ssh登錄創建用戶家目錄。但是samba登錄的時候不會自動創建用戶家目錄。
所以我們使用samba的root preexec 參數來執行samba登錄腳本。來確保用戶僅使用samba共享訪問服務器時能自動創建家目錄。
首先編寫mkhome.sh
vi /root/mkhome.sh #!/bin/bash user=$1 group=$2 home=/home/$1 if [ ! -d $home ]; then mkdir -p $home chown $user $home chgrp $gropu $home chmod 744 $home edquota -p administrator -u $user fi
然后編輯smb.conf
vi /etc/samba/smb.conf ;在homes里面加入 path = /home/$U root preexec = /root/mkhome.sh %U %G
設置mkhome.sh為700權限
chmod 700 /root/mkhome.sh
重啟samba
systemctl restart smb
4.驗證配置
在其他windows計算機,登錄域(非剛才的administrator),然后訪問samba服務器。
會看到以用戶名命名的一個共享目錄。
進去是有權限讀寫的。
在samba服務器查看磁盤配額。雖然用戶ID看不出是誰,但是可以看到磁盤配額是和administrator一樣的1G。
另一個磁盤配額檢查命令
repquota /storage
/storage 是需要查詢配額的目錄。
5.后期修改磁盤配額
使用下面的命令,修改域用戶的磁盤配額。用戶名是帶域名的完整用戶名。
xfs_quota -x -c "limit -u bsoft=950M bhard=1024M test@xyz.local" /home
五:后記
參考了很多文章,就不一一列舉了。
但是還有遺留問題:
1.為什么net ads join 提示DNS注冊失敗?
是因為linux使用了指定IP?還是某些地方沒有配置好。
2.如果先進行ssh登錄,那么自動生成的目錄蛋沒有磁盤配額?
貌似沒有,因為默認的創建用戶家目錄應該不會配置磁盤配額。
3.手動更新的3行配置,能否也使用authconfig配置進去呢?
這個需要繼續研究。
4.samba集群該怎么配置?
這個也要繼續研究。
5.查到了一些配置selinux的資料,還要實驗測試。
重要參考文獻:
https://wiki.samba.org/index.php/Setting_up_Samba_as_a_Domain_Member
https://blog.51cto.com/rainbird/197794
https://blog.51cto.com/rainbird/197509
