8
linux en la empresa Integrar sistemas GNU/Linux con MS-Windows 34 Linux+ 10/2007 [email protected] S amba es un servidor/cliente de software libre que implementa el protocolo de red para com- partir recursos conocido como SMB (Server Message Block), actualmente como CIFS (Common Internet Filesystem). Esto permite que máquinas con GNU/ Linux o Unix actúen como servidores o clientes en redes Microsoft, nos permite compartir diferentes tipos de recur- sos: archivos, directorios, colas de impresión, etc. Aparte de dar servicio a estos recursos la última versión (Samba v.3) también tiene la posibilidad de validar usuarios ac- tuando como PDC “Controlador Principal de Dominio” siendo miembro de un dominio existente en la red o bien siendo el servidor maestro del dominio. En infraestructuras complejas en donde la adminis- tración de cuentas de usuario se puede complicar, la con- figuración básica de Samba no nos alcanza y es necesario tener un buen servicio de directorio que unifique todo tipo de cuentas de usuario en una sola base de datos de acceso ligero, con el objetivo de no tener diferentes bases de datos (usuarios Linux, usuarios Windows, ...) que tendríamos que administrar por separado. OpenLDAP es una versión libre de LDAP (Lightweight Directory Access Protocol) que se basa en el estándar ISO X.500 y nos permite organizar de manera jerárquica todo tipo de cuentas, grupos, puntos de montaje, cuentas de equipos, etc. En este artículo vamos a tratar la configuración y puesta en marcha tanto de Samba como de OpenLDAP y la integración de los mismos. Configuración del servidor Samba Lo primero de todo es instalar los paquetes referentes a Samba, en este artículo hemos utilizado la distribución Debian etch. Los paquetes necesarios son: samba, samba- common y samba-doc que también están disponibles en otras distribuciones como Fedora Core en RPM, Ubuntu, etc. Una vez instalados los paquetes procedemos a la configu- ración básica del servidor, aunque Debian ya preconfigura algunas cosas como por ejemplo el tipo de ejecución del servicio: daemon o bien a través del servicio inetd Figura 2, seleccionar si queremos crear una base de datos de usuarios, el nombre del grupo de trabajo/dominio Figura 1. Aparte nos va a pedir una serie de parámetros adicio- nales de configuración como: utilizar contraseñas cifradas, permitir trabajar con DHCP de manera conjunta con el servidor de nombres WINS. Este último nos permite que el Samba: Servidor para redes Microsoft Cuando se trata de integrar sistemas GNU/Linux con MS-Windows, hay muchos puntos a tener en cuenta, tanto en servicios como en administración de los mismos. Como por ejemplo es la utilización de Samba como servidor principal de dominio o PDC (Prinicipal Domain Controller) para dar servicios de: validación de usuarios, ficheros, directorios, colas de impresión, etc., a estaciones de trabajo con MS-Windows. Tomeu Capó Capó

Samba_ Servidor para redes Microsoft

Embed Size (px)

DESCRIPTION

amba es un servidor/cliente de software libre como de OpenLDAP y la integración de los mismos. Linux+ 10/2007 siendo miembro de un dominio existente en la red o bien (usuarios Linux, usuarios Windows, ...) que tendríamos usuarios, el nombre del grupo de trabajo/dominio Figura Lo primero de todo es instalar los paquetes referentes a Una vez instalados los paquetes procedemos a la configu- algunas cosas como por ejemplo el tipo de ejecución del siendo el servidor maestro del dominio.

Citation preview

Page 1: Samba_ Servidor para redes Microsoft

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

34 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

35www.lpmagazine.org

linux

@so

ftwar

e.co

m.p

l

Samba es un servidor/cliente de software libre que implementa el protocolo de red para com-partir recursos conocido como SMB (Server Message Block), actualmente como CIFS (Common

Internet Filesystem). Esto permite que máquinas con GNU/Linux o Unix actúen como servidores o clientes en redes Microsoft, nos permite compartir diferentes tipos de recur-sos: archivos, directorios, colas de impresión, etc. Aparte de dar servicio a estos recursos la última versión (Samba v.3) también tiene la posibilidad de validar usuarios ac-tuando como PDC “Controlador Principal de Dominio” siendo miembro de un dominio existente en la red o bien siendo el servidor maestro del dominio.

