En este documento se asume que bajaste el directorio completo llamado "SAMBA+LDAP+PHP-PACK" y que estas posicionado dentro de el: # cd SAMBA+LDAP+PHP-PACK Instalar OpenLdap. # installpkg openldap-binary/openldap-2.2.26-i486-1jm.tgz Tambien es necesario instalar samba con soporte para ldap: # installpkg samba-binary/samba-3.0.10-i486-1.tgz Configurar el archivo /etc/openldap/slapd.conf NOTA: el orden de los schemas son importantes. NOTA: copiar /usr/doc/samba-3.0.10/examples/LDAP/samba.schema a /etc/openldap/schemas # cp -v /usr/doc/samba-3.0.10/examples/LDAP/samba.schema /etc/openldap/schema/ Parametros minimos: Schemas: include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/samba.schema pidfile /var/run/openldap/slapd.pid argsfile /var/run/openldap/slapd.args loglevel 256 database ldbm suffix "dc=calcom-tj,dc=com,dc=mx" rootdn "cn=root,dc=calcom-tj,dc=com,dc=mx" password-hash {crypt} password-crypt-salt-format "$1$%.8$" rootpw {MD5}SIecigkf+yiK3ATRh93Jdg== directory /var/openldap-ldbm # Indices to maintain index objectClass eq idletimeout 120 allow bind_v2 ----------------------------------------------------------------------------- Puedes copiar el archivo de ejemplo: # cp -v openldaptemplate/slapd.conf /etc/openldap/ ---------------------------------------------------------------------------- El el valor del parametro "rootpw" es un hash MD5, que se puede obtener asi: # slappasswd -h {Md5} New password: Re-enter new password: {MD5}SIecigkf+yiK3ATRh93Jdg== Ejecutar el comando "slaptest" para hacer una revision de la sintaxis en el archivo de configuracion /etc/openldap/slapd.conf # slaptest -v config file testing succeeded Si regresa algun error revisar la configuracion. Ahora es tiempo de ejecutar el servidor LDAP asi: # /etc/rc.d/rc.ldap start Este script puede ser usado con los parametros: # /etc/rc.d/rc.slapd {start|stop|restart|reload|condrestart|status} Confirmar que el servicio esta corriendo: # netstat -plutn | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 25058/slapd Y ahora hay que hacer una consulta al servidor LDAP: # ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts # extended LDIF # # LDAPv3 # base <> with scope base # filter: (objectclass=*) # requesting: namingContexts # # dn: namingContexts: dc=calcom-tj,dc=com,dc=mx # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 Si sale algo asi significa que el servidor esta corriendo. Si quieres que el servidor slapd arranque al inicio del sistema puedes agregar algo asi a tu /etc/rc.d/rc.local # Start the slapd Daemon: if [ -x /etc/rc.d/rc.slapd ]; then . /etc/rc.d/rc.slapd start fi Ahora hay que instalar algunos modulos de perl necesarios para que interactuen Samba y OpenLDAP: # perl -MCPAN -e shell *NOTA: Cuando salga esto: Are you ready for manual configuration? [yes] Puedes decir que no para que use los parametros predefinidos. Ahora a instalar los modulos cpan> install Bundle::LWP Y responder el valor predeterminado a todas las preguntas. (solo teclea enter) cpan> install Bundle::CPAN Y responder el valor predeterminado a todas las preguntas. (solo teclea enter) cpan> install Crypt::SmbHash cpan> install Convert::ASN1 cpan> install URI <------ Este ya fue instalado al instalar Bundle::LWP cpan> install Digest::MD5 <------ Este modulo ya viene incluido junto con perl. cpan> install Digest::SHA1 cpan> install Authen::SASL cpan> install XML::Parser <------ Este modulo ya viene incluido junto con perl. O hacer todos de un jalon :D : cpan> install Bundle::LWP Bundle::CPAN Crypt::SmbHash Convert::ASN1 URI \ Digest::MD5 Digest::SHA1 XML::Parser cpan> install IO::Socket::SSL Dar "enter" cuando pregunta si deseas instalar la dependencia. Aqui empiezan los problemas, el modulo IO::Socket::SSL depende de Net::SSLeay, pero estos dos dan problemas en la parte de "make test" ya que parece que abren unos sockets que causan conflictos, entonces se tendran que instalar a mano: # cd /root/.cpan/build/Net_SSLeay.pm-1.25 # perl Makefile.PL # make # make install # perldoc Net::SSLeay <--- Opcional para comprobar. # perldoc Net::SSLeay::Handle <---- Opcional. Ahora instalaremos IO::Socket::SSL # cd /root/.cpan/build/IO-Socket-SSL-0.96 # perl Makefile.PL # make # make install # perldoc IO::Socket::SSL <--- para comprobar. Y por ultimo el modulo de Net::LDAP requerido para las smbldap-tools cpan> install Net::LDAP <--- Responder "n" para que no instale la dependencia. NOTA: si ejecutas alguno de los comandos anteriores es posible que responda con algo asi: Net::LDAP is up to date. Esto signfica que el modulo ya esta instalado y actualizado. Lo cual puede servir para comprobar que todo se instalo correctamente, se recomienda volver a ejecutar el comando: install nombre de cada uno de los modulos que se mencionaron anteriormente para ver que esten instalados y actualizados. Tambien se puede ejecutar desde el shell linux (bash) ejecutar: # perldoc Nombre:modulo Por ejemplo: # perldoc Net::LDAP Y va a responder con la documentacion para dicho modulo. Configurar Samba. Puedes copiar el archivo de configuracion de ejemplo: # cp -v smbtemplate/samba-confs/smb.conf /etc/samba/ y # cp -v smbtemplate/samba-confs/smbusers /etc/samba/ y # cp -v smbtemplate/samba-confs/lmhosts /etc/samba/ Cambia los parametros de smb.conf para que se adapte a tu red. Los parametros que se requieren cambiar son: TODO. workgroup = DOMINIO hosts allow = 10.0.0. 127. interfaces = eth1 lo remote announce = 10.0.0.255 ldap admin dn = cn=root,dc=calcom-tj,dc=com,dc=mx ldap suffix = dc=calcom-tj,dc=com,dc=mx Ejecutar el script: create_pro_netlogondirs.sh Este script crea los directorios para los shares "profiles" y el "netlogon" y les configura sus permisos. los directorios los crea en: "/home/samba/" por lo tanto el el directorio profiles queda /home/samba/profiles y el netlogon en /home/samba/netlogon. Puedes editar la variable "BASEDIR" de el archivo: "smbtemplate/create_pro_netlogondirs.conf" para cambiar la ruta base, por ejemplo para puedes poner a /var/lib/samba # smbtemplate/create_pro_netlogondirs.sh Y copiar el login script: # cp smbtemplate/startup.bat /home/samba/netlogon/ Iniciar el servicio Samba: # sh /etc/rc.d/rc.samba start Y ahora como root: # smbpasswd -w o # cp -v phpldapadmin/phpinfo.php /var/www/htdocs/ # chmod 755 /var/www/htdocs/phpinfo.php Entonces en un navegador poner: http://ipserver/phpinfo.php Y deberia de mostrar la informacion de php, en la seccion de: Configure Command debe de tener algo asi al final: --with-ldap' Y una seccion con: ldap LDAP Support enabled RCS Version $Id: ldap.c,v 1.130.2.11 2005/01/19 00:28:49 sniper Exp $ Total Links 0/unlimited API Version 3001 Vendor Name OpenLDAP Vendor Version 20226 Esto indica que esta cargando el modulo de ldap. :D Ahora a instalar phpldapadmin: # wget http://ovh.dl.sourceforge.net/sourceforge/phpldapadmin/phpldapadmin-0.9.6c.tar.g z o usar el que esta en el directorio: "SAMBA+LDAP+PHP-PACK/phpldapadmin" # tar -zxvf phpldapadmin/phpldapadmin-0.9.6c.tar.gz -C /var/www/htdocs/ # mv /var/www/htdocs/phpldapadmin-0.9.6c/ /var/www/htdocs/ldap # cp /var/www/htdocs/ldap/config.php.example /var/www/htdocs/ldap/config.php Ahora hay que editar estas opciones: $blowfish_secret Y poner el el hash del rootpw, por ejemplo en este caso: $blowfish_secret = '{MD5}SIecigkf+yiK3ATRh93Jdg=='; $servers[$i]['name'] Y poner el nombre de tu server, por ejemplo: $servers[$i]['name'] = 'Calcom Tijuana LDAP Server'; $servers[$i]['host'] Y poner la ip o nombre de el servidor LDAP, por ejemplo: $servers[$i]['host'] = '127.0.0.1'; $servers[$i]['base'] Y poner la base de tu directorio, por ejemplo: $servers[$i]['base'] = 'dc=calcom-tj,dc=com,dc=mx'; $servers[$i]['auth_type'] y ponerlo a cookie, por ejemplo: $servers[$i]['auth_type'] = 'cookie'; $servers[$i]['login_dn'] Y poner el dn del administrador del directorio, por ejem: $servers[$i]['login_dn'] = 'cn=root,dc=calcom-tj,dc=com,dc=mx'; $servers[$i]['default_hash'] y poner el tipo hash MD5, por ejemplo: $servers[$i]['default_hash'] = 'md5'; Si se desea usar phpldadmin para administrar el controlador de dominio se recomienda editar el archivo /var/www/htdocs/ldap/templates/template_config.php Cambair: de //$base_posix_groups="ou=People,dc=example,dc=com"; a $base_posix_groups="ou=Groups,dc=calcom-tj,dc=com,dc=mx"; Cambiar: 'sid' => 'S-1-5-21-4147564533-719371898-3834029857' a: lo que te salga con "net getlocalsid" Por ejemplo: 'sid' => 'S-1-5-21-2386360363-1418842271-2086075796' Cambiar: /$samba_base_groups = "ou=Groups,ou=samba,dc=example,dc=org"; por $samba_base_groups = "ou=Groups,dc=calcom-tj,dc=com,dc=mx"; # cp -r -v /usr/doc/samba-3.0.10/examples/LDAP/smbldap-tools/mkntpwd/ . # cd mkntpwd # make # cp -vf mkntpwd /usr/local/bin/ Ahora probaremos crear un usurio con las smbldap-tools asi: Un usuario administrador: # /opt/IDEALX/sbin/smbldap-useradd -a -G 512 -m -s /bin/false \ -d /dev/null -F "" -P administrator Changing password for administrator New password : Retype new password : Este usuario pertenece al grupo de "Domain Users" y al de "Domain Adminis" Pudes navegar facilmente y ver los valores por medio de phpldapadmin. Ahora un usuario normal: # /opt/IDEALX/sbin/smbldap-useradd -a -G 513 -m -s /bin/false -d /dev/null -F "" -P sucursal User "sucursal" already member of the group "513". Changing password for sucursal New password : Retype new password : CONFIGURE.PL root@proxy:/SAMBA+LDAP+PHP-PACK# /usr/share/smbldap-tools/configure.pl Unrecognized escape \p passed through at /usr/share/smbldap-tools/configure.pl line 194. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- 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 "." caracter -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Looking for configuration files... Samba Config File Location [/etc/samba/smb.conf] > smbldap Config file Location (global parameters) [/etc/opt/IDEALX/smbldap-tools/smbldap.conf] > smbldap Config file Location (bind parameters) [/etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf] > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Let's start configuring the smbldap-tools scripts ... . workgroup name: name of the domain Samba act as a PDC workgroup name [CALCOM-TJ] > . netbios name: netbios name of the samba controler netbios name [PDC-SRV] > . 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:'\\PDC-SRV\home\%U' logon home (leave blank if you don't want homeDirectory) [\\PDC-SRV\home\%U] > . logon path: directory where roaming profiles are stored. Ex:'\\PDC-SRV\profiles\%U' logon path (leave blank if you don't want roaming profile) [\\PDC-SRV\profiles\%U] > . home directory prefix (use %U as username) [/home/%U] > . default user netlogon script (use %U as username) [%U.cmd] > default password validation time (time in days) [45] > . ldap suffix [dc=calcom-tj,dc=com,dc=mx] > . ldap group suffix [ou=Groups] > . ldap user suffix [ou=Users] > . ldap machine suffix [ou=Computers] > . Idmap suffix [ou=Users] > . sambaUnixIdPooldn: object where you want to store the next uidNumber and gidNumber available for new users and groups sambaUnixIdPooldn object (relative to ${suffix}) [cn=NextFreeUnixId] > . ldap master server: IP adress or DNS name of the master (writable) ldap server ldap master server [127.0.0.1] > . ldap master port [389] > . ldap master bind dn [cn=root,dc=calcom-tj,dc=com,dc=mx] > . ldap master bind password [] > . ldap slave server: IP adress or DNS name of the slave ldap server: can also be the master one ldap slave server [127.0.0.1] > . ldap slave port [389] > . ldap slave bind dn [cn=root,dc=calcom-tj,dc=com,dc=mx] > . ldap slave bind password [] > . ldap tls support (1/0) [0] > . SID for domain CALCOM-TJ: SID of the domain (can be obtained with 'net getlocalsid PDC-SRV') SID for domain CALCOM-TJ [S-1-5-21-2386360363-1418842271-2086075796] > S-1-5-21-2386360363-1418842271-2086075796 . unix password encryption: encryption used for unix passwords unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA) [SSHA] > MD5 . default user gidNumber [513] > . default computer gidNumber [515] > . default login shell [/bin/bash] > /bin/false . default domain name to append to mail adress [] > calcom.com.mx -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= backup old configuration files: /etc/opt/IDEALX/smbldap-tools/smbldap.conf->/etc/opt/IDEALX/smbldap-tools/smblda p.conf.old /etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf->/etc/opt/IDEALX/smbldap-tools/s mbldap_bind.conf.old writing new configuration file: /etc/opt/IDEALX/smbldap-tools/smbldap.conf done. /etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf done.