[LDAP]OpenLDAP+Samba整合

回覆文章
schumi
Site Admin
文章: 696
註冊時間: 2004-04-15 14:30:34

[LDAP]OpenLDAP+Samba整合

文章 schumi »

http://www.nep-hk.com/drupal/node/55

之前試過在Ubuntu Desktop 9.10下安裝LDAP及SAMBA服務,但來到Ubuntu Desktop 10.04及10.10下,有些地方已經改變了,今天順道也更新一下。

01. 新增一暫存資料夾,用於存放安裝時的設定檔案,用後可把它刪除。
sudo mkdir /tmp/ldap
cd /tmp/ldap

02. 在暫存資料夾下,新增一個檔案,db.ldif,及貼上以下內容。
sudo gedit /tmp/ldap/db.ldif
# Load dynamic backend modules
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: {0}back_hdb

# Create the database
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: password
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq

03. 其中olcSuffix、olcRootDN及olcRootPW,分別代表您的域名(domain name)、LDAP管理員名稱(admin login)及密碼(password)。其中域名的表達方式,如example.com,請以dc=example,dc=com代表。

04. 在暫存資料夾下,新增一個檔案,base.ldif,及貼上以下內容。
sudo gedit /tmp/ldap/base.ldif
dn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
o: example.com
dc: example
description: LDAP Administrator

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: password
description: LDAP administrator

05. 在暫存資料夾下,新增一個檔案,config.ldif,及貼上以下內容。
sudo gedit /tmp/ldap/config.ldif
# dn: cn=config
# changetype: modify
# delete: olcAuthzRegexp

# dn: olcDatabase={-1}frontend,cn=config
# changetype: modify
# delete: olcAccess

# dn: olcDatabase={0}config,cn=config
# changetype: modify
# delete: olcRootDN

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: password

dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess

06. 打開終端機,用以下命令安裝LDAP套件。
sudo apt-get -y install slapd ldap-utils

07. 更改終端機下資料夾路徑為,/etc/ldap。
cd /etc/ldap

08. 新增常用撮要至LDAP數據庫內。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif

09. 載入LDAP模組及初始化數據庫。
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap/db.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap/base.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /tmp/ldap/config.ldif

10. 安裝SAMBA套件。
sudo apt-get install samba samba-doc smbldap-tools samba-common-bin samba4-clients

11. 複製samba.schema檔案至相關資料夾。
sudo cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
sudo gzip -d /etc/ldap/schema/samba.schema.gz

12. 新增SAMBA設置檔案,及貼上以下內容。
cd /tmp/ldap
sudo gedit schema_convert.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/collective.schema
include /etc/ldap/schema/corba.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/duaconf.schema
include /etc/ldap/schema/dyngroup.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/java.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/openldap.schema
include /etc/ldap/schema/ppolicy.schema
include /etc/ldap/schema/samba.schema

13. 新增一暫存資料夾,/tmp/ldif_output,用於存放SAMBA輸出檔案。
sudo mkdir /tmp/ldif_output

14. 執行slapcat,轉換SAMBA撮要檔案至暫存資料夾。
sudo slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif

15. 更改剛轉換檔案內容,刪除檔案內{12}標籤。
sudo gedit /tmp/cn\=samba.ldif
dn: cn=samba,cn=schema,cn=config
...
cn: samba

16. 同時,刪除檔案內以下內容。
structuralObjectClass: olcSchemaConfig
entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
creatorsName: cn=config
createTimestamp: 20080827045234Z
entryCSN: 20080827045234.341425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080827045234Z

17. 執行ldapadd命令,新增撮要檔案至LDAP數據庫內。
sudo ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=samba.ldif

18. 新增檔案,samba_indexes.ldif,及貼上以下內容。
sudo gedit samba_indexes.ldif
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
# olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
# olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

19. 執行ldapmodify命令,載入新內容至LDAP數據庫。
sudo ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif

20. 新增一個檔案,acl.ldif,及貼上以下內容。
cd /tmp/ldap
sudo gedit acl.ldif
dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdMustChange by dn="cn=admin,dc=example,dc=com" write by anonymous read by self write by * none
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read

21. 執行ldapmodify命令,載入新內容至LDAP數據庫。
sudo ldapmodify -x -D cn=admin,cn=config -W -f /tmp/ldap/acl.ldif

22. 您可執行ldapmodify命令,檢查現時LDAP數據庫中內容。
sudo ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb

23. 執行smbldap-tools命令,設置SAMBA工作環境。
sudo gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
sudo perl /usr/share/doc/smbldap-tools/configure.pl

24. 根據您的需要,回答smbldap-tools中的問題。如在中途出現錯誤,您可打開/etc/smbldap-tools/smbldap.conf檔案、/etc/smbldap-tools/smbldap_bind.conf檔案及/etc/samba/smb.conf檔案,更改您的設定。

25. 以下是根據以上例子,檔案/etc/smbldap-tools/smbldap.conf的建議內容。
sudo gedit /etc/smbldap-tools/smbldap.conf
SID="S-1-5-21-4252226116-2560175468-428525971" # use the default of your setting
sambaDomain="WORKGROUP"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
suffix="dc=example,dc=com"
usersdn="ou=user,${suffix}"
computersdn="ou=computer,${suffix}"
groupsdn="ou=group,${suffix}"
idmapdn="ou=idmap,${suffix}"
hash_encrypt="MD5"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="755"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
mailDomain=""

26. 檔案/etc/smbldap-tools/smbldap.conf的建議內容。
sudo gedit /etc/smbldap-tools/smbldap_bind.conf
slaveDN="cn=admin,dc=example,dc=com"
slavePw="password"
masterDN="cn=admin,dc=example,dc=com"
masterPw="password"

27. 檔案/etc/samba/smb.conf的建議內容。
sudo gedit /etc/samba/smb.conf
# obey pam restrictions = yes
passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=example,dc=com
ldap user suffix = ou=user
ldap group suffix = ou=group
ldap machine suffix = ou=computer
ldap idmap suffix = ou=idmap
ldap admin dn = cn=admin,dc=example,dc=com
ldap passwd sync = yes
...
[share]
comment = Samba_Share
writeable = yes
browseable = yes
read only = no
path = /home/%U
create mask = 0755
directory mask = 0755

28. 執行smbldap-populate脚本,將SAMBA預設用戶、群組及LDAP物件加到數據庫內。
sudo smbldap-populate

29. 重新載入SAMBA服務。
sudo service smbd restart

30. 執行smbpasswd命令,以便將LDAP密碼,加到SAMBA服務內。
sudo smbpasswd -w secret

31. 新增SAMBA用戶至LDAP數據庫內。更改以下username為您需要的用戶名稱。
sudo smbldap-useradd -a -P username

32. 如需要LDAP數據庫內,刪除SAMBA用戶,可執行smbldap-userdel命令。更改以下username為您需要的用戶名稱。
sudo smbldap-userdel username

33. 新增用戶至SAMBA群組可執行smbldap-groupmod -m命令。更改以下username及groupname為您需要的用戶及群組名稱。
sudo smbldap-groupmod -m username groupname

34. 刪除SAMBA群組內用戶,可執行smbldap-groupmod -x命令。更改以下username及groupname為您需要的用戶及群組名稱。
sudo smbldap-groupmod -x username groupname

35. 新增SAMBA電腦至LDAP數據庫內。更改以下computername為您需要的電腦名稱。
sudo smbldap-useradd -t 0 -w

36. 新建SAMBA用戶工作資料夾位置。
sudo mkdir /home/username

37. 同時,亦需指定工作資料夾權限。請留意,此設定需不會與/etc/samba/smb.conf檔案內設定有所衝突。
sudo chmod 755 /home/username

38. 在系統中,新增與SAMBA用戶相同的用戶名稱。
sudo useradd -d /home/username username
回覆文章

回到「Linux」