En infraestructuras complejas en donde la adminis-tración de cuentas de usuario se puede complicar, la con-figuración básica de Samba no nos alcanza y es necesario tener un buen servicio de directorio que unifique todo tipo de cuentas de usuario en una sola base de datos de acceso ligero, con el objetivo de no tener diferentes bases de datos (usuarios Linux, usuarios Windows, ...) que tendríamos que administrar por separado. OpenLDAP es una versión libre de LDAP (Lightweight Directory Access Protocol) que se

basa en el estándar ISO X.500 y nos permite organizar de manera jerárquica todo tipo de cuentas, grupos, puntos de montaje, cuentas de equipos, etc. En este artículo vamos a tratar la configuración y puesta en marcha tanto de Samba como de OpenLDAP y la integración de los mismos.

Configuración del servidor SambaLo primero de todo es instalar los paquetes referentes a Samba, en este artículo hemos utilizado la distribución Debian etch. Los paquetes necesarios son: samba, samba-common y samba-doc que también están disponibles en otras distribuciones como Fedora Core en RPM, Ubuntu, etc. Una vez instalados los paquetes procedemos a la configu-ración básica del servidor, aunque Debian ya preconfigura algunas cosas como por ejemplo el tipo de ejecución del servicio: daemon o bien a través del servicio inetd Figura 2, seleccionar si queremos crear una base de datos de usuarios, el nombre del grupo de trabajo/dominio Figura 1. Aparte nos va a pedir una serie de parámetros adicio-nales de configuración como: utilizar contraseñas cifradas, permitir trabajar con DHCP de manera conjunta con el servidor de nombres WINS. Este último nos permite que el

Samba: Servidor para redes Microsoft

Cuando se trata de integrar sistemas GNU/Linux con MS-Windows, hay muchos puntos a tener en cuenta, tanto en servicios como en administración de los mismos. Como por ejemplo es la utilización de Samba como servidor principal de dominio o PDC (Prinicipal Domain Controller) para dar servicios de: validación de usuarios, ficheros, directorios, colas de impresión, etc., a estaciones de trabajo con MS-Windows.

Tomeu Capó Capó

Page 2: Samba_ Servidor para redes Microsoft

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

34 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

35www.lpmagazine.org

servidor DHCP pueda proveer información sobre otros servidores de WINS (Windows Internet Name Service) que haya en la red.

Una vez realizada la tarea de instalación el servicio arranca automáticamente, con los parámetros por defecto.

Configuración básicaAhora vamos a revisar el fichero de configu-ración que nos genera el programa de insta-lación de manera automática y que reside en /etc/samba llamado smb.conf. Este fichero está dividido en una serie de secciones:

• global: Configuración global del servidor.• homes: Configuración del recurso referen-

te al directorio home de cada usuario• printers: Recurso sobre las colas de im-

presión.

Cuando revisemos el fichero de configuración lo que tendremos que mirar es si el nombre del dominio/grupo de trabajo es el correcto,

como podemos observar en el Listado 1, es el primer parámetro: workgroup de la sección glo-bal. Aparte también podemos cambiar la des-cripción del servidor con server string y el nom-bre del equipo (de cara a la red Microsoft) con netbios name. Si queremos contraseñas cifradas activamos encrypt passwords. Todos estos pará-metros son configurados desde la interfaz de instalación.

Un parámetro importante es security que establece el nivel de seguridad de nuestro servi-dor Samba, por defecto el nivel es user, esto sig-nifica que para acceder al servidor es necesario validarse usando un usuario existente dentro de la base de datos de usuarios de Samba es-pecificada con otro parámetro, el passdb backend. Hay diferentes niveles de seguridad:

• user: En este nivel el cliente envía una petición de iniciar la sesión de manera directa, éste proporciona el usuario y con-traseña. El servidor recoge el usuario/con-traseña y acepta o niega el acceso.

• share: Cada cliente valida el usuario de manera separada, el cliente pide y poste-riormente envía la contraseña cada vez que se solicita un recurso compartido del servidor sin necesidad de mandar el usua-rio.

• server: Los usuarios se validan utilizando un servidor externo, este parámetro va en conjunción con otro parámetro, el password server, donde especificamos el nombre o IP del servidor de contraseñas (podría ser un servidor de Microsoft) .

• domain: Utilizado normalmente en ser-vidores que son secundarios, nos da la posibilidad de usar una base de datos central de cuentas de usuario del contro-lador principal de dominio. Este paráme-tro necesita tener habilitado el cifrado de contraseñas con encrypt passwords.

