作者 主題: 01.LDAP server + phpldapadmin 筆記  (閱讀 26148 次)

0 會員 與 1 訪客 正在閱讀本文。

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
01.LDAP server + phpldapadmin 筆記
« 於: 2012-08-28 17:27 »
各位好,這是小弟自學LDAP兩個多月來的一點心得,也因為現在新版(2.4.x)教學真的很少,所以把整理好的內容分享給大家,其實主要目的還是希望可以跟大大們討教個幾招... ;D

我分成三個部份『LDAP server + phpldapadmin』、『Replication』、『LDAP client + autofs home』(sorry~~postfix與samba PDC還沒開始研究 :P)

小弟是用VBOX架設整個環境,OS都使用CentOS6.2_x64,domain name為split.com.tw,網段為192.168.1.0/24,主機總共有6台,
DNS+DHCP(192.168.1.1)
LDAP1(192.168.1.2)       
LDAP2(192.168.1.3)        ##準備兩台是要來實作Replication
HOME(192.168.1.4)         ##要做home目錄的automount
CLIENT(192.168.1.5)       
MAIL(192.168.1.6)

DNS+DHCP這部份可以參考鳥哥來自行架設,mail server 目前還沒玩,暫時冷凍中

LDAP server + phpldapadmin架設心得 :


LDAP架構圖

                        split.com.tw
                        /                  \
                       /                     \
               People                      Group
                 /    \                       /    |    \
           niko    ping             D10  D20  D30
               

user分別就是niko和ping,group的部份D10是niko的主群組,D20是ping的主群組,另外D30則是兩位的附屬群組


樹的結構設定好後就開始安裝LDAP吧!!

小弟安裝的版本是openldap-2.4.23-26.el6

安裝與設定LDAP (主機 : LDAP1)

