Windows的AD在企業中的廣泛應用,和Linux的穩定性,我們各取所長,構建一個既方便又安全、穩定的環境.
配置方法一:
Linux在啟動級別3, 所有的操作都是在命令行下.
Windows正常環境,升級為AD,同時集成了DNS,提升林功能級別為2003純模式,林級別為20003 純模式.
1.在Linux系統中安裝相應的軟體包
samba-3.0.23c-2
samba-common-3.0.23c-2
samba-client-3.0.23c-2 //samba的相關包
krb5-libs-1.5-17
krb5-workstation-1.5-17
krb5-devel-1.5-17
pam_krb5-2.2.11-1
2.禁用selinux
vi /etc/selinux/config
修改 SELINUX=enforcing (強制)
改成 SELINUX=disable (禁用)
修改iptables
清空iptables規則命令如下:
iptables -F
3. 配置dns
vi /etc/resolve.conf
nameserver 192.168.1.2 //windows DNS伺服器的ip地址
4. 修改/etc/krb5.conf文件,該文件是kerberos的配置文件.(Windows的登錄相關)
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = A.COM //改成你的域名
dns_lookup_realm = false
dns_lookup_kdc = false
[realms]
A.COM = { //改成你的域名
kdc = 192.168.1.2:88 //改成你DC的FQDN或者是IP,兩者沒什麼區別
admin_server = 192.168.1.2:749 //這裡建議用ip
default_domain = a.com //改成你的域名,注意和上面的不同.(大小寫)
}
[domain_realm]
.example.com = A.COM
example.com = A.COM //接著改
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
測試:
在這裡要注意的小問題就是Linux本地的時間要和DC的時間差問題,我們都知道,在DC上的策略中,時間差允許的範圍是5分鐘,所以,在運行上述的命令前,最好先同步下Linux和DC的時間:
ntpdate -b 192.168.1.2 //同步為AD的時間
使用命令:kinit [email protected] (注意大寫的部分)
遇到的一些問題:
1)
[root@Gh0st CentOS]# kinit [email protected]
kinit(v5): Cannot find KDC for requested realm while getting initial credentials
原因:客戶端主DNS未指向域控制器
解決:
編輯文件/etc/resolv.conf,將nameserver的值修改成域控制器的IP地址.
2)
[root@Gh0st CentOS]# kinit [email protected]
Password for [email protected]:
kinit(v5): Clock skew too great while getting initial credentials
原因:
客戶端與認證伺服器的時間差距太大,將客戶端與認證伺服器的時間同步即可
解決:
安裝ntp軟體,執行ntpdate –b 192.168.6.37(域控制器的IP),時間被同步
[root@Gh0st CentOS]# ntpdate -b 192.168.6.37
17 Sep 12:32:05 ntpdate[10302]: step time server 192.168.6.37 offset 2537.194742 sec
3)
[root@Gh0st CentOS]# kinit [email protected]
Password for [email protected]:
kinit(v5): KDC reply did not match expectations while getting initial credentials
解決:使用大寫的域名
[root@Gh0st CentOS]# kinit [email protected]
Password for [email protected]:
[root@Gh0st CentOS]#
4)net rpc join -W @A.COM -S 192.168.1.50 -U administrator
解決辦法:把ip地址改為dc的FQDN即可
5. 配置samba
vi /etc/samba/smb.conf
[global]
workgroup = A //需要加入的域的netbios名,注意是域的netbios名,要大寫
netbios name = Linux //本機器的netbios名,有的版本沒有這一項會沒有這個,
要手動添加
server string = Samba Server //對該伺服器的描述
printcap name = /etc/printcap
load printers = yes
cups options = raw
log file = /var/log/samba/%m.log
max log size = 50
security = ads //ads驗證方式必須有realm項
realm = A.COM //增加這一行,注意這裡是域名.
password server = 192.168.1.2 //這裡是DC的FQDN,也可以寫ip,但是有時候會出
問題,建議寫IP
encrypt passwords = yes //加密在網路上傳輸的用戶密碼
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no
winbind separator = / //用戶的域名和用戶名之間的間隔,用什麼隨你心情
idmap uid = 1000000-2000000
idmap gid = 1000000-2000000 //域用戶映射成Linux本地用戶時所有的uid和gid範圍.
template homedir = /home/%D/%U //與home文件夾中定義的作用相同.兩者定義一個就行
template shell = /bin/bash //用戶登陸后所使用的shell
winbind use default domain = yes //用戶登陸使用默認的域
winbind enum users = yes
winbind enum groups = yes //有人說是自動創建用 getent passwd[group]看到的
用戶和組的信息.具體有什麼用,我也說不清楚
winbind cache type = x (winbind同步賬戶時間,可以沒有)
[homes]
comment = Home Directories
browseable = no
writable = yes
create mode = 0777
directory mode = 0777 //創建的文件和目錄的默認許可權
path = /home/%D/%U //用戶主目錄的相關設置
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
測試:[root@localhost ~]# testparm //測試samba配置文件的命令
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK. //語法測試通過
Server role: ROLE_DOMAIN_MEMBER //驗證級別為 域成員
Press enter to see a dump of your service definitions //回車將顯示起作用的配置
[global]
workgroup = A
netbios name = LINUX
realm = A.COM
server string = Samba Server
security = ADS
password server = 192.168.1.2
encrypt passwords = yes
log file = /var/log/samba/%m.log
max log size = 50
dns proxy = no
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
template shell = /sbin/nologin
winbind separator = /
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
cups options = raw
[homes]
comment = Home Directories
path = /home/%D/%U
read only = no
create mask = 0777
directory mask = 0777
browseable = no
[printers]
comment = All Printers
path = /usr/spool/samba
printable = yes
browseable = no
6. 啟動相關的服務:
service winbind restar
service smb restart
chkconfig --levels 35 winbind on
chkconfig --levels 35 smb on
7. 將Linux加入Windows域
net ads join -W A.COM -S dc1(AD的主機名) -U administrator
有時候用net ads join 會不好使,這時候就試試net rpc join 這種方式.
有時候會出現這樣的錯誤信息,解決辦法如下:
先停掉winbind和smb服務:
service smb stop
service winbind stop
然後刪除下面兩個目錄里的.tdb文件: /etc/samba 和 /var/cache/samba
據我理解,這些應該是在加入域過程中,產生的一些緩存
文件,但是有時候這些緩存會造成一些錯誤信息,就象我們剛才看到的那樣,刪除后,重啟服務,讓他重新
生成就行了.
重新啟動相關的服務,在執行加入域操作.
測試:
wbinfo -t //測試域的信任關係
wbinfo -u //查看域用戶
wbinfo -g //查看域用戶組
8. 修改Linux的密碼查找順序
vi /etc/nsswitch.conf
修改相關記錄
passwd: winbind files
shadow: files winbind
group: winbind files
修改 /etc/pam.d/system-auth (應該是登錄Linux系統本機的驗證方式,如果作文文件伺服器,不讓普通用戶登錄,不設置應該也可以)
vi /etc/pam.d/system-auth
auth sufficient pam_winbind.so //增加這一行
account sufficient pam_winbind.so //增加這一行,注意這兩行的位置
9. 建立相關用戶文件
修改完畢后,根據上面smb.conf文件的配置,我們就可以實現用戶的登陸了,不過還有一點要說明,就是在用戶登陸前,必須手動創建他們的登陸主目錄,並且賦予他們完全控制的許可權.
比如,我想讓administrator用戶登陸Linux,實現步驟如下:
cd /home
mkdir A
cd A mkdir administrator
chown administrator: administrators administrator //在home目錄下創建YANCHUN域目錄,並在該目
錄下創建要登陸用戶administrator的目錄,更改目錄許可權.
這樣在終端上就可以實現域用戶賬戶的登陸了.
做到這裡,恭喜你Linux和Windows的整合已經完成.
小提示:Linux做文件伺服器,沒必要讓域用戶在Linux本地登錄.所有[homes]欄位可以沒有,家目錄也可以沒有.
此文檔由 秘飛虎 (qq:815889476 mail:[email protected]) 花了很長時間,查了好多資料才完成的,如果轉載,請保留作者,及聯繫方式.
[火星人 ] 本文將實現Windows Linux的異構環境已經有2555次圍觀