本文將實現Windows Linux的異構環境

火星人 @ 2014-03-09 , reply:0


本文將實現Windows Linux的異構環境

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 administrator@A.COM (注意大寫的部分)

遇到的一些問題:

1)

[root@Gh0st CentOS]# kinit test111@a.com

kinit(v5): Cannot find KDC for requested realm while getting initial credentials

原因:客戶端主DNS未指向域控制器

解決:

編輯文件/etc/resolv.conf,將nameserver的值修改成域控制器的IP地址.

2)

[root@Gh0st CentOS]# kinit test111@a.com

Password for test111@a.com:

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 test111@a.com

Password for test111@a.com:

kinit(v5): KDC reply did not match expectations while getting initial credentials

解決:使用大寫的域名

[root@Gh0st CentOS]# kinit administrator@A.COM

Password for administrator@A.COM:

[root@Gh0st CentOS]#

4)net rpc join -W @A.COM -S 192.168.1.50 -U administrator


出現 錯誤:NT_STATUS_INVALID_COMPUTER_NAME

解決辦法:把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:mifeihu@163.com) 花了很長時間,查了好多資料才完成的,如果轉載,請保留作者,及聯繫方式.




[火星人 via ] 本文將實現Windows Linux的異構環境已經有838次圍觀

http://www.coctec.com/docs/linux/show-post-49487.html