En cuanto a los recursos por defecto, suele traer tres recursos básicos: directorio de cada usua-rio (homes), impresoras (printers) y el recurso oculto (print$) donde estarían los controla-dores para Windows de las impresoras. Los parámetros de un recurso pueden ser variados, desde el nombre (nombre de la sección) hasta usuarios válidos para lectura/escritura. En el caso de los directorios de cada usuario, en lugar de tener un recurso por usuario tenemos una sola sección que tiene la configuración del

Figura 2. Selección del modo de ejecución del servicio

Figura 1. Configuración del grupo de trabajo

Listado 1. Fichero de configuración básico: smb.conf

[global]

workgroup = LINUXPLUS

netbios name = servidor

security = user

server string = Servidor de red %h

log file = /var/log/samba/log.%m

max log size = 1000

syslog = 0

panic action = /usr/share/samba/

panic-action %d

encrypt passwords = true

passdb backend = tdbsam

obey pam restrictions = yes

invalid users = root

passwd program = /usr/bin/passwd %u

passwd chat = *Enter\snew\sUNIX\

spassword:* %n\n *Retype\snew\

sUNIX\

spassword:* %n\n *password\supdated

\ssuccessfully* .

socket options = TCP_NODELAY

...

# Recursos compartidos

Page 3: Samba_ Servidor para redes Microsoft

36 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

37www.lpmagazine.org

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

recurso referente al directorio de un usuario dado como se puede observar en el Listado 2. La sección referente a un recurso puede conte-ner: una descripción comment, si puede verse en entorno de red browseable, si puede escribirse writeable, usuarios válidos valid users, el direc-torio donde está ubicado en el servidor path, y muchos más parámetros que se pueden encon-trar en el manual del smb.conf (man smb.conf). Por defecto el recurso homes sólo se comparte en modo lectura, si se necesita trabajar con él es mejor cambiar la propiedad writeable a yes como está en el ejemplo del Listado 2.

En el tema de los recursos como impre-soras, Samba comparte todas las impresoras que tiene configurado el servidor. Lo que puede suceder es que cuando queramos uti-lizar alguna impresora el cliente Windows se ponga a buscar los drivers, para ello Samba dispone de un recurso oculto el print$ que apunta a un directorio del servidor el /var/

lib/samba/printers. Donde podemos colocar todos los drivers para Windows de nuestras impresoras.

Configuración de nuestros recursosSi se quisiera se podría crear un recurso ge-neral para que los usuarios puedan pasarse ficheros a través de estos recursos como se puede ver en el Listado 3, si existen 2 gru-pos: gestión, contabilidad y que cada grupo solamente pueda leer y escribir dentro de su recurso. En el parámetro valid users se pueden poner también grupos con el prefijo @, tam-bién utilizamos un nuevo parámetro llamado write list que nos permite definir una lista de usuarios que pueden escribir dentro de este recurso. Es muy importante que los directorios reales del sistema también tengan asignados los grupos y permisos pertinentes, en este caso /usr/local/datos/gestion es del grupo gestióny puede leer/escribir, de manera análoga se haría al directorio de contabilidad. Por defecto cualquier recurso nuevo se puede ver una vez reiniciado el servicio sin necesidad de ponerle el parámetro browseable.

Truco: Siempre que se haya cambiado alguno de los parámetros de la configuración del fichero smb.conf sería conveniente com-probar que la configuración no tiene errores, para ello utilizaremos el comando testparm.

Hay algunos otros parámetros de gran in-terés como pueden ser: force group, create mode y directory mode que suelen ser necesarios en el momento que queramos forzar que los archi-vos que se creen dentro de estos directorios sean de un grupo determinado con force group o bien forzar los permisos de los archivos con un valor octal con create mode de la misma for-ma que lo hacemos con chmod en la terminal de

Linux. En el ejemplo hemos configurado que los ficheros que se creen dentro de contabilidad tengan los permisos de lectura/escritura para el usuario propietario y el grupo correspon-diente, en este caso contabilidad.

Configuración de cuentas de usuarioUna vez configurados los recursos, será ne-cesario crear los grupos y usuarios que van a usar el servidor Samba. Primero en el siste-ma y luego activar las cuentas de Samba, ya que van por separado tanto las cuentas como las contraseñas (todo con el super-usuario del sistema root):

• Creamos los grupos en el sistema: add-group gestion; addgroup contabilidad

• Creamos el/los usuarios en el sistema: adduser usuario

• Agregamos el usuario a algún grupo creado: adduser usuario gestion

