Samba通過ad域進行認證並限制空間大小


最近正在做單位電腦的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 可以查看信任關系。

checking the trust secret  via RPC calls succeeded
使用wbinfo –u 可以列出AD中注冊的帳號信息
Wbinfo –g可以返回AD中的組信息

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM