ติดตั้ง smbldap-tools บน Fedora 9

บทความนี้จะอธิบายการติดตั้งโปรแกรม smbldap-tools เพื่อช่วยในการคอนฟิกให้ Samba สามารถที่จะตรวจสอบ (authenticate) user จาก OpenLDAP ได้ โดยจะอ้างอิงจากการ

ในบทความนี้จะถือว่าเป็นการติดตั้ง OpenLDAP ใหม่เลย โดยไม่มีข้อมูลใดๆ อยู่ใน LDAP

ติดตั้ง Perl Module ที่จำเป็น

โปรแกรม smbldap-tools เขียนด้วยภาษา Perl จะเรียกใช้ Perl Module ต่างๆ ดังนั้นก่อนที่จะใช้งานได้ ต้องติดตั้ง Perl Module เหล่านี้ก่อน สำหรับ Fedora 9 สามารถดาวน์โหลดไฟล์ต่างๆ ได้จาก Fedora 9 Everything

ตัวอย่างการติดตั้ง Perl Module ที่จำเป็นตามลำดับ บน Fedora 9

[root@fc9-min ~]# rpm -ivh perl-Digest-MD4-1.5-6.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-Crypt-SmbHash-0.12-8.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-Digest-SHA1-2.11-7.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-Net-SSLeay-1.32-5.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-IO-Socket-SSL-1.12-4.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-Compress-Raw-Zlib-2.008-20.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-IO-Compress-Base-2.008-20.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-IO-Compress-Zlib-2.008-20.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-Compress-Zlib-2.008-20.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-HTML-Tagset-3.10-8.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-HTML-Parser-3.56-5.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-URI-1.35-8.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-libwww-perl-5.808-7.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-XML-LibXML-Common-0.13-13.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-XML-NamespaceSupport-1.09-4.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh --nodeps perl-XML-SAX-0.16-5.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-XML-LibXML-1.65-5.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-LDAP-0.34-4.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-Jcode-2.06-6.fc9.noarch.rpm
[root@fc9-min ~]# rpm -ivh perl-Unicode-Map-0.112-14.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-Unicode-String-2.09-8.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-Unicode-Map8-0.12-17.fc9.i386.rpm
[root@fc9-min ~]# rpm -ivh perl-Unicode-MapUTF8-1.11-6.fc8.noarch.rpm

หลังจากติดตั้ง Perl Module ที่ต้องใช้เรียบร้อยแล้ว ก็ติดตั้งโปรแกรม smbldap-tools โดยสามารถดาวน์โหลดได้จากที่เดียวกัน

[root@fc9-min ~]# rpm -ivh smbldap-tools-0.9.5-2.fc9.noarch.rpm

รันเซอร์วิส Samba เบื้องต้น

ก่อนที่จะเริ่มคอนฟิก smbldap-tools ได้นั้น จำเป็นต้องรันเซอร์วิส Samba ก่อน โดยคอนฟิกที่ต้องเปลี่ยนในไฟล์ /etc/samba/smb.conf ในเบื้องต้นนี้คือส่วน workgroup เพราะค่านี้จะถูกอ่านตอนรันคอนฟิก smbldap-tools ส่วนคอนฟิก อื่นๆ ไว้แก้ไขที่หลังได้

ตัวอย่างไฟล์ smb.conf ที่แก้ไข ก่อนคอนฟิก smbldap-tools

 workgroup = SMBLDAP

ใช้คำสั่ง service เพื่อรันเซอร์วิส Samba

[root@fc9-min ~]# /etc/init.d/smb start
Starting SMB services:                                     [  OK  ]

แก้ไขคอนฟิก OpenLDAP

จากการติดตั้ง OpenLDAP Server ต้องเพิ่มไฟล์ schema ของ Samba เข้าไปในไฟล์ slapd.conf ด้วย

ตัวอย่างไฟล์ /etc/openldap/slapd.conf หลังการแก้ไข

include     /etc/openldap/schema/samba.schema
suffix      "dc=test-ldap,dc=com"
rootdn      "uid=root,ou=People,dc=test-ldap,dc=com"
rootpw      {SSHA}zA4XZB4pD1TUh/mRO31MC0kbUF+V0v2Y

หมายเหตุ คอนฟิกส่วน rootpw ได้มาจากการรันคำสั่ง slappasswd

รันเซอร์วิส OpenLDAP หลังจากแก้ไขคอนฟิกไฟล์ slapd.conf

[root@fc9-min ~]# /etc/init.d/ldap start
Starting slapd:                                            [  OK  ]

รันไฟล์ configure.pl เพื่อคอนฟิก smbldap-tools

ไฟล์คอนฟิกหลักของ smbldap-tools จะอยู่ในไดเร็คทอรี /etc/smbldap-tools/ ซึ่งจะประกอบด้วยคอนฟิกหลายๆ ส่วน เพื่อความสะดวกในการแก้ไขไฟล์ จากการติดตั้ง smbldap-tools จะมีไฟล์ /usr/share/doc/smbldap-tools-0.9.5/configure.pl เพื่อช่วยในการคอนฟิกไฟล์

ตัวอย่างรันไฟล์ configure.pl เพื่อสร้างคอนฟิกไฟล์ของ smbldap-tools

[root@fc9-min ~]# /usr/share/doc/smbldap-tools-0.9.5/configure.pl
$# is no longer supported at /usr/share/doc/smbldap-tools-0.9.5/configure.pl line 314.
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
       smbldap-tools script configuration
       -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Before starting, check
 . if your samba controller is up and running.
 . if the domain SID is defined (you can get it with the 'net getlocalsid')
 . you can leave the configuration using the Crtl-c key combination
 . empty value can be set with the "." character
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Looking for configuration files...
Samba Configuration File Path [/etc/samba/smb.conf] >
The default directory in which the smbldap configuration files are stored is shown.
If you need to change this, enter the full directory path, then press enter to continue.
Smbldap-tools Configuration Directory Path [/etc/smbldap-tools/] >
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Let's start configuring the smbldap-tools scripts ...
. workgroup name: name of the domain Samba act as a PDC
  workgroup name [SMBLDAP] >
. netbios name: netbios name of the samba controler
  netbios name [] > fc9-min
. logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'
  logon drive [] > H:
. logon home: home directory location (for Win95/98 or NT Workstation).
  (use %U as username) Ex:'\\fc9-min\%U'
  logon home (press the "." character if you don't want homeDirectory) [\\fc9-min\%U] >
. logon path: directory where roaming profiles are stored. Ex:'\\fc9-min\profiles\%U'
  logon path (press the "." character if you don't want roaming profile) [\\fc9-min\profiles\%U] >
. home directory prefix (use %U as username) [/home/%U] >
. default users' homeDirectory mode [700] >
. default user netlogon script (use %U as username) [] > \\fc9-min\netlogon\%U
  default password validation time (time in days) [45] >
. ldap suffix [] > dc=test-ldap,dc=com
. ldap group suffix [] > ou=Group
. ldap user suffix [] > ou=People
. ldap machine suffix [] > ou=Computers
. Idmap suffix [ou=Idmap] >
. sambaUnixIdPooldn: object where you want to store the next uidNumber
  and gidNumber available for new users and groups
  sambaUnixIdPooldn object (relative to ${suffix}) [sambaDomainName=PDCTEST] >
Use of uninitialized value $server in substitution (s///) at /usr/share/doc/smbldap-tools-0.9.5/configure.pl line 244, <STDIN> line 17.
. ldap master server: IP adress or DNS name of the master (writable) ldap server
Use of uninitialized value $example_value in concatenation (.) or string at /usr/share/doc/smbldap-tools-0.9.5/configure.pl line 161, <STDIN> line 17.
Use of uninitialized value $example_value in string at /usr/share/doc/smbldap-tools-0.9.5/configure.pl line 162, <STDIN> line 17.
  ldap master server [] > 127.0.0.1
. ldap master port [389] >
. ldap master bind dn [] > uid=root,ou=People,dc=test-ldap,dc=com
. ldap master bind password [] >
. ldap slave server: IP adress or DNS name of the slave ldap server: can also be the master one
Use of uninitialized value $server in string at /usr/share/doc/smbldap-tools-0.9.5/configure.pl line 262, <STDIN> line 21.
  ldap slave server [] > 127.0.0.1
. ldap slave port [389] >
. ldap slave bind dn [] > uid=root,ou=People,dc=test-ldap,dc=com
. ldap slave bind password [] >
. ldap tls support (1/0) [0] >
. SID for domain PDCTEST: SID of the domain (can be obtained with 'net getlocalsid fc9-min')
  SID for domain PDCTEST [S-1-5-21-3697236364-1357617849-1956783867] >
. unix password encryption: encryption used for unix passwords
  unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] >
. default user gidNumber [513] >
. default computer gidNumber [515] >
. default login shell [/bin/bash] >
. default skeleton directory [/etc/skel] >
. default domain name to append to mail adress [] >
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Use of uninitialized value $# in concatenation (.) or string at /usr/share/doc/smbldap-tools-0.9.5/configure.pl line 314, <STDIN> line 33.
backup old configuration files:
  /etc/smbldap-tools/smbldap.conf->/etc/smbldap-tools/smbldap.conf.old
  /etc/smbldap-tools/smbldap_bind.conf->/etc/smbldap-tools/smbldap_bind.conf.old
writing new configuration file:
  /etc/smbldap-tools/smbldap.conf done.
  /etc/smbldap-tools/smbldap_bind.conf done.

รันคำสั่ง smbldap-populate

โปรแกรม smbldap-tools จะมีคำสั่ง smbldap-populate เพื่อช่วยเพิ่มข้อมูลเข้าไปใน OpenLDAP โดยจะอ้างอิงจากคอนฟิกที่รันด้วย configure.pl

หมายเหตุ ในที่นี้จะถือว่า ไม่มีข้อมูลใดๆ อยู่ใน OpenLDAP เลย

ตัวอย่างการรันคำสั่ง smbldap-populate

[root@fc9-min openldap]# smbldap-populate
Populating LDAP directory for domain PDCTEST (S-1-5-21-3697236364-1357617849-1956783867)
(using builtin directory structure)
adding new entry: dc=test-ldap,dc=com
adding new entry: ou=People,dc=test-ldap,dc=com
adding new entry: ou=Group,dc=test-ldap,dc=com
adding new entry: ou=Computers,dc=test-ldap,dc=com
adding new entry: ou=Idmap,dc=test-ldap,dc=com
adding new entry: uid=root,ou=People,dc=test-ldap,dc=com
adding new entry: uid=nobody,ou=People,dc=test-ldap,dc=com
adding new entry: cn=Domain Admins,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Domain Users,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Domain Guests,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Domain Computers,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Administrators,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Account Operators,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Print Operators,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Backup Operators,ou=Group,dc=test-ldap,dc=com
adding new entry: cn=Replicators,ou=Group,dc=test-ldap,dc=com
adding new entry: sambaDomainName=PDCTEST,dc=test-ldap,dc=com
Please provide a password for the domain root:
Changing UNIX and samba passwords for root
New password: ldap1234
Retype new password: ldap1234

หมายเหตุ Password ที่ใส่ในส่วนท้ายของคำสั่ง smbldap-populate เป็น rootpw ที่ระบุในไฟล์ /etc/openldap/slapd.conf

รันคำสั่ง smbpasswd

รันคำสั่ง smbpasswd เพื่อใส่ ldap admin password ที่ Samba ใช้ในการเชื่อมต่อกับ LDAP

[root@fc9-min ~]# smbpasswd -w ldap1234
Setting stored password for "uid=root,ou=People,dc=test-ldap,dc=com" in secrets.tdb

หมายเหตุ ‘ldap1234’ คือ rootpw ที่ระบุในไฟล์ /etc/openldap/slapd.conf

คอนฟิกให้ลีนุกซ์ ตรวจสอบผู้ใช้งานจาก LDAP

ใช้คำสั่ง authconfig-tui เพื่อคอนฟิกให้ ลีนุกซ์ตรวจสอบผู้ใช้งานหรือ authenticate จาก LDAP

คอนฟิก Samba ให้ authenticate จาก LDAP

แก้ไขคอนฟิกไฟล์ของ Samba เพื่อให้ authenticate จาก ldap

ตัวอย่างไฟล์ /etc/samba/smb.conf ที่แก้ไขเพิ่มเติม

 workgroup = SMBLDAP
 security = user
 passdb backend = ldapsam:ldap://127.0.0.1/
 ldap suffix = dc=test-ldap,dc=com
 ldap admin dn = uid=root,ou=People,dc=test-ldap,dc=com
 ldap group suffix = ou=Group
 ldap user suffix = ou=People

เพิ่ม user ใน LDAP

[root@fc9-min ~]# smbldap-useradd -a -m -s /bin/bash -d /home/user01 -P user01
Changing UNIX and samba passwords for user01
New password:
Retype new password:

ทดสอบด้วยคำสั่ง smbclient

ใช้คำสั่ง smbclient เพื่อทดสอบการใช้ Samba เพื่อ authenticate ผู้ใช้จาก LDAP

ตัวอย่างการทดสอบด้วยคำสั่ง smbclient

[root@fc9-min samba]# smbclient '\\localhost\user01' -U user01
Enter user01's password:
Domain=[fc9-min] OS=[Unix] Server=[Samba 3.2.3-0.20.fc9]
smb: \> dir
  .                                   D        0  Sat Oct 18 12:21:59 2008
  ..                                  D        0  Sat Oct 18 11:38:30 2008
  .bashrc                             H      124  Sat Oct 18 11:38:30 2008
  .bash_logout                        H       18  Sat Oct 18 11:38:30 2008
  .bash_profile                       H      176  Sat Oct 18 11:38:30 2008
                60160 blocks of size 65536. 55959 blocks available
smb: \> exit

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.