使用samba3在ubuntu上搭建通過ad驗證的文件服務器

環境:
Linux:ubuntu server 11.04
Windows:Windows 2003 AD
ads模式涉及到Windows域網絡中的Kerberos身份驗證技術,除了需要配置主配置文件smb.conf外,還需要配置用於Kerberos身份認證的配置文件/etc/krb5.conf,用於控制Samba服務器Linux系統賬戶與Windows域賬戶交換的/etc/nsswitch.conf文件。還需要使用“net ads join -S”命令把Samba服務器加入到Windows AD域中。

第一步,安裝所需的要軟件包
apt-get install krb5-user
apt-get install winbind samba

第二步,修改/etc/krb5.conf (krb5-user軟件包的配置文件)
在每一節中加入以下語句
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
# 指定Kerberos認證票證有效期
ticket_lifetime = 24000
#DOMAIN.INTERNAL是ad的後綴域名的大寫
default_realm = DOMAIN.INTERNAL
# 指定無需DNS解析領域請求包
dns_lookup_realm = false
# 指定允許DNS解析kdc請求包
dns_lookup_kdc = ture
# 允許轉發解析請求
forwardable = yes
[realms]
DOMAIN.INTERNAL = {
#domainserver.domain.internal是域控,還可以用IP的形式寫,並加入端口號
#例如:kdc = 172.16.0.1:88/admin_server = 172.16.0.1:749
kdc = domainserver.domain.internal
admin_server = domainserver.domain.internal
default_domain = DOMAIN.INTERNAL
}
[domain_realm]
#domain.internal是ad的後綴域名
#設置一個領域搜索範圍,並通過這兩個語句可以使得領域名與大小寫無關。
.domain.internal = DOMAIN.INTERNAL
domain.internal = DOMAIN.INTERNAL
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true # 允許轉發請求
krb4_convert = false
}

第三步,修改/etc/samba/smb/conf,samba3的配置文件
[global]
security = ads
#設置允許的IP段
hosts allow = 192.168.1
encrypt passwords = yes
# 指定jeff用戶作爲來賓訪問賬戶
guest account = jeff
#netbios name是linux的主機名
netbios name = ubuntu
#realm是在krb5.conf中定義的域名
realm = DOMAIN.INTERNAL
#password server就主域控,也可以寫成IP地址
password server = domainserver.domain.internal
#workgroup是域的名字,不要後綴
workgroup = DOMAIN
#idmap id用來映射Linux用戶到Windows用戶SID,而且要確保這個id範圍內沒有被本地或者NIS用戶佔用,在winbind服務啓動後,也不能在該ID範圍內添加用戶
idmap uid = 5000-10000000
idmap gid = 5000-10000000
#winbind將使用該分隔符來用戶或組名。使用該配置將使得域用戶表示爲"MYDOMAIN+username",域組被表示爲"MYDOMAIN+Domain Users"
winbind separator = +
#指定winbind服務是否能在系統上創建Windows域組或用戶。
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
#用來指定爲域用戶產生主目錄。其中%D代表域名,%U代表用戶名
template homedir = /home/%D/%U
#控制samba在哪裏尋找域用戶的主目錄。
template shell = /bin/bash
#當ad是win2003時必須要有以下兩句
client use spnego = yes
domain master = no

第四步,配置名稱解析,修改/etc/nsswitch.conf
Nsswitch.conf配置文件是用來控制在用戶訪問Samba服務器時與Windows域中DC中的用戶賬戶的切換,使用DC中的用戶賬戶來進行身份驗證。Nsswitch.conf配置文件是在/etc目錄下
按如下修改
passwd: compat winbind
group: compat winbind
shadow: compat
hosts: files dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

第五步,配插PAM(入式驗證模塊)
編輯/etc/pam.d/common-account配置文件
只保留以下語句:
account sufficient pam_winbind.so
account required pam_unix.so
編輯/etc/pam.d/common-auth配置文件
只保留以下語句:
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
編輯/etc/pam.d/common-password配置文件
修改語句爲:
password required pam_unix.so nullok obscure min=4 max=50 md5
編輯/etc/pam.d/common-session配置文件
確保有以下語句:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
session sufficient pam_winbind.so
session required pam_unix.so

第六步,建一個目錄去保存域用戶的家目錄
目錄的名字要與smb.conf中定義的WORKGROUP的值一樣
例如:
mkdir /home/DOMAIN

第七步,初始化Kerberos,並把Linux加入Windows AD
kinit [email protected]
klist
#用戶不用加後綴
net ads join -U domainadminuser
使用“wbinfo –u”可以在Samba服務器上查看域中現有的域用戶賬戶,使用“wbinfo –g”命令可以查看域中現有的組賬戶。如果能列出這些賬戶出來,證明域加入真正成功了。用“wbinfo –t”命令確認Samba主機帳號在AD中正確註冊。如果註冊成功會有“checking the trust secret via RPC calls succeeded”的提示。

第九步,設置DNS
在Windows AD 的DNS上增加AD和Linux的正向和反向的主機記錄,這一步不能少,少了會出現域用戶無法打開Linux共享,提示沒有權限的錯誤

第十步,重啓samba服務
service smbd restart
service nmbd restart
/etc/init.d/winbind restart

第十一步,配置SUDO
1、在AD上建立一個叫UnixAdmins的組,並把需要使用sudo管理服務器的用戶加入此組中
2、在linux中把UnixAdmins組加入到/etc/sudoers,使用戶可以使用sudo
%UnixAdmins ALL = (ALL) ALL

最後一步,設置共享目錄
編輯/etc/samba/smb.conf
[homes]
comment = Home Directories
browseable = no
writable = yes
path = /home/%U
valid users = %U
[share]
comment = All user's share directory
path = /usr/share
public = no
guest ok =yes
readonly = yes
[program]
comment = Program Files
path = /etc/program
# 指定該共享目錄僅允許域網絡中的administrtors組成員和alice用戶訪問
valid users = @administrator alice
public = no
writable = yes
[share01]
path = /home/TEST
#UnixAdmins:用戶組,110110域用戶名
valid users = @UnixAdmins 110110
public = no
writable = yes
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章