• Activamos y asignamos contraseña a la cuenta Samba: smbpasswd -a -U usuario

Podríamos tener algún usuario ya creado dentro del sistema que deseáramos habilitarle como usuario Samba, esto lo podemos hacerutilizando el comando smbpasswd (por ejemplo: smbpasswd tomeu) y añadirlo a un grupoexistente como por ejemplo: adduser tomeu contabilidad. Seguidamente debemos reiniciar el servicio de Samba para que coja la configura-ción smb.conf, en Debian: /etc/init.d/samba restart.

Figura 3. Configuración del grupo de trabajo en Windows XP Home Edition

Figura 4. Accediendo al servidor a través de Entorno de red

Listado 2. Fichero de configuración smb.conf (Recursos)

[homes]

comment = Home Directories

browseable = no

writable = yes

create mask = 0700

directory mask = 0700

valid users = %S

[printers]

comment = All Printers

browseable = no

path = /var/spool/samba

printable = yes

public = no

writable = no

create mode = 0700

[print$]

comment = Printer Drivers

path = /var/lib/samba/printers

browseable = yes

read only = yes

guest ok = no

Page 4: Samba_ Servidor para redes Microsoft

36 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

37www.lpmagazine.org

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

Más adelante vamos a ver otro sistema que nos permitirá una mejor gestión de las cuentas como puede ser el sistema de directorio OpenLDAP.

Configuración de los clientes MS-WindowsA partir de aquí ya se puede acceder al ser-vidor Samba con un cliente MS-Windows, pero antes vamos a configurar el cliente. Primero será necesario asignar el grupo de trabajo del equipo, por eso vamos a: Mi PC > Propiedades > Nombre de equipo > Cambiar ... y

en donde pone “Grupo de trabajo:” (Figura 3) vamos a poner el mismo grupo de trabajo (variable workgroup) que tengamos en la configuración del servidor. Después nos va a pedir que reiniciemos el equipo, una vez haya reiniciado ya podremos ir a: o bien a través de Entorno de Red (Figura 4) o bien en Ejecutar poniendo la dirección IP o nom-bre del servidor (por ejemplo: \\servidor). Si el nombre de usuario y contraseña del equi-po coinciden con las que hemos creado den-tro del servidor no nos va pedir nada, pero

si no, pasará lo que podemos observar en la Figura 4.

Una vez accedido al servidor nos vamos a encontrar casi todos los recursos que hemos definido dentro del smb.conf como se puede ver en la Figura 5, los dos recursos contabili-dad, gestion y además el recurso que pertenece al usuario actual, o sea su home, donde podrá poner sus documentos, imágenes, etc., pero por ejemplo sólo podrá acceder y escribir dentro del recurso compartido de gestion ya que así se ha configurado.

Truco: Para listar los usuarios conectados al servidor Samba y ver los recursos y ficheros que están usando, utilizaremos el comando smbstatus.

Configuración de Samba como PDC Como hemos comentado al principio del artícu-lo aveces la infraestructura es tan compleja que es necesario que además de compartir recursos necesitemos que Samba nos sirva para: auten-ticar el inicio de sesión de los clientes, gestionar los perfiles de cada usuario y que además nos permita conectar más de un servidor a la red

Figura 5. Los recursos compartidos del servidor

Figura 6. Asistente de Windows XP Professional para unir el equipo al dominio

Listado 4. Parámetros que convierten a Samba en PDC

domain master = yes

local master = yes

domain logons = yes

preferred master = yes

os level = 65

Listado 3. Configuración de recursos extras en smb.conf.

[gestion]

comment = Documentos compartidos de

gestión

path = /usr/local/datos/gestion

valid users = @gestion

write list = @gestion

force group = gestion

create mode = 770

directory mode = 770

[contabilidad]

comment = Documentos

compartidos de contabilidad

path = /usr/local/datos/

contabilidad

valid users = @contabilidad

write list = @contabilidad

force group = contabilidad

create mode = 770

directory mode = 770

Page 5: Samba_ Servidor para redes Microsoft

38 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

39www.lpmagazine.org

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

y que sean secundarios de éste. En resumen lo mismo que haría un servidor de Microsoft (por ejemplo: Windows 2003 Server).

En una red Microsoft está el concepto llamado Network Browsing, el cual permite a Windows y a Samba aparecer en el Entorno de Red de los clientes Windows. El Network Browsing es el que permite a los clientes generar la lista de servidores Windows y Samba que hay en la red, esto es gracias a unos mensajes que se transmiten vía UDP en broadcast a los clientes y servidores. Para esto es necesario tener un servidor que actúe de master browser, el cual coteja las listas de los masters locales de todas las sub-redes así es posible ir al Entorno de Red y poder ver cualquier grupo de trabajo y sus servidores. Para ello tendremos que añadir unos parámetros al fichero /etc/samba/smb.conf para activar la funcionalidad de PDC a Samba, estos parámetros se colocarán dentro de la sección global, de la forma especificada en el Listado 4.

Como hemos dicho antes es necesario definir un servidor como master browser, para hacerlo vamos a activar el parámetro domain master, también vamos hacer que Samba permita autentificar el inicio de sesión de los usuarios con el parámetro domain logons.

Una vez incluidos estos parámetros referentes al PDC, tendremos que añadir un par de parámetros referentes a la creación automática de usuarios y equipos. Para eso es necesario habilitar el uso del usuario root como usuario de administración con el parámetro (admin users) y su correspondiente contraseña con smbpasswd, tendríamos que

asegurarnos que en el fichero smb.conf no esté el parámetro invalid users con el valor de root. Como se puede ver en el Listado 5 tenemos dos parámetros adicionales que definen las utilidades que tienen que ejecutar Samba cuando un equipo Windows se añade al dominio, esto es debido a que cada equipo del dominio tiene una cuenta del sistema asociada (del estilo pc-pruebas$).

Una vez configurado Samba como PDC será necesario reiniciar el daemon para que los cambios tengan efecto. Ahora lo único que hace falta es ver como se configurarán los clientes Windows, en este caso vamos a unir al dominio un equipo con Windows XP Professional. Para hacerlo vamos a repetir los mismos primeros pasos: Mi PC > Propiedades > Nombre de equipo > Id. de Red, esto nos va sacar un asistente como el de la Figura 6 que nos va a hacer un par de preguntas referentes al equi-po y a la red, en principio vamos a decirle que el equipo forma parte de una red organizativa y que la red es con dominio. Seguidamente nos pedirá la información de usuario y del domi-nio, como vemos en la Figura 7, vamos a po-nerle el nombre de nuestro dominio y un usu-ario existente en el servidor Samba. Después nos pedirá el nombre del equipo y el nombre del dominio (LINUXPLUS en nuestro caso), a partir de aquí nos va a pedir el usuario de administración (root en nuestro caso), la con-traseña y el dominio para que nos cree el usu-ario referente al equipo dentro del servidor como podemos ver en la Figura 8.

Configuración del servicio de directorio OpenLDAP Cuando las infraestructuras son muy grandes y se hace muy pesada la gestión de múltiples cuentas de usuario, grupos, equipos, etc., se ha-ce necesario el uso de servicios que faciliten esa gestión, uno de estos servicios es OpenLDAP una versión libre de LDAP (Lightweight Direc-tory Access Protocol) que nos permite unificar todo tipo de cuentas de usuario en una sola base datos de acceso ligero. LDAP también puede servir como directorio de contactos de una empresa, porque aparte también nos per-mite organizar en forma de árbol la estructura de la empresa utilizando unidades organiza-tivas o OU (Organizational Unit) que actúan

Figura 7. Asistente nos pregunta nombre de usuario y dominio

Figura 8. Autenticarse como administrador para unirse al dominio

Listado 5. Parámetros referentes a la creación automática de cuentas de equipos

admin users = root

add user script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false "%u"

add machine script = /usr/sbin/useradd -d /dev/null -g 100 -s /bin/false

"%u"

Page 6: Samba_ Servidor para redes Microsoft

38 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

39www.lpmagazine.org

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

como carpetas organizando usuarios, grupos, equipos, etc., como podemos ver en la Figu-ra 9. En esta sección nos vamos a centrar en la puesta en marcha del servicio y la configura-ción de Samba para que utilice el OpenLDAP para la gestión de usuarios y demás.

Lo primero será instalar el servidor de OpenLDAP si no tenemos ninguno y las uti-lidades necesarias, como dijimos al principio trabajamos con la distribución Debian etch, pero estos paquetes también están disponi-

bles con otras distribuciones de Linux como por ejemplo: Ubuntu, Red Hat, etc. Los paquetes en Debian son: slapd, ldap-utils. Una vez descargados los paquetes vamos a proceder a su configuración de manera automática, pero antes nos puede pedir si queremos omitir hacer la configuración, le decimos que no. Seguidamente nos empe-zará pidiendo parámetros sobre el nombre del dominio (linuxplus.com en nuestro caso) y nombre de la organización, finalmente la