安裝LDAP
代碼: [選擇]
[root@ldap1 ~]# yum install openldap-servers openldap-clients
現在的/etc/openldap目錄裡預設已經沒有slapd.conf檔了,先去尋找檔案並且copy一份
代碼: [選擇]
[root@ldap1 ~]# find / | grep slapd.conf
找到檔案後
代碼: [選擇]
[root@ldap1 ~]# cp /usr/share/openldap-servers/slapd.conf.obsolete  /etc/openldap/slapd.conf
copy DB_CONFIG 到 /var/lib/ldap
同上,可先到"/usr/share/openldap-servers/" 找檔案,然後
代碼: [選擇]
[root@ldap1 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example  /var/lib/ldap/DB_CONFIG(DB_CONFIG 檔案設定了 index 的快取數量,可調整效能的表現,在一開始建置時需要先行建立,並把它複製到 /var/lib/ldap (依照database的目錄來決定)

設定slapd.conf
代碼: [選擇]
[root@ldap1 ~]# vim /etc/openldap/slapd.conf
===================================================================================
include      /etc/openldap/schema/core.schema
include      /etc/openldap/schema/cosine.schema
include      /etc/openldap/schema/inetorgperson.schema
include      /etc/openldap/schema/nis.schema

allow bind_v2

pidfile      /var/run/openldap/slapd.pid
argsfile      /var/run/openldap/slapd.args

loglevel   256               ## 需額外設定rsyslog ##


TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile "\"OpenLDAP Server\""
TLSCertificateKeyFile /etc/openldap/certs/password

access to attrs=userPassword      ## 限制 userPassword 只用於認證 ##
            by self write            ## 允許使用者變更自己的密碼 ##
            by anonymous auth         ## 匿名用戶需要認證 ##
            by * none               ## 任何人都無法存取 ##
 

access to *
   by * read

database config
access to *
   by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
   by * none

database monitor
access to *
   by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=admin,dc=split,dc=com,dc=tw" read            ## 修改成自己的rootdn ##
        by * none
#######################################################################
# database definitions
#######################################################################
database   bdb
suffix      "dc=split,dc=com,dc=tw"
checkpoint   1024 15
rootdn      "cn=admin,dc=split,dc=com,dc=tw"
rootpw      {CRYPT}u/vHUak3FqFek                               
directory   /var/lib/ldap

index objectClass                   eq
index ou,cn,mail,surname,givenname         eq,pres,sub
index uidNumber,gidNumber,loginShell       eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry          eq,pres,sub
====================================================================================

將slapd 的log寫到/var/log/slapd
代碼: [選擇]
[root@ldap1 ~]# vim /etc/rsyslog.conf加入
local4.*            /var/log/slapd

完成後重新啟動rsyslog

rootpw 使用加密密碼 ( password : redhat )
代碼: [選擇]
[root@ldap1 ~]# slappasswd -h {CRYPT}
New password : 
Re-enter new password : 
{CRYPT}u/vHUak3FqFek
輸入兩次redhat後就會得到一組加密過後的亂碼


設定好後準備將slapd.conf 轉成 slapd.d 的格式

先清空 slapd.d 目錄裡的資料
代碼: [選擇]
[root@ldap1 ~]# rm -rf /etc/openldap/slapd.d/*
轉換成 slapd.d 格式
代碼: [選擇]
[root@ldap1 ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
『bdb_db_open: database "dc=split,dc=com,dc=tw": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
   backend_startup_one (type=bdb, suffix="dc=split,dc=com,dc=tw"): bi_db_open failed! (2) slap_startup failed (test would succeed   
   using the -u switch)』

因為還未建立資料,所以找不到id2entry.bdb而出現錯誤訊息,不過slapd.conf 的設定還是會匯入到slapd.d資料夾裡,暫時先不用理它


在啟動slapd時,要先修改/etc/openldap/slapd.d和/var/lib/ldap底下所有檔案的擁有者
代碼: [選擇]
[root@ldap1 ~]# chown -R ldap:ldap /etc/openldap/slapd.d
代碼: [選擇]
[root@ldap1 ~]# chown -R ldap:ldap /var/lib/ldap
完成後,我們就可以啟動slapd了
代碼: [選擇]
[root@ldap1 ~]# /etc/init.d/slapd start
[root@ldap1 ~]# chkconfig slapd on

日後如有更動slapd.conf,都必須清空 slapd.d 目錄、轉換 slapd.d 格式、變更slapd.d 擁有者


LDIF編寫與匯入資料

根節點

代碼: [選擇]
[root@ldap1 ~]# vim root.ldif# root node
dn: dc=split,dc=com,dc=tw
dc: split
objectclass: dcObject
objectclass: organizationalUnit
ou: split.com.tw

# People
dn: ou=People,dc=split,dc=com,dc=tw
ou: People
objectClass: organizationalUnit

# Group
dn: ou=Group,dc=split,dc=com,dc=tw
ou: Group
objectClass: organizationalUnit


User

代碼: [選擇]
[root@ldap1 ~]# vim user.ldif#王大明
dn: cn=Niko 王大明,ou=People,dc=split,dc=com,dc=tw
objectClass: posixAccount
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: shadowAccount
cn: Niko 王大明
uid: niko
userPassword: {CRYPT}UPE/FJwWxZXb2      
uidNumber: 1100                     ## uid = 1100 ##
gidNumber: 1000                     ## D10的gid ##
ou: People
loginShell: /bin/bash
homeDirectory: /home/niko
sn: 王
givenName: 大明
mail: niko@split.com.tw
telephoneNumber: 02-12345678

#李小偵
dn: cn=Ping 李小偵,ou=People,dc=split,dc=com,dc=tw
objectClass: posixAccount
objectClass: top
objectClass: person
objectClass: inetOrgPerson
objectClass: shadowAccount
cn: Ping 李小偵
uid: ping
userPassword: {CRYPT}XkXkm/SO4Ytsk                     
uidNumber: 1101                     ## uid = 1101 ##
gidNumber: 1001                     ## D20的gid ##
ou: People
loginShell: /bin/bash
homeDirectory: /home/ping
sn: 李
givenName: 小偵
mail: ping@split.com.tw
telephoneNumber: 02-88882222


Group

代碼: [選擇]
[root@ldap1 ~]# vim group.ldif#d10
dn: cn=d10,ou=Group,dc=split,dc=com,dc=tw
cn: d10
objectClass: top
objectClass: posixGroup
memberUid: niko
gidNumber: 1000

#d20
dn: cn=d20,ou=Group,dc=split,dc=com,dc=tw
cn: d20
objectClass: top
objectClass: posixGroup
memberUid: ping
gidNumber: 1001

#d30
dn: cn=d30,ou=Group,dc=split,dc=com,dc=tw
cn: d30
objectClass: top
objectClass: posixGroup
memberUid: niko                                ##加入兩個user##
memberUid: ping
gidNumber: 1002


匯入LDIF檔

代碼: [選擇]
[root@ldap1 ~]# ldapadd -D "cn=admin,dc=split,dc=com,dc=tw" -W -x -a -f root.ldif
Enter LDAP Password:
adding new entry "dc=split,dc=com,dc=tw"

adding new entry "ou=People,dc=split,dc=com,dc=tw"

adding new entry "ou=Group,dc=split,dc=com,dc=tw"


[root@ldap1 ~]# ldapmodify -D "cn=admin,dc=split,dc=com,dc=tw" -W -x -a -f user.ldif
Enter LDAP Password:
adding new entry "cn=Niko 王大明,ou=People,dc=split,dc=com,dc=tw"

adding new entry "cn=Ping 李小偵,ou=People,dc=split,dc=com,dc=tw"


[root@ldap1 ~]# ldapmodify -D "cn=admin,dc=split,dc=com,dc=tw" -W -x -a -f group.ldif
Enter LDAP Password:
adding new entry "cn=d10,ou=Group,dc=split,dc=com,dc=tw"

adding new entry "cn=d20,ou=Group,dc=split,dc=com,dc=tw"

adding new entry "cn=d30,ou=Group,dc=split,dc=com,dc=tw"


檢查資料

代碼: [選擇]
[root@ldap1 ~]# ldapsearch -x -b "dc=split,dc=com,dc=tw"

安裝phpLDAPadmin

有兩種安裝方法,較簡單的方式是先安裝EPEL來源,直接使用yum安裝;另一種方法是到官網的Project Page (http://sourceforge.net/projects/phpldapadmin/ ) 下載壓縮包自行安裝

方法1. 使用yum安裝 (需先安裝好EPEL)

代碼: [選擇]
[root@ldap1 ~]# yum install -y phpldapadmin
設定config.php
代碼: [選擇]
[root@ldap1 ~]# vim /etc/phpldapadmin/config.php$servers->setValue('login','attr','dn');            ## line 397 : uncomment ##

// $servers->setValue('login','attr','uid');         ## line 398 : make it comment ##

設定httpd
代碼: [選擇]
[root@ldap1 ~]# vim /etc/httpd/conf.d/phpldapadmin.conf
#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 192.168.1.0/24         ## IP address you allow ##
  Allow from ::1
</Directory>

開啟httpd
代碼: [選擇]
[root@ldap1 ~]# /etc/init.d/httpd start
[root@ldap1 ~]# chkconfig httpd on

完成.


方法2. 使用tgz檔安裝


先安裝php、php-ldap 套件
代碼: [選擇]
[root@ldap1 ~]# yum install -y php php-ldap
方法1不用安裝是因為yum已經把相依套件一併安裝上去了

請先至『http://sourceforge.net/projects/phpldapadmin/』下載tgz檔 (目前版本為1.2.2)

下載完成後,解壓縮
代碼: [選擇]
[root@ldap1 ~]# tar zxvf phpldapadmin-1.2.2.tgz

更改目錄名稱
代碼: [選擇]
[root@ldap1 ~]# mv phpldapadmin-1.2.2  phpldapadmin
移動phpldapadmin目錄到httpd的預設目錄下
代碼: [選擇]
[root@ldap1 ~]# mv phpldapadmin  /var/www/html/
切換至phpldapadmin的config目錄下
代碼: [選擇]
[root@ldap1 ~]# cd /var/www/html/phpldapadmin/config
把底下的config.php.example檔copy一份並更名為config.php
代碼: [選擇]
[root@ldap1 config]# cp config.php.example  config.php

如果phpldapadmin是連接本機的LDAP server 基本上就已經完成了,不用修改config.php都可以


下面還是來雞婆設定一下

修改config.php
代碼: [選擇]
[root@ldap1 ~]# vim /var/www/html/phpldapadmin/config/config.php

$servers->setValue('server','host','127.0.0.1');                                  ## line 293 (LDAP server 的 IP)##

$servers->setValue('server','port',389);                                             ## line 297 (port)##

$servers->setValue('server','base',array('dc=split,dc=com,dc=tw'));               ## line 302 應該不用說了吧.. ;D##

$servers->setValue('login','auth_type','cookie');                                       ## line 322 (Authentication information is stored in a cookie on the users browser) 這段小弟不知道該如何解釋比較好 :P##

$servers->setValue('login','bind_id','cn=admin,dc=split,dc=com,dc=tw');         ## line 332 (rootdn)##

$servers->setValue('login','bind_pass','redhat');                                       ## line 338 (password)##


完成.



最後打開瀏覽器,以小弟的為例,輸入ldap1.split.com.tw/ldapadmin就可以用web的方式去管理ldap
(如果是自行安裝的,請輸入您自行設定的目錄名稱,如:ldap1.split.com.tw/phpldapadmin)






注意事項 :
1.如有開啟SELinux,使用方法2安裝時需要注意一下,以免被阻擋無法瀏覽phpldapadmin

重新設定html目錄底下的SELinux type
代碼: [選擇]
[root@ldap1 ~]# restorecon -Rv /var/www/html/

2.登入phpldapadmin時,出現




根據官方解釋
This message is generated when you have a template that defines an objectClass, however, your LDAP schema does not know about the objectClass.
The 2nd line of this message will give you a hint as to which template, and which objectClass is the offending entry.
You can either:
○   Remove the template,
○   Remove the offending objectClass (shown in bold) from the template (if you are not sure which template, the template   
        description is displayed on the 2nd line - look for a template that has a <description> tag with that description), OR
○   Define the missing objectClass to your LDAP server's schema (you'll need to follow your LDAP server's instructions for this), OR
○   set config:appearance:hide_template_warning (PLA 1.2.0.3+) to suppress these warnings


使用EPEL來源安裝 :
代碼: [選擇]
[root@ldap1 ~]# vim /etc/phpldapadmin/config.php
使用tgz檔安裝
代碼: [選擇]
[root@ldap1 ~]# vim /var/www/html/phpldapadmin/config/config.php

在config.php裡的最後面加入

$config->custom->appearance['hide_template_warning'] = true

小弟測試如果隨便亂插phpldapadmin會出現問題,只有放在最後才正常...奇怪...... ???


以上,就是小弟架設的ldap server,如有漏掉什麼或是哪邊觀念不正確都希望大大們給予指教,下一篇的Replication(包含基本的Syncrepl與Mirror mode),等小弟把筆記整理好後再貼上來請大大們指教,謝謝!! :D
« 上次編輯: 2012-09-29 22:16 由 Niko »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #1 於: 2012-08-28 20:09 »
好像還有喔~ 敲碗~

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #2 於: 2012-08-28 20:13 »
今天上班閒來無事想說偷偷貼一下,不過寫不完...好像手殘不小心按到了...現在正在努力補滿中....@@

xiang

  • 鑽研的研究生
  • *****
  • 文章數: 711
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #3 於: 2012-08-30 09:32 »
懇請大大分享一場

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #4 於: 2012-09-01 16:19 »
懇請大大分享一場

那個....其他大老們都還沒出聲....小弟弟哪敢出來搖旗.....XD

xiang

  • 鑽研的研究生
  • *****
  • 文章數: 711
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #5 於: 2012-09-02 10:36 »
懇請大大分享一場

那個....其他大老們都還沒出聲....小弟弟哪敢出來搖旗.....XD

不會拉   我們需要新血 ;D

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #6 於: 2012-09-04 20:26 »
懇請大大分享一場

那個....其他大老們都還沒出聲....小弟弟哪敢出來搖旗.....XD

不會拉   我們需要新血 ;D

先感謝大大,不過演講還是交給三子大或板大這種專業的來比較好..... ;D

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8825
    • 檢視個人資料
    • http://www.24online.cjb.net
Re: LDAP server + phpldapadmin 筆記
« 回覆 #7 於: 2012-09-12 14:42 »
懇請大大分享一場

那個....其他大老們都還沒出聲....小弟弟哪敢出來搖旗.....XD

不會拉   我們需要新血 ;D

先感謝大大,不過演講還是交給三子大或板大這種專業的來比較好..... ;D
總是需要新人來補充一下戰鬥力的!  ;D
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #8 於: 2012-09-16 23:18 »
三子大...別鬧了,小弟還在等你講一場LDAP呢.... :'(
目前卡關卡的非常大,雖然sambaPDC已經算是成功了,但是.....
小弟成功的做法是...PDC架設在ldap1那台server上,但是home目錄也必須在ldap1上windows才可以設成漫遊
如果把home掛在小弟的HOME那台server,就變成無法去存取profile目錄,這兩天的假日小弟都泡在這上面了.... :'(

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #9 於: 2012-09-17 07:46 »
請問兩台server本身是否也是client?而且也是用LDAP作認證?

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #10 於: 2012-09-17 15:52 »
請問兩台server本身是否也是client?而且也是用LDAP作認證?

報告netman大大,是的

已經先排除防火牆和selinux的問題,home server只開NFS,ldap1 server 開NFS與samba,如果用linux去寫入自己家目錄,用nfs或samba都是OK的,但是用win xp,PDC認證OK,但就是漫遊那部份無法去存取個人home目錄,這部份小弟試驗不去掛home server的話就完全沒問題,但是一掛上去就...囧........所以,八成應該是home server的那台問題了....這部份小弟要在研究研究.......

忘了說明,ldap1去掛home的方式小弟是直接寫進fstab裡,因為用autofs掛會有問題,而home server 的nfs設定是直接給ldap1, no_root_squash......
« 上次編輯: 2012-09-17 15:56 由 Niko »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #11 於: 2012-09-17 16:13 »
這樣喔~
看來得找個時間lab一下了^_^

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #12 於: 2012-09-17 16:45 »
這樣喔~
看來得找個時間lab一下了^_^

拍手.... ;D

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #13 於: 2012-09-19 17:37 »
請問 Niko 大,您碰到的 profile 問題是什麼情形呢?
我現在用本機的 /home 也是沒辦法建立 profile 呢... >_<
(雖然 netlogon 是 OK 的)
能否請教您的 smb.conf 關於 profile 設定?

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #14 於: 2012-09-19 18:04 »
哈,我猜我可能知道問題了!

先用 pdbedit -Lv username 來確定 Profile Path: 跟 Home Direcotry: 的路徑。
server 的部份是否用 NETBIOS_NAME!
如果不是,那就用 smbldap-usermod 的 -C 跟 -F 參數來修改~~

^_^

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #15 於: 2012-09-19 22:06 »
本來想那乾脆我在分享home那台server上做PDC好了...
結果... :'(



netlogon也正常,試著進去新增幾個檔案也OK!
照netman大大說的檢查Profile Path跟Home Direcotry的路徑也都正常啊.......
我也用過linux的方式進samba也都正常啊.... :'(

快變成PDC重灌達人了.... :(

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #16 於: 2012-09-19 22:22 »
嗯,我下午也是碰到這個問題!
不過後來修改好了...
待會我再試試用 autofs 掛載 /home 到別台看看... ^_^

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #17 於: 2012-09-19 22:49 »
ㄟ害...大大可否先透露一下這問題要怎麼修改...
我現在sambaPDC在localhost上做也發生這個問題...囧

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #18 於: 2012-09-19 23:03 »
試過了,不過不能用 autofs ,因為沒辦法 create new home
所以就直接用 mount -t nfs 把整個 /home 掛載到別台機器。
測試起來正如上面發現的問題,
也就是要確定 Profile Path 裡面用的 server name 是 netbios name 就行
(這部份的預設值要修改 smbldap.conf )

還有,確定一下 nfs server 裡面用 no_root_squash 的選項看看...
« 上次編輯: 2012-09-19 23:10 由 netman »

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #19 於: 2012-09-19 23:27 »
高手出場就是厲害.....

可是netman大,現在慘是慘在連home是我自己localhost的都掛了....囧

您說的小弟都檢查過了,還真是奇怪勒.....一樣出現上圖的error....繼續研究中....

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #20 於: 2012-09-19 23:53 »
新問題.....
我暫時先用smbldap-useradd建立一個新帳號admin
進入後一樣出現問題,然後
smbldap-usermod -C "\\ldap1\admin" admin
smbldap-usermod -F "\\ldap1\admin\profile" admin

這時ldap會多出兩個屬性,分別是sambaHomePath和sambaProfilePath,內容就是\\ldap1\admin 這些

然後登入XP,發現雖然使用者設定檔是漫遊.....但是C槽下會多出一個ldap1的資料夾,然後netlogon的script也讀不到了
隨便在ldap1建個資料夾,但...似乎還是只存在C上面....samba的home根本沒東西....
報告完畢...明天繼續研究 ="=
« 上次編輯: 2012-09-19 23:55 由 Niko »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #21 於: 2012-09-20 06:59 »
請問smb.conf 裡面有設 Home Drive 嗎?

日京三子

  • 全區板主
  • 俺是博士!
  • *****
  • 文章數: 8825
    • 檢視個人資料
    • http://www.24online.cjb.net
Re: LDAP server + phpldapadmin 筆記
« 回覆 #22 於: 2012-09-20 13:52 »
以前在架設 samba PDC 時曾經遇到這種問題,當時的處理方式分別是:

1.  Linux  整台重新開機。
2. 你的PC  要加入 SAMBA 網域時,用的帳號不是真正的 administrator,請務必切換成 administrator <--- 一定要是這個帳號,才可以。
3. 檢視防火牆設定,不論PC端 或 Linux 端。

說不定這樣子會有解。
哈克不愛的多合一輸入平台----->新香草口味
過去的時間不斷流逝,抹去的眼淚已成追憶;
乾枯的雙手無力阻止,再會了我遠去的曾經。

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #23 於: 2012-09-20 16:27 »
請問smb.conf 裡面有設 Home Drive 嗎?

報告netman大大,有的,ldap我也試過加Home Drive的屬性進去也不行...

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #24 於: 2012-09-20 16:30 »
以前在架設 samba PDC 時曾經遇到這種問題,當時的處理方式分別是:

1.  Linux  整台重新開機。
2. 你的PC  要加入 SAMBA 網域時,用的帳號不是真正的 administrator,請務必切換成 administrator <--- 一定要是這個帳號,才可以。
3. 檢視防火牆設定,不論PC端 或 Linux 端。

說不定這樣子會有解。

報告三子大,1、3方法都已經有試過,但還是不OK,2這個方法經大大提醒小弟才想到,之前都是用有admin權限的帳號,沒真正用過administrator,這我再試試看.......


得到兩位大大的幫助真的不快點完成寫篇心得出來還真是不行了..... :P

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #25 於: 2012-09-20 16:39 »
是哦,我列出我的 smb.conf 給你參考一下:


[global]
        netbios name    = ns1
        workgroup       = example
        security        = user
        username map    = /etc/samba/smbusers
        os level        = 64
        domain master   = yes
        local master    = yes
        preferred master = yes
        wins support    = yes
        domain logons   = yes
        nt acl support  = yes

#       dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd
#       socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#       unix password sync = Yes
#       passwd program = /opt/IDEALX/sbin/smbldap-passwd -u %u
#       passwd chat = "Changing password for*\nNew password*" %n\n "*Retype new password*" %n\n

        ldap admin dn   = "cn=Manager,dc=example,dc=com"
        ldap ssl        = start tls
        passdb backend  = ldapsam:"ldap://ns1.example.com"
        ldap delete dn  = no
        ldap suffix     = dc=example,dc=com
        ldap user suffix = ou=People
        ldap group suffix = ou=Group
        ldap machine suffix = ou=Computers

#       add machine script = \
#               /usr/sbin/useradd -g users -s /bin/false -M %u
#       add user script = \
#               /usr/sbin/useradd -g users -s /bin/false -m %u
#       delete user script = \
#               /usr/sbin/userdel -r %u
#       set primary group script = \
#               /usr/sbin/usermod -g %g %u
#       add group script = \
#               /usr/sbin/groupadd %g
#       delete group script = \
#               /usr/sbin/groupdel %g
#       add user to group script = \
#               /usr/sbin/gpasswd -a %u %g
#       delete user from group script = \
#               /usr/sbin/gpasswd -r %u %g

        add user script = /usr/sbin/smbldap-useradd -m "%u"
        delete user script = /usr/sbin/smbldap-userdel "%u"
        add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
        add group script = /usr/sbin/smbldap-groupadd -p "%g"

        delete group script = /usr/sbin/smbldap-groupdel "%g"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
        set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'


        logon drive     = H:
        logon home      = \\%N\%U
        logon path      = \\%L\profiles\%U
        logon script    = logon.bat

[netlogon]
        writable        = no
        public          = no
        path            = /home/netlogon
        root preexec    = /usr/local/bin/generate_logon_script \
                '%m' '%u' '%a' '%g' '%L'
        write list      = root, Administrator, Admin

[profiles]
        comment         = Profiles Share
        path            = /home/profiles
        guest ok        = false
        writable        = yes
        create mode     = 0600
        directory mode  = 0700
        profile acls    = yes

[homes]
        path            = /home/%U
        comment         = Home Dir
        browsable       = no
        writable        = yes
        valid users     = %S

[tmp]
        comment         = temp dir
        writable        = yes
        browsable       = yes
        public          = yes
        path            = /tmp

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #26 於: 2012-09-20 17:03 »
感謝netman大,設定上差不多,但是小弟的logon path是把profiles直接放在個人home下面:\\%L\%U\profiles

晚點小弟回到家再把我的smb.conf貼上來

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #27 於: 2012-09-20 20:11 »
這是小弟的smb.conf設定

[global]
   workgroup = LDAP
   netbios name = ldap1
   security = user
   enable privileges = yes
   server string = Samba Server %v
   encrypt passwords = Yes


   unix password sync = yes
   ldap passwd sync = yes
   passwd program = /usr/sbin/smbldap-passwd -u "%u"
   passwd chat = "Changing *\nNew password*" %n\n "*Retype new password*" %n\n"

   log level = 0
   syslog = 0
   log file = /var/log/samba/log.%U
   max log size = 100000
   time server = Yes
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
   mangling method = hash2
   Dos charset = CP950
   Unix charset = UTF-8

   logon script = logon.bat
   logon drive = H:
        logon home = \\%N\%U
        logon path = \\%N\%U\profile

   domain logons = Yes
   domain master = Yes
   os level = 65
   preferred master = Yes
   wins support = yes
   passdb backend = ldapsam:ldap://ldap1.split.com.tw/
   ldap admin dn = cn=admin,dc=split,dc=com,dc=tw
   ldap suffix = dc=split,dc=com,dc=tw
        ldap group suffix = ou=Groups,ou=System
        ldap user suffix = ou=Users,ou=System
        ldap machine suffix = ou=Computers
        add user script = /usr/sbin/smbldap-useradd -m "%u"
        delete user script = /usr/sbin/smbldap-userdel "%u"
        add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
        add group script = /usr/sbin/smbldap-groupadd -p "%g"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
   set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
   ldap ssl = no

[homes]
        comment        = Home Directories
        browseable     = no
        writable       = yes
        create mode    = 0664
        directory mode = 0775
        valid users     = %S

[netlogon]
        path = /home/sambaPDC/netlogon/
        browseable = No
        read only = yes


然後,非常感謝兩位大大肯抽時間出來教導小弟....
結果,發現是我太白癡了...出問題的原因就在

# printers configuration
        #printer admin = @"Print Operators"
        #load printers = no
        #create mask = 0640
        #directory mask = 0750
        #force create mode = 0640
        #force directory mode = 0750
        #nt acl support = No
        #printing = cups
        #printcap name = cups
        #deadtime = 10
        #guest account = nobody
        #map to guest = Bad User
        #dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd
        #show add printer wizard = yes
        ; to maintain capital letters in shortcuts in any of the profile folders:
        #preserve case = yes
        #short preserve case = yes
        #case sensitive = no

小弟只設定load printers = no
卻忘了把其它參數comment起來
仔細對照了netman大大的設定才發現...真是抱歉  :P
« 上次編輯: 2012-09-20 20:13 由 Niko »

Niko

  • 活潑的大學生
  • ***
  • 文章數: 281
  • 性別: 男
    • 檢視個人資料
Re: LDAP server + phpldapadmin 筆記
« 回覆 #28 於: 2012-09-20 22:55 »
補充一下
netman大大...如果sambaPDC在ldap1,/home去掛"home"這台(用NFS)就會發生....


其實小弟的想法是,假設有100台windows,100台liunx,linux直接去掛home server,而windows就找ldap1的sambaPDC,間接的去讀home server,
這樣做的話是不是能減輕home server的load,當然是以小弟目前的整體架構來談而已,sorry~小弟能力還不足.... :P

不過後來想想,home目錄對user來說是非常重要的,那如果直接把home server做成HA,那不是更棒嗎?!
這只是小弟的一些構思而已,請各位大大別笑的太大聲.... :P
« 上次編輯: 2012-09-20 23:22 由 Niko »

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17375
    • 檢視個人資料
    • http://www.study-area.org
Re: LDAP server + phpldapadmin 筆記
« 回覆 #29 於: 2012-09-24 00:54 »
關於LAB,操作部分初步整理好了:
http://www.study-area.org/tips/smbldap/

不過今天應該沒時間錄影了,改天吧~ ^_^