contraseña del administrador del directorio LDAP. Una vez instalado y configurado ya tendríamos que tener la base de datos LDAP creada y el servicio slapd en marcha, pode-mos probar de listar el contenido de la base de datos con el comando slapcat que nos va a devolver en principio dos elementos: la raíz del árbol y el nodo referente al usuario de administración.

Integración de Samba con OpenLDAPPara poder integrar Samba con OpenLDAP es necesario unas utilidades llamadas smbldap-tools que también están disponibles como pa-quete de Debian, aparte de configurar Samba para que trabaje con OpenLDAP como base de datos de cuentas de usuario, grupos, etc.

Figura 9. Estructura de la base de datos OpenLDAP

Listado 6. Configuración de los parámetros del OpenLDAP en Samba

passdb backend = ldapsam:ldap://127.0.0.1

ldap passwd sync = Yes

ldap suffix = dc=linuxplus,dc=com

ldap user suffix = ou=People

ldap group suffix = ou=Groups

ldap machine suffix = ou=Computers

ldap idmap suffix = ou=Idmap

ldap admin dn = cn=admin,dc=linuxplus,dc=com

add user script = /usr/sbin/smbldap-useradd -m "%u"

add machine script = /usr/sbin/smbldap-useradd -w "%u"

add group script = /usr/local/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"

delete user script = /usr/sbin/smbldap-userdel "%u"

delete group script = /usr/sbin/smbldap-groupdel "%g"

Listado 7. Configuración del fichero smbldap_bind.conf

slaveDN="cn=admin,dc=linuxplus,

dc=com"

slavePw="contraseña_

administrador_ldap"

masterDN="cn=admin,dc=linuxplus,

dc=com"

masterPw="contraseña_

administrador_ldap"

Page 7: Samba_ Servidor para redes Microsoft

40 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

41www.lpmagazine.org

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

Ajustes de OpenLDAPAl servidor de LDAP es necesario hacerle una serie de ajustes para poder ubicar los usuarios de Samba, parámetros muy simples como por ejemplo la inclusión del schema de Samba 3. El fichero de configuración que vamos a mo-dificar es /etc/ldap/slapd.conf, si nos fijamos en el fichero, al principio de todo tiene unos includes. Al final del último include añadimos esta línea:

include /etc/ldap/schema/samba.schema

Si no tenemos el samba.schema en /etc/ldap/schema lo podemos copiar del directorio /usr/share/doc/samba-doc/examples/LDAP/ que está comprimido con gzip. Lo vamos a descomprimir con gunzip samba.schema.gz para su pos-terior copia a /etc/ldap/schema. Después vamos a añadir la linea index sambaSID,sambaPrimaryGroupSID,sambaDomainName eq después de la línea que contiene index objectClass eq. Este último parámetro configura los índices por los que indexar la base de datos para poder realizar búsquedas con estos campos.

Finalmente vamos a reiniciar el daemon del servidor LDAP con /etc/init.d/slapd restart en nuestro caso con Debian.

Ajustes de SambaAhora vamos a añadir los parámetros necesarios para que Samba trabaje con OpenLDAP para la validación de usuarios, gestión de grupos, equipos, etc. A partir del fichero /etc/samba/smb.conf vamos hacer una serie de cambios, el primero es el de cambiar el backend de la base de datos de usuarios/contraseñas con el parámetro passdb backend, seguidamente configuraremos todos los parámetros referentes a la estructura de cómo están organizados los datos dentro del

OpenLDAP (usuarios, grupos, equipos, etc.) como está en el Listado 6. Cuidado con duplicar parámetros como los de add user script y add machine script que hemos puesto anteriormente, es mejor sustituirlos por los nuevos.

Utilidades para la integraciónComo hemos comentado al principio de este apartado, para integrar Samba y OpenLDAP necesitamos las utilidades smbldap-tools. Estas herramientas son utilizadas por Samba para

Figura 10. Herramienta de administración de LDAP para Windows

Listado 8. Configuración del fichero smbldap.conf

SID="S-1-5-21-2063575342-

2847459922-2710907528"

sambaDomain="LINUXPLUS"

slaveLDAP="127.0.0.1"

slavePort="389"

masterLDAP="127.0.0.1"

masterPort="389"

...

suffix="dc=linuxplus,dc=com"

usersdn="ou=People,${suffix}"

computersdn="ou=Computers,${suffi

x}"

groupsdn="ou=Groups,${suffix}"

idmapdn="ou=Idmap,${suffix}"

sambaUnixIdPooldn="sambaDomainName=

LINUXPLUS,${suffix}"

...

hash_encrypt="CRYPT"

...

userSmbHome="\\SERVIDOR\%U"

userProfile="\\SERVIDOR\%U\profile"

userHomeDrive="Z:"

userScript="logon.bat"

mailDomain="linuxplus.com"

...

Listado 9. Salida del comando smbldap-populate

Populating LDAP directory for domain LINUXPLUS

(S-1-5-21-2063575342-2847459922-2710907528)

(using builtin directory structure)

entry dc=linuxplus,dc=com already exist.

adding new entry: ou=People,dc=linuxplus,dc=com

adding new entry: ou=Groups,dc=linuxplus,dc=com

adding new entry: ou=Computers,dc=linuxplus,dc=com

adding new entry: ou=Idmap,dc=linuxplus,dc=com

adding new entry: uid=administrador,ou=People,dc=linuxplus,dc=com

adding new entry: uid=nobody,ou=People,dc=linuxplus,dc=com

adding new entry: cn=Domain Admins,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Domain Users,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Domain Guests,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Domain Computers,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Administrators,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Account Operators,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Print Operators,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Backup Operators,ou=Groups,dc=linuxplus,dc=com

adding new entry: cn=Replicators,ou=Groups,dc=linuxplus,dc=com

adding new entry: sambaDomainName=LINUXPLUS,dc=linuxplus,dc=com

Page 8: Samba_ Servidor para redes Microsoft

40 Linux+ 10/2007

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

41www.lpmagazine.org

linux en la empresaIntegrar sistemas GNU/Linux con MS-Windows

realizar tareas de creación, modificación y bo-rrado de cuentas en la base de datos LDAP, por tanto vamos a proceder a su configuración para su posterior manejo.

Después de realizar la instalación del pa-quete smbldap-tools vamos a proceder a su con-figuración, la cual está ubicada en el directorio /etc/smbldap-tools, la mayoría de veces nos po-demos encontrar el directorio vacío, para ello vamos a copiar dos ficheros que se encuentran en /usr/share/doc/smbldap-tools/examples llama-dos smbldap_bind.conf y smbldap.conf.gz este úl-timo comprimido (mejor descomprimirlo antes de su copia). Los vamos a copiar al directorio /etc/smbldap-tools y vamos a realizar unas modi-ficaciones, primero al fichero smbldap_bind.conf como se puede ver en el Listado 7. Este fiche-ro contiene el usuario y contraseña en texto plano del administrador del LDAP que hemos configurado en la instalación del mismo. Una vez editado vamos a cambiarle los permisos para que solamente root pueda acceder a él, con chmod 600 smbldap_bind.conf.

Seguidamente realizaremos una serie de cambios al fichero smbldap.conf, este fichero ya viene preconfigurado con unos valores por defecto y que nosotros ajustaremos depen-diendo de nuestras necesidades. Realmente basta con cambiar cinco parámetros referentes al nombre de dominio y el nombre de las es-tructuras que contienen las cuentas de usuario dentro del LDAP. Vamos a cambiar los pará-metros especificados por el Listado 8, el fichero tiene más parámetros pero nosotros solamente vamos a cambiar éstos. El parámetro SID determina el identificador del servidor que se obtiene de ejecutar el comando net getlocalsid en la consola como root, los otros parámetros son referentes al nombre del dominio Samba, IP del servidor LDAP (la misma máquina en nuestro caso) y la configuración de los contenedores de los usuarios (People), grupos de usuarios (Groups) y cuentas de equipos (Computers). Una vez realizada la configuración vamos a proceder a la posterior ejecución del coman-do smbldap-populate -a administrador el cual nos va a crear toda la estructura de grupos por de-fecto y contenedores de cuentas como se puede observar en el Listado 9, es muy importante

que la fase de configuración de OpenLDAP haya ido bien porque si no smbldap-populate nos va a fallar. En la ejecución del smbldap-po-pulate va a realizar operaciones dentro de la base de datos OpenLDAP, creando los gru-pos requeridos por Samba para la adminis-tración del dominio y el usuario administra-dor del dominio. Así como cuando hemos configurado Samba como PDC pero con las cuentas del sistema utilizamos el usuario root para unirnos al dominio, esta vez vamos a utilizar el usuario administrador y contraseña que nos pedirá al final de la ejecución. Esto también quiere decir que el usuario que habíamos creado al principio de pruebas tampoco nos va a servir porque ahora Samba utiliza LDAP como base de datos para las cuentas de usuario.

Lo último que nos queda hacer es que el sistema también utilice el OpenLDAP pa-ra leer los grupos y usuarios en lugar de las bases de datos /etc/passwd y /etc/shadow. Esto lo vamos hacer instalando el paquete nss_ldap en nuestro caso el paquete libnss-ldap para Debian, en la instalación nos va a pedir la di-rección del servidor LDAP (ldap://127.0.0.1/ en nuestro caso), el base DN (dc=linuxplus,dc=com en nuestro caso la raíz de LDAP), la versión que utilizamos (versión 3), no necesitamos usuario para acceder a la base de datos, damos privilegios especiales de LDAP para root, cuen-ta de administración de la base de datos LDAP (cn=admin, dc=linuxplus, dc=com en nuestro caso) y su contraseña. Una vez configurado cambiaremos los parámetros especificados enel Listado 10 del fichero /etc/nsswitch.conf. Es muy importante recordar que a partir de esta operación los usuarios y grupos creados an-teriormente con adduser (resp. addgroup) ya no están operativos y es mejor eliminarlos con userdel y groupdel para volverlos a crear dentro del OpenLDAP. La gestión de cuentas se puede o bien hacer manualmente con las herramien-tas de consola o bien visuales, del estilo “LD-AP Admin for Windows” (Figura 10) que se puede descargar de manera gratuita de http://ldapadmin.sourceforge.net/.

Por ejemplo queremos crear los grupos que teníamos al principio: gestion y contabili-dad, usando la herramienta ldapadd de la sigu-iente forma: crearemos un fichero de textocomo el del Listado 11 y ejecutamos la sigu-iente línea como root: ldapadd -x -D 'cn=admin,dc=linuxplus,dc=com' -W -f contabilidad.ldif.

Tenemos que tener en cuenta que el gid-Number puede ser mayor o igual a 1000 paraque no entre en conflicto con ningún otro. El fichero está compuesto por diferentes cam-pos que nos determinan la situación del nue-vo objeto dentro de la base de datos con dn, el nombre del objeto con cn y después el tipoo tipos de objeto, en nuestro caso es un objeto tipo posixGroup (grupo de sistema), samba-GroupMapping (grupo de Samba). Cada tipo de objeto tiene su conjunto de campos propios, como por ejemplo el posixGroup nos propor-ciona el campo gidNumber y el sambaGroupMa-pping los campos sambaGroupType y sambaSID.

El campo sambaSID está compuesto porel SID local cogido con net getlocalsid y aña-diendo el RID que es igual a 2*gidNumber+1001. Pero es mejor utilizar las herramien-tas smbldap-tools que ya llevan utilidades pa-ra crear y borrar todo tipo de usuarios y gru-pos además ya se encarga de darle un GID correlativo y un RID automáticamente. Por ejemplo smbldap-groupadd -a contabilidad nosdará el mismo resultado que con ldapadd pero sin tener que especificar todos los pará-metros que son necesarios, basta con el nom-bre del grupo. De la misma forma podemos crear un usuario nuevo con smbldap-useradd -a -G contabilidad tomeu y asignarle una contraseña con smbldap-passwd tomeu.

Es necesario que una vez hecho el cambioa OpenLDAP volver a unir el equipo que hemos utilizado anteriormente al dominio de la misma manera que hemos hecho anterior-mente, con la diferencia de que cuando nos pregunte por la cuenta que tenga privilegios para unirse al dominio usaremos la cuenta que ha creado la utilidad smbldap-populate, la de administrador con su contraseña corres-pondiente.

Listado 10. Cambios en el fichero /etc/nsswitch.conf

...

passwd: compat ldap

group: compat ldap

shadow: compat ldap

...

Listado 11. Fichero para crear un grupo dentro de OpenLDAP

dn: cn=contabilidad,ou=Groups,dc=linuxplus,dc=com

cn: contabilidad

objectclass: posixGroup

objectclass: top

objectclass: sambaGroupMapping

sambaGroupType: 2

sambaSID: S-1-5-21-2063575342-2847459922-2710907528-23653

gidNumber: 11326