Manual de samba Nfs Quota Cups Pykota

Embed Size (px)

DESCRIPTION

Todo para instalar SAmba mas pykota en sercicios de debian. muy Util para aquellas perosnas que deseen instalar y ponner en produccion un servidor de IMpresion

Citation preview

Servidor de impresin basado en la integracin de las tecnologas OpenLDAP, NFS, Cuotas de Disco, CUPS y PyKota.

Con un directorio LDAP como base de datos comn para almacenar la informacin relativa a las cuotas de impresin asociadas a un usuario o grupo de usuarios, y con CUPS y PyKota se implementar el sistema de impresin con soporte para cuotas, CUPS como servidor de impresin se utilizar para la administracin de las impresoras y Pykota para la administracin de los usuarios, grupos y cuotas de impresin. Aunque esta solucin es ms completa y compleja de configurar, no brinda soporte actualizado, es por ello que requerir estructurar un laboratorio de pruebas. En este caso se plantea la configuracin de dos servidores en clster, asociado al servidor LDAP, con el fin de ofrecer un servicio que brinde alta disponibilidad, redundancia y balanceo en las peticiones de impresin de los usuarios del MPPE.

ESQUEMA DE DISTRIBUCIN DE LOS CENTROS DE IMPRESIN Regla de la cola de impresin: Si las pginas son B/N mover a la cola del multifuncional Servidor de Impresin El usuario enva el trabajo a la cola de impresin de la impresora 2. El servidor examina el trabajo y lo compara con las reglas configuradas en la cola 3. El servidor ejecuta la accin establecida por la regla Pycota Usuario HP Color LaserJet 5550 Canon Image Runner 2230

Instalacin de LDAP con Samba NFS Y Cuotas Cups Pykota en Debian Wheezy

1.Instalacin del Servidor LDAP

Verificar que el nombre del equipo sea igual al registro DNS (PDC.fnc.com.ve).

root@servidorimpresion:~# more /etc/hostname

PDC

root@servidorimpresion:~#

root@servidorimpresion:~# more /etc/hosts

127.0.0.1localhost

192.168.1.24PDC.fnc.com.vePDC

# The following lines are desirable for IPv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

root@servidorimpresion:~#

En esta seccin instalaremos y configuraremos un servidor OpenLDAP junto con las herramientas de administracin y cliente. La instalacin inicial la realizaremos con el asistente de instalacin de APT.

Para ello colocamos:

apt-get install slapd ldap-utils

Cuando se instala el paquete slapd al final nos lanzar un asistente de configuracin del servicio slapd, ser ver como en la siguiente pantalla:

Una vez finalizado el wizard procedemos a reconfigurar el servicio de slapd:

dpkg-reconfigure slapd

La primer pantalla nos pregunta si queremos omitir la configuracin inicial del servidor slapd, contestaremos: NO

Despus, nos pregunta el nombre de dominio con el que queremos configurar nuestro rbol de directorio, este nombre de dominio ser configurado con la base de nuestro directorio (Base DN) o la base de bsqueda de nuestro directorio (Search Base).

Por ejemplo si ingresamos el nombre de dominio fnc.com.ve entonces en formato Domain Component (DC por sus siglas en Ingls) nos pondr nuestra base as: dc=fnc,dc=com,dc=ve.

A continuacin nos pregunta el nombre de la organizacin para la que configuraremos el directorio LDAP. Ingresaremos: Negra Hipolita

Despus de configurar el nombre de dominio y la organizacin nos pide ingresar una contrasea para el usuario Administrador del directorio LDAP, en este caso el Distinguished Name (DN por sus siglas en Ingls) de la cuenta ser: cn=admin,dc=fnc,dc=com,dc=ve, usaremos la contrasea: xxxxx

Ahora confirmaremos la contrasea para el Administrador del servidor LDAP, usaremos la misma que se ingreso arriba: xxxxxx

En este paso seleccionaremos el tipo de base de datos (data store) en el que almacenaremos la informacin de nuestro directorio, utilizaremos el tipo HDB la cual es la opcin recomendada por Ubuntu y por el equipo de desarrollo de OpenLDAP, anteriormente se recomendaba el tipo BDB pero se han encontrado razones por las cuales no se recomienda BDB y esas mismas razones son las que han convencido de considerar como postura el BDB Data Store para OpenLDAP

En el siguiente paso nos pregunta si deseamos eliminar la base de datos del directorio cuando purguemos el paquete slapd, contestaremos: No

Importante

No seleccione la opcin Yes, ya que si por error desinstalamos el paquete slapd no perderemos la base de datos del directorio /var/lib/ldap y podremos recuperar nuestra instalacin usando dichos archivos.

Si por alguna razn ya exista una base de datos de una instalacin anterior el asistente nos pregunta si deseamos mover la base de datos vieja a un directorio de respaldo (/var/backups/), elegimos la opcin S

Y por ltimo nos pregunta si deseamos permitir conexiones al servidor LDAP usando la versin obsoleta del protocolo LDAP 2, por defecto esta desactivado, se recomienda no activarlo ya que todas las aplicaciones que usaremos usan la versin 3 del protocolo LDAP, as que contestaremos: No

Cuando el asistente termina de configurar los parmetros especificados veremos en la salida de la consola un mensaje como el siguiente:

La salida anterior nos dice que detuvo el servicio slapd, hizo un respaldo de la base de datos anterior en el directorio /var/backups, regener un archivo de configuracin en base a nuestras respuestas, inicializa un directorio bsico e inicia el servidor slapd con la nueva configuracin y el nuevo directorio.

Verificaremos que se creo un grupo de nombre openldap:

root@pdc:~# grep ldap /etc/group

openldap:x:108:

Como vemos, nos creo el grupo openldap y tiene el GID: 108

Ahora confirmaremos que el usuario openldap fue creado:

root@pdc:~# grep ldap /etc/passwd

openldap:x:105:108:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false

Como vemos nos creo el usaurio openldap, con el ID de Usuario (UID): 105, su grupo primario es el grupo de ID 108 (openldap), su directorio $HOME es /var/lib/ldap, y esta cuenta no tiene un shell vlido: /bin/false

Tambin verificaremos que los permisos del directorio /var/lib/ldap sean los correctos y nos aseguraremos que el usuario openldap tenga permiso de lectura, escritura y acceso al directorio:

ls -ld /var/lib/ldap

drwxr-xr-x 2 openldap openldap 4096 may 6 10:53 /var/lib/ldap/

Verificaremos que el demonio slapd sea ejecutado con el usuario y grupo openldap, esto esta definido en el archivo /etc/default/slapd, y por defecto est as:

vi /etc/default/slapd

Este es el contenido del archivo:

# System account to run the slapd server under. If empty the server

# will run as root.

SLAPD_USER="openldap"

# System group to run the slapd server under. If empty the server will

# run in the primary group of its user.

SLAPD_GROUP="openldap"

Agregando el esquema de samba al directorio LDAP

Los esquemas (schemas) definen el tipo de objectos (objectClass) que podemos manejar en nuestro rbol de directorio, adems definen el tipo de atributos que podemos usar as como las reglas de sintaxis para cada uno de estos atributos.

Los esquemas que vienen por defecto en la configuracin de slapd son los necesarios para poder almacenar informacin de cuentas Unix/POSIX, almacenar informacin para crear un tipo de Directorio Amarillo, o una agenda de contactos. Estos esquemas predeterminados no nos permiten almacenar atributos para cuentas de usuario y dominios Samba/Windows

Por ello procedemos a agregar el esquema de samba de la siguiente manera:

apt-get install samba-doc

El archivo del esquema de samba se encuentra en el archivo /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz en formato comprimido, lo descomprimiremos y lo copiaremos al directorio /etc/ldap/schema/:

cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/

gzip -d /etc/ldap/schema/samba.schema.gz

El esquema de samba debe ser aadido al cn=config del directorio LDAP.

Primero debemos crear un archivo de configuracin llamado schema_convert.conf o similar, dentro del directorio /etc/ldap/schema; el mismo debe contener las siguientes lineas.

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

luego creamos un directorio temporal para almacenar el resultado:

mkdir /tmp/ldif_output

Ahora, convertimos el archivo samba.schema a samba.ldif, con la siguiente sintaxis:

slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/cn=samba.ldif

Edite el archivo generado /tmp/cn\=samba.ldif, cambiando los siguientes atributos.

Como se muestra a continuacin:

dn: cn=samba,cn=schema,cn=config

...

cn: samba

y remueva las siguientes lineas al final del archivo:

structuralObjectClass: olcSchemaConfig

entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95

creatorsName: cn=config

createTimestamp: 20080827045234Z

entryCSN: 20080827045234.341425Z#000000#000#000000

modifiersName: cn=config

modifyTimestamp: 20080827045234Z

Guardamos el archivo y salimos.

Luego entramos a la ruta:

cd /etc/ldap/slapd.d/cn=config

Editamos el archivo olcDatabase\=\{1\}hdb.ldif para buscar la siguiente linea y copiarla para luego pegarla en el archivo olcDatabase={0}config.ldif :

olcRootPW:: e1NTSEF9UUI2UnRzVmM1UnZNaklwdnBVaThuSmNKRmxWY2NLa1A=

Esta linea es la clave cifrada del usuario administrador del rbol LDAP. La cual debe ser copiada en el archivo olcDatabase={0}config.ldif, despus de la linea olcRootDN: cn=admin,cn=config

Para esto editamos el archivo:

vi olcDatabase={0}config.ldif ; y colocamos la linea, quedando de la siguiente manera:

dn: olcDatabase={0}config

objectClass: olcDatabaseConfig

olcDatabase: {0}config

olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external

,cn=auth manage by * break

olcRootDN: cn=admin,cn=config

olcRootPW:: e1NTSEF9UUI2UnRzVmM1UnZNaklwdnBVaThuSmNKRmxWY2NLa1A=

structuralObjectClass: olcDatabaseConfig

entryUUID: 9c805ba4-4aac-1032-93ab-bd7153ff1a60

creatorsName: cn=config

createTimestamp: 20130506152313Z

entryCSN: 20130506152313.102086Z#000000#000#000000

modifiersName: cn=config

modifyTimestamp: 20130506152313Z

Guardamos y salimos.

Reiniciamos el servicio slapd:

/etc/init.d/slapd restart

Stopping OpenLDAP: slapd.

Starting OpenLDAP: slapd.

Finalmente aadimos el nuevo esquema utilizando la herramienta ldapadd.

ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=samba.ldif

Enter LDAP Password:

adding new entry "cn=samba,cn=schema,cn=config"

Debe colocar la clave del administrador del rbol ldap que configuramos en los pasos anteriores.

Esto debe generar un archivo llamado cn={x}samba.ldif en el directorio /etc/ldap/slapd.d/cn=config/cn=schema, donde x representa el siguiente nmero

verificamos esto con el comando:

ls /etc/ldap/slapd.d/cn\=config/cn\=schema/

Luego creamos los ndices para agilizar la bsqueda, para ello creamos un archivo llamado samba_indexes.ldif en la ruta /etc/ldap/schema

vi /etc/ldap/schema/samba_indexes.ldif

este archivo debe contener la siguiente informacin:

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: cn eq,pres,sub

olcDbIndex: sn eq,pres,sub

olcDbIndex: displayName eq,pres,sub

olcDbIndex: memberUid eq,pres,sub

olcDbIndex: mail eq,pres,sub

olcDbIndex: givenname 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

Guardamos y salimos.

Cambese a directorio /etc/ldap/schema

cd /etc/ldap/schema

Luego utilizamos la herramienta ldapmodify para agregar los ndices al rbol.

ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif

nos solicita la clave del administrador, la colocamos y obtendremos una salida como esta:

Enter LDAP Password:

modifying entry "olcDatabase={1}hdb,cn=config"

si todo sali bien, podremos ver los ndices usando la herramienta ldapsearch :

ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb

nos solicita la clave y obtenemos una salida como esta:

Enter LDAP Password:

dn: olcDatabase={1}hdb,cn=config

objectClass: olcDatabaseConfig

objectClass: olcHdbConfig

olcDatabase: {1}hdb

olcDbDirectory: /var/lib/ldap

olcSuffix: dc=fnc,dc=com,dc=ve

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymous auth by dn="cn=admin,dc=fnc,dc=com,dc=ve" write by * none

olcAccess: {1}to dn.base="" by * read

olcAccess: {2}to * by self write by dn="cn=admin,dc=fnc,dc=com,dc=ve" write by * read

olcLastMod: TRUE

olcRootDN: cn=admin,dc=fnc,dc=com,dc=ve

olcRootPW: {SSHA}QB6RtsVc5RvMjIpvpUi8nJcJFlVccKkP

olcDbCheckpoint: 512 30

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

olcDbIndex: objectClass eq

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

olcDbIndex: cn eq,pres,sub

olcDbIndex: sn eq,pres,sub

olcDbIndex: displayName eq,pres,sub

olcDbIndex: mail eq,pres,sub

olcDbIndex: givenname eq,pres,sub

Configuramos las listas de control de acceso

Para ello modificamos el archivo olcDatabase\=\{1\}hdb.ldif que se encuentra en la ruta /etc/ldap/slapd.d/cn=config

en la seccin:

olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by anonymou s auth by dn="cn=admin,dc=fnc,dc=com,dc=ve" write by * none

agregamos,

olcAccess: {0}to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPassword by self write by anonymous auth by dn="cn=admin,dc=fnc,dc=com,dc=ve" write by * none

Guardamos, salimos del archivo y reiniciamos el servicio slapd

/etc/init.d/slapd restart

Stopping OpenLDAP: slapd.

Starting OpenLDAP: slapd.

Finalmente comprobamos que nuestra configuracin este correcta, para ello corremos el siguiente comando:

root@pdc:~# slaptest -v -u

Si el resultado es algo como esto:

5345aa25 ldif_read_file: checksum error on "/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif"

5345aa25 ldif_read_file: checksum error on "/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif"

config file testing succeeded

Entonces debemos editar los archivos /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif y /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif y eliminar las dos primeras lineas, se muestran a continuacin:

# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.

# CRC32 52ad4f52

Guardamos los archivos y volvemos a ejecutar el comando:

slaptest -v -u

config file testing succeeded

Con la opcin -v habilitamos el modo verbose, esto es para que muestre detalles sobre posibles errores encontrados en la configuracin.

La opcin -u permite que solo se ejecuta la revisin sintctica aun cuando no se puedan abrir los archivos de bases de datos del directorio (/var/lib/ldap/).

Si el comando slaptest nos muestra algn error, posiblemente nos dir en que parte del archivo se encuentra el error.

Ahora haremos una consulta al servidor LDAP para ver si responde con lo ms bsico. Usaremos el comando ldapsearch para buscar el namingContexts del rbol.

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

Obteniendo el siguiente resultado:

# extended LDIF

#

# LDAPv3

# base with scope baseObject

# filter: (objectclass=*)

# requesting: namingContexts

#

#

dn:

namingContexts: dc=fnc,dc=com,dc=ve

# search result

search: 2

result: 0 Success

# numResponses: 2

# numEntries: 1

Si el comando ldapsearch nos muestra algo similar a lo que se muestra arriba significa que nuestro servidor LDAP esta funcionando correctamente.

Ahora haremos una bsqueda en el directorio LDAP autenticado como el usuario admin del LDAP y haremos la bsqueda usando como base dc=fnc,dc=com,dc=ve, esto es para comprobar que la autenticacin y nuestras ACLs funcionen correctamente, adems, de comprobar que el directorio se haya inicializado con la estructura bsica.

ldapsearch -x -D "cn=admin,dc=fnc,dc=com,dc=ve" -b "dc=fnc,dc=com,dc=ve" -W

Enter LDAP Password:

# extended LDIF

#

# LDAPv3

# base with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

# fnc.com.ve

dn: dc=fnc,dc=com,dc=ve

objectClass: top

objectClass: dcObject

objectClass: organization

o: Fabrica Nacional de Cemento

dc: fnc

# admin, fnc.com.ve

dn: cn=admin,dc=fnc,dc=com,dc=ve

objectClass: simpleSecurityObject

objectClass: organizationalRole

cn: admin

description: LDAP administrator

userPassword:: e1NTSEF9UUI2UnRzVmM1UnZNaklwdnBVaThuSmNKRmxWY2NLa1A=

# search result

search: 2

result: 0 Success

# numResponses: 3

# numEntries: 2

2.- Instalacin y configuracin del servidor Samba

En esta seccin configuraremos el servidor Samba como un Controlador de Dominio Primario (PDC) Windows NT con la base de datos SAM almacenada en nuestro directorio LDAP.

Los parmetros generales que configuraremos son:

Parmetros de identificacin de red como: Dominio, Nombre Servidor.

Configuracin para registro de eventos (logs)

Interfaces y direcciones de red a las que est conectado el servidor

Configuracin de parametros para Controlador de Dominio

Informacin del servidor LDAP y como utilizarlo

Definicin de script para automatizar la administracin de las cuentas samba/ldap.

Directorios compartidos especiales como homes, netlogon y profiles.

La configuracin la realizaremos paso por paso, tratando de explicar cada cambio.

2.1 En esta seccin instalaremos el servidor samba que en Debian/Ubuntu esta conformado principalmente por los paquetes: samba y smbclient, el primero contiene los programas para servidor y el segundo las herramientas de cliente, diagnstico y resolucin de problemas.

Instalamos los paquetes para cliente y servidor Samba:

root@pdc:~# apt-get install samba smbclient

Cuando instalemos nos preguntar el nombre del dominio o grupo de trabajo, podemos dejar el predeterminado ya que esta configuracin la cambiaremos ms adelante.

El paquete que instala la parte servidor de samba preconfigurado con algunos parmetros, adems de que importa los usuarios de sistema en /etc/passwd a la base de datos de cuentas samba, en nuestro caso esta configuracin no nos sirve por lo que eliminaremos la configuracin creada y los archivos de configuracin que se crearon, para inicializar la configuracin de samba detenemos los servicios samba. Siga los siguientes pasos:

root@pdc:~# /etc/init.d/samba stop

Stopping Samba daemons: nmbd smbd

Ahora eliminamos los archivos .tdb y .dat en /var/lib/samba:

root@pdc:~# rm -rfv /var/lib/samba/*.{tdb,dat}

Todava no iniciaremos el servidor samba hasta que este nuevamente configurado.

El archivo de configuracin principal de Samba es /etc/samba/smb.conf, ya que iniciaremos con una configuracin nueva, haremos un respaldo de este archivo antes de iniciar con las modificaciones.

Creamos el respaldo del archivo /etc/samba/smb.conf:

root@pdc:~# mv /etc/samba/smb.conf{,.orig}

El archivo de configuracin de samba define la seccin [global], en esta seccin especificaremos parmetros globales que afectarn el comportamiento del servidor Samba, los parmetros principales son:

El nombre del Grupo de Trabajo/Dominio al que pertenecemos: FNC (por ejemplo)

Nombre NetBIOS del Servidor Samba: PDC

Descripcin del servidor Samba: Servidor PDC

Adems configuraremos los siguientes parmetros extras:

Soporte para habilitar privilegios de Grupos de Dominio Samba: enable privileges = yes, este parmetro es til por ejemplo para dar privilegios a los usuarios miembros del grupo Domain Admins para unir equipos Windows a un Dominio NT.

Crearemos un archivo /etc/samba/smb.conf nuevo con los siguientes parmetros:

El archivo debe quedar as:

[global]

workgroup = FNC

netbios name = PDC

server string = Servidor PDC

map to guest = Bad User

username map = /etc/samba/smbusers

Leyenda:

El parametro map to guest = Bad User define que cuando un usuario no existente (en el dominio) se conecte al servidor, el servidor smbd mapear esa conexin al usuario annimo, pero las conexiones de usuarios que se autentiquen con una contrasea invlida sern rechazadas.

La ltima opcin que especificamos es username map apuntando al archivo /etc/samba/smbusers, este archivo sirve para mapear nombres de usuarios (alias), por ejemplo en este archivo podemos crear un mapeo de usuario para que la cuenta root sea mapeada a Administrator que es comnmente usada en entornos de red Windows para la cuenta de administrador. Para hacer esto, creamos el archivo /etc/samba/smbusers con el siguiente contenido:

root = Administrator

No cerraremos el archivo smb.conf ya que agregaremos ms informacin en la seccin [global] en las siguientes secciones

Ahora configuraremos algunos parmetros para la generacin de mensajes de logs, en la seccin [global] agregue las siguientes lneas:

syslog = 0

log level = 0

max log size = 50

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

La configuracin anterior especifica que no se envan los logs al demonio syslog local, el nivel de severidad de logs es 0 (ms bajo), se define un tamao de logs de 50M y los logs de las conexiones de los equipos o usuarios clientes se guardan en el directorio /var/log/samba con el formato MAQUINA.log.

No cerraremos el archivo ya que agregaremos ms informacin en la seccin [global] en las siguientes secciones

En esta seccin configuraremos los parmetros de red y algunas configuraciones de seguridad recomendadas.

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

interfaces = eth0 lo

hosts allow = 127.0.0.1, 10.12.0.0/16

hosts deny = 0.0.0.0

smb ports = 139 445

bind interfaces only = Yes

name resolve order = wins hosts lmhosts bcast

remote announce = 10.12.0.255 \ 10.12.1.255

Si la implementacin del controlador se realizar en una red con diferentes subredes, entonces debemos colocar cada una de las direcciones IP de broadcast de cada una de las subredes en la variable remote announce

No cerraremos el archivo ya que agregaremos ms informacin en la seccin [global] en las siguientes secciones

Ahora configuraremos los parmetros relacionados con la configuracin de un servidor Controlador de Dominio.

time server = Yes

wins support = Yes

os level = 33

domain logons = Yes

preferred master = Yes

logon path =

logon home =

logon drive =

logon script =

case sensitive = No

utmp = Yes

No cerraremos el archivo ya que agregaremos ms informacin en la seccin [global] en las siguientes secciones

Ahora definiremos los parmetros necesarios para que samba utilice el directorio LDAP.

passdb backend = ldapsam:ldap://127.0.0.1/

ldap admin dn = cn=admin,dc=fnc,dc=com,dc=ve

ldap suffix = dc=fnc,dc=com,dc=ve

ldap group suffix = ou=Groups

ldap user suffix = ou=Users

ldap machine suffix = ou=Computers

ldap idmap suffix = ou=Idmap

winbind trusted domains only = Yes

ldap ssl = off

ldap passwd sync = Yes

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

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

ldap delete dn = No

#delete user script = /usr/sbin/smbldap-userdel "%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"

No cerraremos el archivo ya que agregaremos ms informacin en la seccin [global] en las siguientes secciones

Ahora configuraremos los parmetros para especificar el juego de caracteres predeterminado para archivos dos y unix.

dos charset = 850

Unix charset = ISO8859-1

Hasta aqu termina la seccin Global de smb.conf, en las siguientes secciones configuraremos secciones especiales para nuestro Controlador de Dominio.

El recurso compartido [homes] es un recurso compartido especial que es usado para compartir el directorio $HOME de cada usuario, por ejemplo, tenemos un usuario unix/windows de nombre jmedina, este usuario tiene un directorio $HOME en la ruta /home/jmedina, con este recurso compartido, cada vez que el usuario jmedina inicia sesin por Samba, tendr disponible un recurso compartido en el servidor con el nombre "jmedina" y por medio de l podr entrar a sus archivos privados en el servidor.

[homes]

comment = Home Directories

valid users = %U

read only = No

create mask = 0664

directory mask = 0775

browseable = No

La linea valid users = %U indica que este recurso compartido solo esta disponible para los usuarios Samba autenticados.

En este recurso compartido no se especifica un path ya que podr variar dependiendo del usuario que haga login.

Este es otro recurso compartido especial, el recurso [netlogon] solo es utilizado cuando Samba acta como un Controlador de Dominio, el propsito de este recurso compartido es almacenar los scripts de inico (logon scripts), estos scripts son ejecutados cada vez que un usuario inicia sesin en el dominio.

[netlogon]

path = /home/samba/netlogon/

browseable = No

read only = yes

La opcin browseable = No especifica que este recurso compartido no ser visible en la lista de shares disponibles en el servidor, ms sin embargo, si podr ser accedido para los usuarios que hacen login en el dominio, el acceso ser de solo lectura.

Ahora creamos el directorio base en el cual almacenaremos los logon scripts:

root@pdc:~# mkdir -p --mode 755 /home/samba/netlogon

Ahora crearemos un logon script bastante simple que har las siguientes operaciones

Sincronizar el reloj del servidor con el del equipo local

Mapear el recurso de red \\PDC\homes a la unidad H:

Creamos el archivo /home/samba/netlogon/logon.bat:

root@pdc:~# vi /home/samba/netlogon/logon.bat

Y agregue el siguiente contenido:

net time \\PDC /set /yes

net use h: \\PDC\homes

Ahora convertimos el archivo a formato DOS con CR/LF

root@pdc:~# sed -i 's/$/\r/' /home/samba/netlogon/logon.bat

El recurso compartido [profiles] tambin es de uso especial y solo es necesario cuando Samba se configura como Controlador de Dominio, el propsito de este recurso compartido es almacenar los Perfiles de Usuarios, en especfico es usado cuando se configura que los usuarios de dominio utilicen los Perfiles Mviles (Roaming Profiles). Para ello editamos el archivo /etc/samba/smb.conf y agregamos:

[profiles]

path = /home/samba/profiles

read only = No

create mask = 0600

directory mask = 0700

browseable = No

guest ok = Yes

profile acls = Yes

csc policy = disable

force user = %U

valid users = %U @"Domain Admins"

La ruta de este recurso compartido ser usado con el atributo ProfilePath para indicar la ruta en donde esta almacenado el Perfil del Usuario, por ejemplo, la entrada en la SAM del dominio para el usuario jmedina especfica: ProfilePath=\\PDC\profiles\jmedina, lo cual indica que el perfil del usuario jmedina estar en el directorio local /home/samba/profiles/jmedina.

Creamos el directorio para el recurso compartido profiles:

root@pdc:~# mkdir -p --mode 1777 /home/samba/profiles

Ahora si puede guardar el archivo y continuar con las configuraciones.

Despus de haber editado el archivo de configuracin smb.conf ejecutaremos el comando testparm para realizar un revisin sintctica del archivo smb.conf, este comando nos dir si hay algn error de configuracin, o si algn parmetro esta mal escrito.

Para correr la revisin ejecutamos:

root@pdc:~# testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)

Processing section "[homes]"

Processing section "[netlogon]"

Processing section "[profiles]"

Loaded services file OK.

Server role: ROLE_DOMAIN_PDC

Press enter to see a dump of your service definitions

Si le aparece el mensaje "ERROR: the 'unix password sync' parameter is set and the 'passwd program' (/usr/sbin/smbldap-passwd) cannot be executed (error was No such file or directory)." ignorelo, en la siguiente seccin instalaremos el paquete smbldap-tools.

Si hubiera algn error en la sintaxis el comando testparm nos lo reportar y nos dir en que linea se encuentra el error y alguna descripcin corta sobre el error.

Nota

Todava no es momento de iniciar el servidor samba.

2.2 Para que Samba pueda agregar/modificar cuentas almacenadas en el directorio LDAP es necesario que sepa la contrasea del usuario ldap admin dn especificada en el archivo smb.conf. La cuenta del ldap admin dn debe de tener los suficientes permisos para leer, agregar y modificar entradas en el directorio LDAP.

Para especificar la contrasea del admin dn, usamos el comando:

smbpasswd -W

Setting stored password for "cn=admin,dc=fnc,dc=com,dc=ve" in secrets.tdb

New SMB password:

Retype new SMB password:

La contrasea ser almacenada en el archivo /var/lib/samba/secrets.tdb. Se almacena aqu para no tener que especificarla cada vez que se vaya a ejecutar alguna operacin relacionada a cuentas Samba en el directorio LDAP.

El archivo secrets.tdb debe de tener los permisos as:

root@pdc:~# ls -l /var/lib/samba/secrets.tdb

-rw------- 1 root root 8192 2008-06-18 23:29 /var/lib/samba/secrets.tdb

Ahora si podemos iniciar el servidor samba

root@servidorimpresion:/etc/samba# /etc/init.d/samba start

Starting Samba daemons: nmbd smbd.

root@servidorimpresion:/etc/samba#

2.3 Ahora configuraremos las herramientas smbldap-tools para predefinir los parmetros de configuracin para la administracin de cuentas Unix y Samba.

Primero instalaremos el paquete smbldap-tools as:

root@pdc:~# apt-get install smbldap-tools

Los archivos de configuracin de las herramientas smbldap-tools se encuentran en el directorio /etc/smbldap-tools, en este directorio deben de existir dos archivos de configuracin, el archivo smbldap.conf contiene directivas de configuracin tanto para la creacin y modificacin de cuentas Unix y Samba y el archivo smbldap_bind.conf contiene el usuario y la contrasea del usuario con el que nos conectaremos al servidor LDAP para efectuar las operaciones de administracin de usuarios y grupos Unix/Samba.

Ya que el archivo /etc/smbldap-tools/smbldap.conf no existe, usaremos un archivo de ejemplo que se instala junto con el paquete smbldap-tools, lo copiamos as:

root@pdc:~# zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf

El archivo smbldap_bind.conf tampoco existe por lo que utilizaremos el archivo de ejemplo:

root@pdc:~# cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/

Antes de empezar a configurar estas herramientas cambiaremos los permisos de acceso para estos archivos,

Entramos al directorio /etc/smbldap-tools:

root@pdc:~# cd /etc/smbldap-tools

Cambiamos el usuario y grupo propietarios para los archivos, el usuario dueo debe de ser root y el grupo dueo debe de ser openldap.

root@pdc:~# chown root:openldap smbldap*

Nadie ms a excepcin del usuario root tendr permiso de lectura y escritura sobre los archivos, el grupo openldap solo tendr permisos de lectura.

root@pdc:~# chmod 640 smbldap*

Editaremos el archivo de configuracin smbldap_bind.conf para especificar el usuario con el que haremos las operaciones de administracin de usuarios y grupos en el servidor LDAP.

root@pdc:~# vi smbldap_bind.conf

Cambiar:

slaveDN="cn=Manager,dc=company,dc=com"

slavePw="secret"

masterDN="cn=Manager,dc=company,dc=com"

masterPw="secret"

Por:

slaveDN="cn=admin,dc=fnc,dc=com,dc=ve"

slavePw="clave_usuario_admin_ldap"

masterDN="cn=admin,dc=fnc,dc=com,dc=ve"

masterPw="clave usuario admin ldap"

Aunque aun no tengamos configurado un servidor LDAP esclavo usaremos el mismo cn=admin que en nuestro servidor Maestro.

En el archivo smbldap.conf se debe especificar el SID del dominio Samba con el que estaremos trabajando, para obtener el SID de nuestro servidor utilizaremos el comando net.

Obteniendo el SID local:

root@pdc:~# net getlocalsid

SID for domain PDC is: S-1-5-21-3702025042-3527879707-4288773517

El SID resultante lo copiaremos, en este caso el SID es: S-1-5-21-2911508632-2405292923-4115677068

Como mnimo debemos configurar los parmetros que estn marcados en negritas.

Ahora editamos el archivo principal de configuracin de smbldap-tools /etc/smbldap-tools/smbldap.conf:

root@pdc:~# vi /etc/smbldap-tools/smbldap.conf

TODO: Dividir los parmetros globales para el dominio Samba y los parmetros para especificar en que servidor LDAP almacenaremos la informacin de cuentas Unix/Samba.

Primero editaremos los parmetros referentes al dominio Samba:

# Put your own SID. To obtain this number do: "net getlocalsid".

# If not defined, parameter is taking from "net getlocalsid" return

SID="S-1-5-21-3702025042-3527879707-4288773517"

# Domain name the Samba server is in charged.

# If not defined, parameter is taking from smb.conf configuration file

# Ex: sambaDomain="IDEALX-NT"

sambaDomain="FNC"

# Slave LDAP server

# Ex: slaveLDAP=127.0.0.1

# If not defined, parameter is set to "127.0.0.1"

slaveLDAP="127.0.0.1"

# Slave LDAP port

# If not defined, parameter is set to "389"

slavePort="389"

# Master LDAP server: needed for write operations

# Ex: masterLDAP=127.0.0.1

# If not defined, parameter is set to "127.0.0.1"

masterLDAP="127.0.0.1"

# Master LDAP port

# If not defined, parameter is set to "389"

masterPort="389"

Configuraciones de TLS/SSL:

Ya que en esta instalacin inicial no usaremos comunicaciones seguras por SSL/TLS desactivaremos el uso de TLS en nuestra configuracin.

# Use TLS for LDAP

# If set to 1, this option will use start_tls for connection

# (you should also used the port 389)

# If not defined, parameter is set to "1"

ldapTLS="0"

Ahora especificaremos el Base DN de nuestro directorio LDAP, esta configuracin servir como variable para otras configuraciones, todos los contenedores para almacenar cuentas y grupos estarn bajo este Base DN.

# LDAP Suffix

# Ex: suffix=dc=IDEALX,dc=ORG

suffix="dc=fnc,dc=com,dc=ve"

# Where to store next uidNumber and gidNumber available for new users and groups

# If not defined, entries are stored in sambaDomainName object.

# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"

# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"

sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"

# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)

hash_encrypt="SSHA"

# if hash_encrypt is set to CRYPT, you may set a salt format.

# default is "%s", but many systems will generate MD5 hashed

# passwords if you use "$1$%.8s". This parameter is optional!

crypt_salt_format="%s"

# Domain appended to the users "mail"-attribute

# when smbldap-useradd -M is used

# Ex: mailDomain="idealx.com"

Configure algunos parmetros predeterminados para cuentas de usuario y grupos Unix:

# Login defs

# Default Login Shell

# Ex: userLoginShell="/bin/bash"

userLoginShell="/bin/bash"

# Home directory

# Ex: userHome="/home/%U"

userHome="/home/%U"

# Default mode used for user homeDirectory

userHomeDirectoryMode="700"

# Gecos

userGecos="Usuario del Dominio"

# Default User (POSIX and Samba) GID

defaultUserGid="513"

# Default Computer (Samba) GID

defaultComputerGid="515"

# Skel dir

skeletonDir="/etc/skel"

# Default password validation time (time in days) Comment the next line if

# you don't want password to be enable for defaultMaxPasswordAge days (be

# careful to the sambaPwdMustChange attribute's value)

defaultMaxPasswordAge="99999"

Nota: En este ejemplo se usa el valor 99999 para deshabilitar la expiracin de contraseas.

Configure la ruta y unidad para el montaje del directorio home automticamente en clientes windows a travs del logon script:

# The UNC path to home drives location (%U username substitution)

# Just set it to a null string if you want to use the smb.conf 'logon home'

# directive and/or disable roaming profiles

# Ex: userSmbHome="\\PDC-SMB3\%U"

userSmbHome="\\PDC\%U"

# The UNC path to profiles locations (%U username substitution)

# Just set it to a null string if you want to use the smb.conf 'logon path'

# directive and/or disable roaming profiles

# Ex: userProfile="\\PDC-SMB3\profiles\%U"

userProfile="\\PDC\profiles\%U"

# The default Home Drive Letter mapping

# (will be automatically mapped at logon time if home directory exist)

# Ex: userHomeDrive="H:"

userHomeDrive="H:"

# The default user netlogon script name (%U username substitution)

# if not used, will be automatically username.cmd

# make sure script file is edited under dos

# Ex: userScript="startup.cmd" # make sure script file is edited under dos

userScript="logon.bat"

mailDomain="fnc.com.ve"

En la siguiente seccin veremos como actualizar el directorio LDAP con la informacin de Samba requerida para un controlador de dominio.

Ahora que ya hemos editado los archivos de configuracin de las herramientas smbldap-tools, inicializaremos nuestro directorio LDAP con la informacin para el dominio NT: FNC.COM.VE.

El comando smbldap-populate inicializar nuestro directorio LDAP con la siguiente informacin:

Base DN: dc=fnc,dc=com,dc=ve

Contenedor (OU= Unidad Organizativa ) para las cuentas Unix/Samba:ou=Users

En el contenedor para los Usuarios, se crearn por defecto los usuarios:root y nobody los cuales sern mapeados al usuarios Administrador y Guest Samba respectivamente.

Contenedor (OU= Unidad Organizativa ) para los Grupos Unix/Samba: ou=Groups

En el contenedor de los Grupos, se crearn por defecto los Grupos Predeterminados de un dominio Samba: Domain Admins,Domain Users, Domain Guests, Domain Computers.

Contenedor (OU= Unidad Organizativa ) para las cuentas de Computadoras Windows:ou=Computers

Contenedor (OU= Unidad Organizativa ) para los mapeos de Cuentas Unix a Cuentas Samba/Windows (SID): ou=Idmap

Para inicializar nuestro directorio LDAP con la informacin de arriba usaremos el comando smbldap-populatede la siguiente manera:

root@servidorimpresion:# smbldap-populate

Populating LDAP directory for domain FNC.COM.VE (S-1-5-21-3702025042-3527879707-4288773517)

(using builtin directory structure)

entry dc=fnc,dc=com,dc=ve already exist.

adding new entry: ou=Users,dc=fnc,dc=com,dc=ve

adding new entry: ou=Groups,dc=fnc,dc=com,dc=ve

adding new entry: ou=Computers,dc=fnc,dc=com,dc=ve

adding new entry: ou=Idmap,dc=fnc,dc=com,dc=ve

adding new entry: uid=root,ou=Users,dc=fnc,dc=com,dc=ve

adding new entry: uid=nobody,ou=Users,dc=fnc,dc=com,dc=ve

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

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

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

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

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

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

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

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

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

adding new entry: sambaDomainName=FNC.COM.VE,dc=fnc,dc=com,dc=ve

Please provide a password for the domain root:

Changing UNIX and samba passwords for root

New password:

Retype new password:

Al final se nos solicita que asignemos una contrasea para el usuario root del dominio, utilizaremos la contrasea: xxxxxx

Las herramientas smbldap-populate crean 5 grupos locales (built-in): Account Operators, Administrators, Backup Operators, Print Operators, Replicators, a estos grupos les agrega el atributo sambaGroupType con el valor 5, el tipo de grupo samba 5 es usado para grupos de dominio y no para grupos locales, para los grupos samba locales debe usar el tipo 4

Use el comando ldapmodify para cambiar los atributos en los dn de los grupos, cree el archivo /tmp/samba-builtin-changetype.ldif:

Nota: Se debe tener en cuenta que no puede haber espacios en blanco a final de las lineas

vi /tmp/samba-builtin-changetype.ldif

Con el siguiente contenido:

dn: cn=Account Operators,ou=Groups,dc=fnc,dc=com,dc=ve

changetype: modify

replace: sambaGroupType

sambaGroupType: 4

dn: cn=Administrators,ou=Groups,dc=fnc,dc=com,dc=ve

changetype: modify

replace: sambaGroupType

sambaGroupType: 4

dn: cn=Backup Operators,ou=Groups,dc=fnc,dc=com,dc=ve

changetype: modify

replace: sambaGroupType

sambaGroupType: 4

dn: cn=Print Operators,ou=Groups,dc=fnc,dc=com,dc=ve

changetype: modify

replace: sambaGroupType

sambaGroupType: 4

Ahora realizamos la modificacin con el comando ldapmodify usando el DN cn=admin.

root@servidorimpresion:# ldapmodify -h localhost -x -D "cn=admin,dc=fnc,dc=com,dc=ve" -W -f /tmp/samba-builtin-changetype.ldif

Enter LDAP Password:

modifying entry "cn=Account Operators,ou=Groups,dc=fnc,dc=com,dc=ve"

modifying entry "cn=Administrators,ou=Groups,dc=fnc,dc=com,dc=ve"

modifying entry "cn=Backup Operators,ou=Groups,dc=fnc,dc=com,dc=ve"

modifying entry "cn=Print Operators,ou=Groups,dc=fnc,dc=com,dc=ve"

Despus de haber llenado el directorio con los usuarios y grupos de dominio predeterminados, es necesario reiniciar samba para que tenga conocimiento de la nueva informacin.

root@servidorimpresion:# /etc/init.d/samba restart

Stopping Samba daemons: nmbd smbd.

Starting Samba daemons: nmbd smbd.

2.4 En esta seccin veremos algunos comandos que nos podrn servir para verificar que las cuentas de samba sean las almacenadas en el directorio ldap, y tambin se hace una prueba de conexin al servidor samba.

El comando pdbedit nos servir para hacer un listado de usuarios Samba, el comando pdbedit se conectar al servidor LDAP para obtener la informacin, si todo fue configurado correctamente nos deber de mostrar los siguiente:

root@servidorimpresion:~# pdbedit -L

root:0:root

nobody:65534:nobody

Como se vio antes, los usuarios samba deben estar mapeados al UID de un usuario Unix, en este caso el usuario root Samba esta mapeado al usuario root Unix con UID 0 y el usuario nobody Samba esta mapeado al usuario nobody Unix con UID 65534.

Si deseamos mostrar los detalles de informacin de un usuario samba usamos el comando pdbedit de la siguiente manera:

root@servidorimpresion:~# pdbedit -Lv root

Unix username: root

NT username: root

Account Flags: [U ]

User SID: S-1-5-21-3702025042-3527879707-4288773517-500

Primary Group SID: S-1-5-21-3702025042-3527879707-4288773517-513

Full Name: root

Home Directory: \\PDC\root

HomeDir Drive: H:

Logon Script:

Profile Path: \\PDC\profiles\root

Domain: FNC

Account desc:

Workstations:

Munged dial:

Logon time: 0

Logoff time: never

Kickoff time: never

Password last set: mar, 07 may 2013 06:37:04 VET

Password can change: mar, 07 may 2013 06:37:04 VET

Password must change: never

Last bad password : 0

Bad password count : 0

Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

La cuenta root que se creo en el directorio LDAP, es la que se usar como usuario root local y como administrador de dominio, se debe cambiar la ruta al $HOME de root y asignarle el shell /bin/bash.

root@pdc:~# smbldap-usermod -d /root -s /bin/bash root

Deshabilite el uso de perfil mvil para la cuenta Samba root:

root@pdc:~# smbldap-usermod -C "" root

root@pdc:~# smbldap-usermod -D "" root

root@pdc:~# smbldap-usermod -F "" root

Si desea cambiar la contrasea de la cuenta root/Administrator use el comando:

root@pdc:~# smbldap-passwd root

En un sistema controlador de dominio basado en Samba, las cuentas de usuario de Windows/Samba son mapeadas a una cuenta de usuario Unix, es decir, se mapea el SID (Security Identifier) de la cuenta Windows/Samba con el UID (User ID) de la cuenta Unix, as mismo se mapean los grupos Windows/Samba a grupos Unix a travs del SID del grupo Windows/Samba al GID del grupo Unix, para validar que el mapeo de grupos se haya realizado correctamente use el comando net, por ejemplo:

root@servidorimpresion:~# net groupmap list

Domain Admins (S-1-5-21-3702025042-3527879707-4288773517-512) -> 512

Domain Users (S-1-5-21-3702025042-3527879707-4288773517-513) -> 513

Domain Guests (S-1-5-21-3702025042-3527879707-4288773517-514) -> 514

Domain Computers (S-1-5-21-3702025042-3527879707-4288773517-515) -> 515

Administrators (S-1-5-32-544) -> 544

Account Operators (S-1-5-32-548) -> 548

Print Operators (S-1-5-32-550) -> 550

Backup Operators (S-1-5-32-551) -> 551

Replicators (S-1-5-32-552) -> 552

2.5 Probando conexiones al servidor Samba usando cuentas en LDAP

Cuando realizamos el llenado el directorio con smbldap-populate se creo la cuenta de usuario Windows de nombre root mapeada al administrador del dominio, realicemos una prueba de conexin utilizando la cuenta root del dominio, deberemos utilizar la contrasea que se asigno al llenar el directorio con el comando smbldap-populate y no la contrasea del usuario root local.

root@servidorimpresion:~# smbclient //localhost/netlogon -U root

Enter root's password:

Domain=[FNC] OS=[Unix] Server=[Samba 3.5.6]

smb: \> quit

Ya que configuramos el uso del archivo /etc/samba/smbusers para el mapeo de usuarios, podremos hacer una prueba utilizando la cuenta Administrator, deberemos utilizar la misma contrasea del usuario root.

root@servidorimpresion:~# smbclient //localhost/netlogon -U Administrator

Enter Administrator's password:

Domain=[FNC] OS=[Unix] Server=[Samba 3.5.6]

smb: \> quit

Si las ltimas pruebas no funcionan entonces debe revisar su configuracin y probablemente volver a empezar verificando que todo se haya seguido al pie de la letra.

Configuracin de la resolucin de Identidades con NSS_LDAP

En los sistemas Unix como GNU/Linux los nombres comunes de las cuentas de usuario y grupo son mapeadas a un identificador numrico llamado UID (User ID) y GID (Group ID) respectivamente, el mapeo de un nombre comn a uno numrico es llevado a cabo por la biblioteca de sistema NSS (Name Service Switch), la cual es invocada cada vez que algn comando o aplicacin realizan alguna operacin que requiera la resolucin de un nombre, sea un usuario, un grupo, un nodo de red, entre otras entidades, tambin es usada cuando se realizan operaciones relacionadas con permiso de archivos y autenticacin de usuarios.

Por default la biblioteca de sistema NSS realiza la consulta de usuarios, grupos y shadow usando archivos locales, es decir, /etc/passwd, /etc/group y /etc/shadow respectivamente, ya que nuestro sistema usar un directorio LDAP para almacenar la informacin de los usuarios y grupos ser necesario indicarle a la biblioteca NSS que debe usar un directorio LDAP para obtener informacin sobre dichas identidades, es aqu donde entra el paquete nss_ldap, el paquete nss_ldap es un plugin para la biblioteca de sistema NSS para poder realizar la resolucin de identidades usando como fuente de origen un directorio LDAP.

Para instalarlo ejecutamos:

root@pdc:~# apt-get install libnss-ldap

El sistema de administracin de paquetes apt nos lanzar un asistente para configuracin, a las preguntas respondemos:

LDAP server Uniform Resource Identifier: ldap://127.0.0.1

Distinguished name of the search base dc=fnc,dc=com,dc=ve

LDAP version to use: 3

Cuenta LDAP para root: cn=admin,dc=me,dc=gob,dc=ve

Contrasea para la cuenta LDAP de root: xxxx

Desea permitir que la cuenta del administrador de LDAP se comporte como el administrador local?: no

Hace falta un usuario para acceder a la base de datos LDAP: No

Dar privilegios especiales de LDAP para root: No

Desea hacer que la configuracin slo la pueda leer o escribir el propietario: Si

Luego respaldamos el archivo de configuracin del cliente ldap, este se ubica en /etc/ldap y se llama ldap.conf.

cd /etc/ldap

cp ldap.conf ldap.con.org

vi ldap.conf

luego copiamos en el archivo lo siguiente:

uri ldap://127.0.0.1/

ldap_version 3

# Base de busqueda

base dc=fnc,dc=com,dc=ve

# Contenedores para cuentas de usuario, grupos y computadoras

nss_base_passwd ou=Users,dc=fnc,dc=com,dc=ve?sub

nss_base_passwd ou=Computers,dc=fnc,dc=com,dc=ve?sub

nss_base_shadow ou=Users,dc=fnc,dc=com,dc=ve?sub

nss_base_group ou=Groups,dc=fnc,dc=com,dc=ve?sub

# Tipo binding

bind_policy soft

nss_initgroups_ignoreusers daemon,bin,sys,sync,games,man,lp,mail,news,uucp,proxy,www-data,backup,list,irc,gnats,nobody,libuuid,dhcp,syslog,klog,sshd,ntp,snmp,openldap

# Filtros PAM

pam_login_attribute uid

pam_member_attribute memberuid

pam_filter objectclass=posixAccount

# Cambio contrasea via passwd(1)

pam_password exop

Ahora debemos configurar la resolucin de entidades va LDAP en el archivo de configuracin de la biblioteca NSS: /etc/nsswitch.conf y modificar las entradas para las entidades: passwd, group y shadow.

vi /etc/nsswitch.conf

Cambiar:

passwd: compat

group: compat

shadow: compat

Por:

passwd: compat ldap

group: compat ldap

shadow: compat ldap

hosts: files wins dns

Despus de guardar los cambios haremos unas pruebas con el comando getent para verificar que si este haciendo las consultas al directorio LDAP, pero antes reiniciemos el servivcio nscp.

/etc/init.d/nscd restart

Restarting Name Service Cache Daemon: nscd.

Verificando la resolucin de usuarios:

# getent passwd | grep -E 'root|nobody'

root:x:0:0:root:/root:/bin/bash

nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

root:x:0:0:Netbios Domain Administrator:/root:/bin/bash

nobody:x:65534:65534:nobody:/nonexistent:/bin/sh

Ahora haremos una prueba para que podamos obtener la lista de grupos tanto del archivo /etc/group como del directorio LDAP.

root@pdc:~# getent group | grep -E 'root|Domain'

root:x:0:

Domain Admins:*:512:root

Domain Users:*:513:

Domain Guests:*:514:

Domain Computers:*:515:

En la salida del comando anterior la entrada para el grupo root fue obtenida del archivo /etc/group y las entradas de los grupos Domain XXXX fueron obtenidas del directorio LDAP.

Ahora verifique que el mapeo de grupos Windows a grupos Unix se realice correctamente, mostrando el nombre comn del grupo Unix en la salida del comando net groupmap list, por ejemplo:

root@pdc:~# net groupmap list

Domain Admins (S-1-5-21-2911508632-2405292923-4115677068-512) -> Domain Admins

Domain Users (S-1-5-21-2911508632-2405292923-4115677068-513) -> Domain Users

Domain Guests (S-1-5-21-2911508632-2405292923-4115677068-514) -> Domain Guests

Domain Computers (S-1-5-21-2911508632-2405292923-4115677068-515) -> Domain Computers

Administrators (S-1-5-32-544) -> Administrators

Account Operators (S-1-5-32-548) -> Account Operators

Print Operators (S-1-5-32-550) -> Print Operators

Backup Operators (S-1-5-32-551) -> Backup Operators

Replicators (S-1-5-32-552) -> Replicators

3.- Creacin de Usuarios y Grupos en el Dominio

Antes de crear un usuario debemos copiar el archivo smbldap-passwd que se encuentra el el directorio/usr/sbin/ con el nombre smbldap-passwd.cmd

para ello corremos el siguiente comando:

root@pdc:~# cd /usr/sbin/

root@pdc:~# cp smbldap-passwd smbldap-passwd.cmd

Para crear un usuario del domino se debe correr el siguiente comando:

smbldap-useradd -a -g xxx -m -c 'Luis Perez' -N "Luis" -S "Perez" -s /bin/bash -d /home/lperez -F "" -P lperez

Donde xxx representa el GID del grupo al que pertenece el usuario.

Este usuario podr iniciar sesin tanto el Linux como en Windows.

Para agregar un grupo al dominio de debe correr el siguiente comando:

smbldap-groupadd nombre_grupo

Para agregar un usuario a un grupo debe correr el siguiente comando:

smbldap-usermod -G grupo usuario

Donde usuario es el nombre del usuario que se desea incluir al grupo y

grupo es el nombre del grupo al que se quiere incluir

4,- Instalacin de NFS en el Servidor

Llegado a este punto, debemos instalar la herramienta NFS, quien nos va a permitir compartir el home personal de los usuarios y las carpetas de grupos compartidas, en maquinas linux.

Para ello instalamos el NFS:

apt-get install portmap nfs-kernel-server

El archivo de configuracin se encuentra en el directorio /etc/exports.

Una vez instalado el servicio, debemos crear el directorio donde estarn las carpetas que vamos a compartir, en el caso del home personal de cada usuario no debemos hacer nada ya que cuando aadimos un nuevo usuario al dominio se crea automticamente la carpeta en el directorio /home.

En el caso de los grupos, debemos crear el directorio que queremos compartir, para ello ejecutamos el comando:

mkdir -p /home/compartido/xxxxxxx

Donde compartido representa la carpeta que va a contener todos los directorio de las diferentes oficinas que queremos compartir y xxxxxxx representa la carpeta contenedora de la informacin de la oficina o unidad.

Ahora debemos asignarle los permisos a la carpeta xxxxxxx, para ello hacemos:

Creamos el grupo donde estarn contenidos todos los usuario que tendrn acceso a la carpeta:

smbldap-groupadd prueba

Ahora aadimos los usuarios al grupo:

smbldap-usermod -G usuario prueba

Asignamos el propietario de la carpeta:

chown root:prueba /home/compartido/xxxxxxx

Asignamos los permisos 770 a la carpeta

chmod 770 /home/compartido/xxxxxxx

Una vez creada la carpeta, debemos aadir la linea que va a permitir compartir la carpeta con la maquina cliente, esto se hace en el archivo /etc/exports, lo editamos:

vi /etc/exports

y aadimos la linea:

/home/compartido/xxxxxxx-sync,no_subtree_check,rw 10.12..x.x @prueba

Donde:

/home/compartido/xxxxxxx representa la carpeta que se quiere compartir

-sync replica los cambios despus que los mismos sean guardados.

no_subtree_check no comprueba que las carpetas compartidas son todas las pertenecientes a un mismo volumen por lo que la transferencia de la lista de archivos es mas rpida.

10.12.x.x representa la direccin IP del la mquina cliente (a la que se quiere compartir la carpeta).

@prueba representa el grupo que tendr permiso para acceder a la carpeta.

En el caso del home personal de cada usuario debemos aadir la siguiente linea por cada usuario:

/home/usuario 10.12.x.x(rw,sync,subtree_check)

Donde:

/home/usuario representa la carpeta contenedora de informacin del usuario que se quiere compartir a la mquina cliente

10.12.x.x representa la direccin IP del la mquina cliente (a la que se quiere compartir la carpeta).

rw representa permiso de escritura y lectura sobre la carpeta

sync replica los cambios despus que los mismos sean guardados.

subtree_check comprueba que las carpetas compartidas son todas las pertenecientes a un mismo volumen

Ahora debemos guardar y salir del archivo. Para que los cambios tengan efecto y para no interrumpir el servicio a otros usuario que ya estn usando recursos compartidos, debemos correr el siguiente comando:

exportfs -r

Para montar el directorio compartido en la maquina cliente se debe correr el siguiente comando:

mount dir_ip_servidor_nfs:/home/compartido/xxxxxx /directorio_donde_se_quiere_montar

Si se quiere hacer de manera automtica cuando se inicie la maquina debe colocar la linea anterior en el archivo /etc/fstab

5.- Compartiendo una Carpeta a un Grupo en Mquinas Windows

Para compartir una carpeta en mquinas con windows debemos modificar el archivo /etc/smb.conf

al final debemos agregar:

[XXX]

comment = Archivos comunes de XXX

browseable = yes

writeable = yes

create mask = 0770

path = /home/compartido/XXX

write list = NOMBRE_GRUPO

Guardamos y salimos el archivo.

[XXX] Representa el nombre de la carpeta que vamos a compartir

path Ruta donde se encuentra la carpeta

write list Nom,bre del grupo que tiene permiso sobre la carpeta

Luego se debe crear la carptea XXX

mkdir /home/compartido/XXX

Ahora debemos asignarle los permisos a la carpeta XXX, para ello hacemos:

Creamos el grupo donde estarn contenidos todos los usuario que tendrn acceso a la carpeta:

smbldap-groupadd prueba

Ahora aadimos los usuarios al grupo:

smbldap-usermod -G usuario prueba

Asignamos el propietario de la carpeta:

chown root:prueba /home/compartido/XXX

Asignamos los permisos 770 a la carpeta

chmod 770 /home/compartido/XXX

Luego recargamos a configuracin del samba con el comando:

/etc/init.d/samba reload

Finalmente, en la mquina windows cliente debemos agregar una unidad de red colocando como ruta:

\\PDC\XXX y marcamos el check box que dice conectar de nuevo al iniciar sesin.

6.- Configuracin De Cuotas de Disco

Ya que cada usuario tendr una carpeta compartida en el servidor, debemos asegurarnos de asignarle una cuota de almacenamiento en disco, para que no sea posible que un usuario ocupe espacio dems y perjudique al resto.

Para ello se debe instalar la aplicacin llamada quota.

apt-get install quota quotatool

Luego debemos modificar el archivo /etc/fstab para indicarle al sistema que filesystem va a utilizar cuotas, para ello editamos el archivo:

vi /etc/fstab

En nuestro caso aplicaremos cuotas al directorio /home, ubicamos a linea de /home y aadimos dentro del espacio de opciones lo siguiente: usrquota,grpquota

/dev/hda2/ /home ext3 defaults,usrquota,grpquota 0 1

Guardamos y salimos, en el prximo reinicio esta informacin sera cargada. Si queremos actualizar esta informacin sin necesidad de reiniciar el equipo, debemos correr el siguiente comando:

mount -o remount /home

El sistema de archivos "/home" esta listo ahora para soportar cuotas de disco. El siguiente paso es verificar con el comando quotacheck por sistemas de archivos que soporten cuotas. Este comando crea, verifica o repara el control de cuotas en los sistemas que lo soporten, en este caso creara el soporte:

quotacheck -F vfsv0 -avumg

Para activar las cuotas de disco recin configuradas, solo bastar ejecutar:

quotaon /home

Para asignar cuotas de disco a cualquier usuario o grupo solo har falta utilizar edquota citando el nombre del usuario al cual se le quiere aplicar:

edquota -u usuario

Lo anterior deber devolver algo como lo siguiente a travs de vi u otro editor de texto simple:

Asignacin de una cuota de 250MB

Disk quotas for user operador (uid 1000):

Filesystem blocks soft hard inodes soft hard

/dev/sda1 16 250000 260000 4 0 0

Donde Filesystem representa la carpeta a la que se quiere aplicar cuotas

blocks Representa el nmero de bloques usado actualmente por el usuario.

Soft (Suave) Este lmite (para bloques o inodos) que es siempre menor al HARD, puede ser excedido por el usuario, pero ser constantemente advertido que el lmite de uso para bloques o inodos ya ha sido excedido. Podra verse como un lmite de advertencia que le estar indicando al usuario que su lmite ya se excedi y tome medidas.

Hard (Duro) Cuando se establece (para bloques o inodos), es el lmite absoluto. El usuario no podr exceder este lmite.

Inodos Representa el nmero de inodos usado actualmente por el usuario

Soft y Hard representan el tiempo de gracia.

para propagar esta cuota a otros usuarios se ejecuta el comando

edquota -p usuario usuario1

para revisar si tiene cuota con

quota usuario

7.- Unir una Mquina al Dominio

Mquina con Windows XP Profesional

Aadimos la mquina al dominio con el siguiente comando: (esto se debe hacer el el servidor)

smbldap-useradd -w -i (nombre de mquina$)

Luego colocamos una clave.

En el equipo que queremos agregar al dominio hacemos lo siguiente:

1. Entramos a Windows como Administrador del equipo

2. Botn derecho sobre Mi PC y sobre propiedades

3. Entramos en la pestaa Nombre de equipo

4. Pulsamos sobre el botn Cambiar...

5. Pulsamos sobre Dominio y debajo escribimos el nombre del dominio en nuestro caso es

FNC

6. Nos solicitara un usuario y contrasea, en nuestro caso usuario root y contrasea XXX La que coloco cuando utilizo el comando sambaldap-populate

7. Finalmente nos da la bienvenida al dominio y nos pedir reiniciar el sistema.

8. Al iniciar de nuevo el equipo debemos seleccionar el dominio e introducir un usuario y

clave del dominio LDAP.

Mquina con Windows 7

Para registrar un equipo con Windows 7 al domino, debemos realizar algunos cambios al registro, para ello debemos hacer lo siguiente:

En el servidor, agregamos el equipo al domino con el siguiente comando:

smbldap-useradd -w (nombre de mquina)

Luego en el equipo que queremos incluir en el dominio, hacemos:

Click en Inicio

Click en ejecutar

colocamos regedit y nos abre el editor del registro, una vez all ubicamos las siguientes llaves:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Parameters

All agregamos los siguientes parmetros:

"DNSNameResolutionRequired"=dword:00000000

"DomainCompatibilityMode"=dword:00000001

Luego buscamos la siguiente llave:

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\System]

y agregamos las siguientes llaves:

SlowLinkDetectEnabled"=dword:00000000

DeleteRoamingCache"=dword:00000001

WaitForNetwork"=dword:00000000

CompatibleRUPSecurity"=dword:00000001

Luego buscamos la siguiente llave:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

All modificamos el siguiente parmetro:

EnableLUA"=dword:00000000

Finalmente,

1. Entramos a Windows como Administrador del equipo

2. Botn derecho sobre Mi PC y sobre propiedades

3. Entramos en la pestaa Nombre de equipo

4. Pulsamos sobre el botn Cambiar...

5. Pulsamos sobre Dominio y debajo escribimos el nombre del dominio en nuestro caso es

FNC

6. Nos solicitara un usuario y contrasea, en nuestro caso usuario root y contrasea xxx La que coloco cuando utilizo el comando sambaldap-populate

7. Finalmente nos da la bienvenida al dominio y nos pedir reiniciar el sistema.

8. Al iniciar de nuevo el equipo debemos seleccionar el dominio e introducir un usuario y su

clave del dominio LDAP.

Cuando se haya unido la mquina al domino dar un mensaje de error podemos obviarlo o ejecutamos el siguiente parche:

8.- Tareas de Mantenimiento

8.1- Cambiar o asignar contrasea al Root DN de OpenLDAP

Esta es una cuenta privilegiada que no tiene restricciones sobre el directorio, por lo tanto debemos asegurarla.

Para cambiar la contrasea debemos ejecutar lo siguiente:

slappasswd

New password:

Re-enter new password:

{SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6

Copie el HASH {SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6 y cambielo en el valor rootpw

en el archivo olcDatabase={1}hdb olcDatabase={0}hdb ubicado en el directorio etc/ldap/slapd.d/cn=config

Ejemplo:

rootdn "cn=admin,dc=fnc,dc=com,dc=ve"

rootpw {SSHA}VanYekdrphCkbjDffLCXbBsxsg3QJBI6

Para que el cambio tome efecto reinicie el servicio LDAP:

# /etc/init.d/slapd restart

8.2- Respaldar los archivos de configuracin de OpenLDAP

Se recomienda respaldar los directorios de configuraciones tanto de Samba, OpenLDAP, smbldap-tools, NSS LDAP y PAM.

En la siguiente tabla se muestra una lista:

Tabla 11.1. Directorios de configuracin a respaldar

Servicio

Archivos y Directorios

OpenLDAP

/etc/ldap/, /etc/default/slapd

Samba

/etc/samba

smbldap-tools

/etc/smbldap-tools/

libnss-ldap

/etc/nsswitch.conf /etc/libnss-ldap.conf /etc/pam_ldap.conf

PAM

/etc/pam.d


Incluya los archivos y directorios mencionados en la tabla de arriba en su sistema de respaldos.

8.3- Respaldar y Restaurar una base de datos de OpenLDAP

Generaremos respaldos en fro y en caliente, los respaldos sern generados en formato LDIF.

El programa slapcat(8) lee la informacin de la base de datos en orden secuencial y genera la salida correspondiente en formato LDIF incluyendo atributos de usuario y operacionales, el programa slapcat solo respaldara las entradas que se leyeron en el momento de la ejecucin, si en el momento de que slapcat esta ejecutandose se realiza una operacin de escritura sobre alguna entrada dicho cambio no ser incluido en el respaldo.

En OpenLDAP las bases de datos de tipo hdb y bdb pueden ser respaldadas mientras el servicio slapd(8) esta en ejecucin usando el programa slapcat, a este tipo de respaldo se le llama en caliente.

Si no esta seguro de que no habr modificacioens en los datos de las bases de datos de OpenLDAP y no sabe si dichos cambios puedan afectar las aplicaciones o clientes LDAP se recomienda que detenga el servicio slapd antes de generar el respaldo con slapcat, a este tipo de respaldo se le llama en frio.

Para crear un respaldo en frio de una base de datos de OpenLDAP siga el siguiente procedimiento:

Detener el servicio slapd:

# /etc/init.d/slapd stop

Respaldar la base de datos usando el programa slapcat:

# slapcat -b dc=fnc,dc=com,dc=ve -l respaldo-dc=fnc,dc=com,dc=ve-`date +%d-%b-%Y`.ldif

El comando slapcat generar un respaldo de la base de datos dc=fnc,dc=com,dc=ve definida por el parmetro -b en el archivo respaldo-dc=fnc,dc=com,dc=ve-`date +%d-%b-%Y`.ldif definido por el parmetro -l.

Para ejecutar un respaldo en caliente se debe ejecutar el mismo comando que para el respaldo en fro

Para restaurar la base de datos a partir del archivo LDIF generado por slapcat siga el siguiente procedimiento:

Apagar el servicio slapd:

# /etc/init.d/slapd stop

Limpiar el directorio de base de datos de slapd:

# (cd /var/lib/ldap/; rm -fv alock __db.* *.bdb log.*)

Restaurar directorio a partir del archivo LDIF:

# slapadd -v -b dc=fnc,dc=com,dc=ve -l respaldo-dc=fnc,dc=com,dc=ve-`date +%d-%b-%Y`.ldif

Opcionalmente Re indexe todos los atributos:

# slapindex -v

Re establecer permisos al directorio de datos:

# chown -R openldap:openldap /var/lib/ldap

Iniciar el servicio slapd:

# /etc/init.d/slapd start

8.3-Respaldando archivos importante de Samba

Respaldar los archivos en el directorio /etc/samba/ y /var/lib/samba/

TODO: Meter ejemplo real: detener samba, crear directorio de respaldos mkdir -p /var/backups/samba/, cp -va /var/lib/samba/* /var/backups/samba/var/lib/samba/, cp -va /etc/samba/* /var/backups/samba/etc/samba/

8.4- Respaldando el SID del Dominio Samba

Es prudente almacenar el SID de la maquina y/o dominio en un archivo por seguridad, Porque? Porque un cambio en el nombre de la maquina (hostname) o en el nombre de dominio (workgroup) puede resultar en un cambio en el SID. As, cuando tienes el SID a la mano, es simple restaurarlo. La alternativa sera sufrir el dolor de tener que recuperar los perfiles de los usuarios de escritorio y quizs re-unir todos las maquinas miembros del dominio.

Primero, no olvides almacenar el SID local a un archivo. Es una buena idaa ponerlo en el directorio en el que el archivo smb.conf esta almacenado, un ejemplo simple seria:

root@pdc:~# net getlocalsid > /etc/samba/EXAMPLE-SID

Para restaurar el SID usamos el comando:

root@pdc:~# net setlocalsid S-1-5-21-1482872308-118742792-2317756604

9.- Instalacin de Cups (Servidor de Impresin de Linux)

Para instalar Cups se debe correr el siguiente comando:

root@pdc:~# aptitude install cups

esto instalar el servidor de impresin CUPS con todas sus dependencias.

Luego movemos el archivo de configuracin de cups para hacer un respaldo de ste.

root@pdc:~# mv /etc/cups/cupsd.conf /etc/cups/cupsd.conf.org

Creamos un nuevo archivo cupsd.conf

root@pdc:~# vi /etc/cups/cupsd.conf

y copiamos las siguientes lineas en l:

LogLevel warn

MaxLogSize 0

# Allow remote access

Port 631

Listen /var/run/cups/cups.sock

# Enable printer sharing and shared printers.

Browsing Off

BrowseOrder allow,deny

BrowseAllow all

BrowseRemoteProtocols CUPS dnssd

BrowseAddress @LOCAL

BrowseLocalProtocols CUPS dnssd

DefaultAuthType Basic

WebInterface Yes

# Allow shared printing...

Order allow,deny

Allow all

AuthType Default

Require user @SYSTEM

JobPrivateAccess all

JobPrivateValues none

SubscriptionPrivateAccess default

SubscriptionPrivateValues default

Order deny,allow

Require user @OWNER @SYSTEM

Order deny,allow

AuthType Default

Require user @SYSTEM

Order deny,allow

AuthType Default

Require user @SYSTEM

Order deny,allow

Require user @OWNER @SYSTEM

Order deny,allow

Order deny,allow

JobPrivateAccess default

JobPrivateValues default

SubscriptionPrivateAccess default

SubscriptionPrivateValues default

AuthType Default

Order deny,allow

AuthType Default

Require user @OWNER @SYSTEM

Order deny,allow

AuthType Default

Require user @SYSTEM

Order deny,allow

AuthType Default

Require user @SYSTEM

Order deny,allow

AuthType Default

Require user @OWNER @SYSTEM

Order deny,allow

Order deny,allow

Luego Guardamos y salimos,

Finalmente reiniciamos el servicio:

/etc/init.d/cups restart

Para agregar una impresora se debe acceder al servidor de impresin a travs de un navegador

http://dir_ip_servidor:631

9.- Instalacin de Pykota

Pykota es una aplicacin que se integra a cups para administrar las cuotas de impresin de los usuarios, adicionalmente puede utilizar como almacn de usuario a LDAP

Lo primero que debe hacer es descargar la ultima versin de Pykota desde su pagina oficial:

http://www.pykota.com/

http://www.pykota.com/software/pykota/download/tarballs/pykota-1.26_fixes_official.tar.gz/view

Descomprimiremos el paquete:

root@pdc:~# tar xvzf pykota-1.26_fixes_official.tar.gz

root@pdc:~# cd pykota-1.26_fixes_official/

Ahora chequeamos que las dependencias estn instaladas, para ello corremos el siguiente comando:

root@pdc:~# python checkdeps.py

Este comando arrojar las dependencias que falten, en este caso vamos a instalar:

aptitude install python-egenix-mxdatetime python-ldap python-osd python-jaxml python-pam

Sin embargo faltaron las siguientes dependencias necesarias para el buen funcionamiento de pykota. Estas deben ser descargadas para ser instaladas individualmente.

Python-SNMP http://sourceforge.net/projects/pysnmp/

Python-pkpgcounter http://www.pykota.com/software/pkpgcounter/download/tarballs/

Python-pkipplibhttp://www.pykota.com/software/pkipplib/download/tarballs

Una vez descargadas estas aplicaciones debemos proceder a instalarlas, para cada una de ellas hay que hacer lo siguiente:

Entrar al directorio donde se encuentra el archivo tar.gz que acabamos de descargar.

Descomprimir el archivo con el siguiente comando:

tar xvzf nombre_archivo.tar.gz

Entrar al nuevo directorio:

cd nombre_archivo

Finalmente instalar la dependencia:

python setup.py install

Repetimos el procedimiento para las tres dependencias. Una vez finalizada la instalacin de estas dependencias continuamos con la instalacin de pykota.

Para ello volvemos al directorio donde se encuentra la fuente de pykota:

root@pdc:~# cd pykota-1.26_fixes_official/

y corremos el comando para instalarlo

root@pdc:~# python setup.py install

Con esto habremos instalado pykota, solo falta hacer algunos ajustes para integrar el pykota al LDAP.

9.1- Integracin de PYKOTA con LDAP

Debemos copiar el esquema de pykota dentro del directorio ldap, para ello correomos el siguiente comando:

root@pdc:~# cp /usr/local/share/pykota/ldap/pykota.schema /etc/ldap/schema

Entramos al directorio /etc/ldap/schema

root@pdc:~# cd /etc/ldap/schema

Editamos el archivo que utilizamos para aadir el esquema de samba

root@pdc:~# vi schema_convert.conf

y agregamos al final del archivo la siguiente linea:

include /etc/ldap/schema/pykota.schema

guardamos y salimos.

luego creamos un directorio temporal para almacenar el resultado:

mkdir /tmp/ldif_output

Ahora, convertimos el archivo pykota.schema a pykota.ldif, con la siguiente sintaxis:

slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={13}pykota,cn=schema,cn=config" > /tmp/cn=pykota.ldif

Edite el archivo generado /tmp/cn\=pykota.ldif, cambiando los siguientes atributos.

Como se muestra a continuacin:dn:ou=pykota,dc=gsr,dc=pt

ou: pykota

objectClass: top

objectClass: organizationalUnit

dn: cn=pykota,cn=schema,cn=config

...

cn: pykota

y remueva las siguientes lineas al final del archivo:

structuralObjectClass: olcSchemaConfig

entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95

creatorsName: cn=config

createTimestamp: 20080827045234Z

entryCSN: 20080827045234.341425Z#000000#000#000000

modifiersName: cn=config

modifyTimestamp: 20080827045234Z

Guardamos el archivo y salimos.

Finalmente aadimos el nuevo esquema utilizando la herramienta ldapadd.

ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=pykota.ldif

Enter LDAP Password:

adding new entry "cn=pykota,cn=schema,cn=config"

Debe colocar la clave del administrador del rbol ldap que configuramos en los pasos anteriores.

Esto debe generar un archivo llamado cn={x}pykota.ldif en el directorio /etc/ldap/slapd.d/cn=config/cn=schema, donde x representa el siguiente numero

verificamos esto con el comando:

ls /etc/ldap/slapd.d/cn\=config/cn\=schema/

Luegro creamos los ndices para agilizar la bsqueda, para ello creamos un archivo llamado pykota_indexes.ldif en la ruta /etc/ldap/schema

vi /etc/ldap/schema/pykota_indexes.ldif

este archivo debe contener la siguiente informacin:

dn: olcDatabase={1}hdb,cn=config

changetype: modify

add: olcDbIndex

olcDbIndex: pykotaUserName pres,eq,sub

olcDbIndex: pykotaGroupName pres,eq,sub

olcDbIndex: pykotaPrinterName pres,eq,sub

olcDbIndex: pykotaBillingCode pres,eq,sub

olcDbIndex: pykotaLastJobIdent eq

Guardamos y salimos.

Cambese a directorio /etc/ldap/schema

cd /etc/ldap/schema

Luego utilizamos la herramienta ldapmodify para agregar los ndices al rbol.

ldapmodify -x -D cn=admin,cn=config -W -f pykota_indexes.ldif

nos solicita la clave del administrador, la colocamos y obtendremos una salida como esta:

Enter LDAP Password:

modifying entry "olcDatabase={1}hdb,cn=config"

si todo sali bien, podremos ver los ndices usando la herramienta ldapsearch :

ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb

nos solicita la clave y obtenemos una salida como esta:

Enter LDAP Password:

dn: olcDatabase={1}hdb,cn=config

objectClass: olcDatabaseConfig

objectClass: olcHdbConfig

olcDatabase: {1}hdb

olcDbDirectory: /var/lib/ldap

olcSuffix: dc=me,dc=gob,dc=ve

olcAccess: {0}to attrs=userPassword,shadowLastChange,sambaLMPassword,sambaNTPa

ssword by self write by anonymous auth by dn="cn=admin,dc=me,dc=gob,dc=ve" wr

ite by * none

olcAccess: {1}to dn.base="" by * read

olcAccess: {2}to * by self write by dn="cn=admin,dc=me,dc=gob,dc=ve" write by

* read

olcLastMod: TRUE

olcRootDN: cn=admin,dc=me,dc=gob,dc=ve

olcRootPW: {SSHA}rUo7P0QDuAz8iYtUaK+oCRpuvINsdZwF

olcDbCheckpoint: 512 30

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

olcDbIndex: objectClass eq

olcDbIndex: uidNumber eq

olcDbIndex: gidNumber eq

olcDbIndex: loginShell eq

olcDbIndex: uid eq,pres,sub

olcDbIndex: cn eq,pres,sub

olcDbIndex: sn eq,pres,sub

olcDbIndex: displayName eq,pres,sub

olcDbIndex: memberUid eq,pres,sub

olcDbIndex: mail eq,pres,sub

olcDbIndex: givenname 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

olcDbIndex: pykotaUserName pres,eq,sub

olcDbIndex: pykotaGroupName pres,eq,sub

olcDbIndex: pykotaPrinterName pres,eq,sub

olcDbIndex: pykotaBillingCode pres,eq,sub

olcDbIndex: pykotaLastJobIdent eq

En este momento slo queda regenerar los ndices de slapd para ello bajamos el servicio de slapd

/etc/init.d/slapd stop

Luego corremos el siguiente comando:

slapindex -v

Finalmente subimos el servicio de slapd

/etc/init.d/slapd start

Ahora creamos la estructura de pykota dentro del directorio ldap, para ello creamos un archivo dentro del direcotio /tmp llamado pykota.ldif

vi /tmp/pykota.ldif

en el copiamos la siguiente estructura:

dn:ou=pykota,dc=me,dc=gob,dc=ve

ou: pykota

objectClass: top

objectClass: organizationalUnit

dn:ou=printers,ou=pykota,dc=me,dc=gob,dc=ve

ou: printers

objectClass: top

objectClass: organizationalUnit

dn:ou=jobs,ou=pykota,dc=me,dc=gob,dc=ve

ou: jobs

objectClass: top

objectClass: organizationalUnit

dn:ou=uquotas,ou=pykota,dc=me,dc=gob,dc=ve

ou: uquotas

objectClass: top

objectClass: organizationalUnit

dn:ou=gquotas,ou=pykota,dc=me,dc=gob,dc=ve

ou: gquotas

objectClass: top

objectClass: organizationalUnit

dn:ou=lastjobs,ou=pykota,dc=me,dc=gob,dc=ve

ou: lastjobs

objectClass: top

objectClass: organizationalUnit

dn:ou=billingcodes,ou=pykota,dc=me,dc=gob,dc=ve

ou: billingcodes

objectClass: top

objectClass: organizationalUnit

Guardamos y salimos.

Agregamos la nueva estructura al directorio ldap corriendo el siguiente comando:

ldapadd -x -D cn=admin,dc=me,dc=gob,dc=ve -W -h localhost -f /tmp/pykota.ldif

Introducimos la clave del usuario admin de LDAP y obtendremos el siguiente resultado:

Enter LDAP Password:

adding new entry "ou=pykota,dc=me,dc=gob,dc=ve"

adding new entry "ou=printers,ou=pykota,dc=me,dc=gob,dc=ve"

adding new entry "ou=jobs,ou=pykota,dc=me,dc=gob,dc=ve"

adding new entry "ou=uquotas,ou=pykota,dc=me,dc=gob,dc=ve"

adding new entry "ou=gquotas,ou=pykota,dc=me,dc=gob,dc=ve"

adding new entry "ou=lastjobs,ou=pykota,dc=me,dc=gob,dc=ve"

Con esto hemos integrado la aplicacin pykota con LDAP.

9.2- Archivos de Configuracin de Pykota

Creamos el usuario Pykota:

adduser --system --group --home /etc/pykota --gecos PyKota pykota

Aadimos el usuario pykota al grupo de impresin:

adduser lp pykota

Ahora debemos crear los archivos de configuracin de pykota. Para ello creamos el archivo pykota.conf dentro del directorio /etc/pykota

vi /etc/pykota/pykota.conf

dentro del archivo copiamos el siguiente contenido:

[global]

config_charset : UTF-8

storageuserpw : readonlypw

storagebackend: ldapstorage

storageserver: ldap://127.0.0.1:389

storagename: dc=me,dc=gob,dc=ve

storageuser: cn=admin,dc=me,dc=gob,dc=ve

storageuserpw: admin

userbase: ou=Users,dc=me,dc=gob,dc=ve

userrdn: uid

balancebase: ou=Users,dc=me,dc=gob,dc=ve

balancerdn: uid

groupbase: ou=Groups,dc=me,dc=gob,dc=ve

grouprdn: cn

printerbase: ou=printers,ou=pykota,dc=me,dc=gob,dc=ve

printerrdn: cn

jobbase: ou=jobs,ou=pykota,dc=me,dc=gob,dc=ve

lastjobbase: ou=lastjobs,ou=pykota,dc=me,dc=gob,dc=ve

billingcodebase: ou=billingcodes,ou=pykota,dc=me,dc=gob,dc=ve

userquotabase: ou=uquotas,ou=pykota,dc=me,dc=gob,dc=ve

groupquotabase: ou=gquotas,ou=pykota,dc=me,dc=gob,dc=ve

newuser : attach(posixAccount, warn)

newgroup : attach(posixGroup, warn)

usermail : mail

groupmembers: memberUid

ldapcache: no

storagecaching: No

disablehistory: No

logger: system

debug : Yes

logourl : http://www.pykota.com/pykota.png

logolink : http://www.pykota.com/

smtpserver: 172.16.3.0

maildomain: me.gob.ve

usernamecase: native

privacy : no

onbackenderror : nocharge

directory : /var/spool/cups

keepfiles : no

accounter: software()

skipinitialwait : no

preaccounter: software()

onaccountererror: stop

admin: Operador

adminmail: [email protected]

mailto : both

balancezero: 0.0

gracedelay : 7

poorman : 1.0

poorwarn : Your Print Quota account balance is low.Soon you'll not be allowed to print anymore.

softwarn: Usted esta proximo a alcanzar su limite de impresion

hardwarn: Usted a alcanzado su maxima cuota de impresion pongase en contacto con el administrador o espere a que su cuota sea renovada

policy : external(pkusers --add --skipexisting --limitby noquota --description Added automatically $PYKOTAUSERNAME && edpykota --add --skipexisting -- printer $PYKOTAPRINTERNAME $PYKOTAUSERNAME)

policy: deny

maxdenybanners: 0

enforcement : strict

trustjobsize : yes

denyduplicates : no

duplicatesdelay : 0

noprintingmaxdelay : 60

statusstabilizationloops : 5

statusstabilizationdelay : 4.0

snmperrormask : 0x4FCC

Tenga especial cuidado cuando copie las lineas que estn resaltadas en negrita, ya que cuando copiamos dentro del archivo tiende a separa la linea en varias lineas, en ese caso convertir las lineas mltiples en una sola.

Guarde y salga del archivo.

Ahora creamos el archivo pykotadmin.conf dentro del directorio /etc/pykota

vi /etc/pykota/pykotadmin.conf

en el copiamos lo siguiente:

[global]

storagebackend: ldapstorage

storageserver: ldap://127.0.0.1:389

storagename: dc=me,dc=gob,dc=ve

storageadmin: cn=admin,dc=me,dc=gob,dc=ve

storageadminpw: admin

guardamos y salimos.

Posteriormente cambiamos el propietario a los archivos:

chowpykota:lp /etc/pykota/pykota*

Finalmente creamos un enlace simblico de cupspykota dentro de los backend de cups

cd /usr/lib/cups/backend

ln -s /usr/local/share/pykota/cupspykota cupspykota

chmod 755 /usr/local/share/pykota/cupspykota

chown root:lp /usr/local/share/pykota/cupspykota

Reiniciamos cups

/etc/init.d/cups restart

Con esto hemos finalizado.

Cuando queramos que pykota tome control sobre una impresora, primero debemos configurar la impresora en cups, luego debemos agregar la impresora dentro la estructura ldap pykota, luego debemos agregar a los usuarios los atributos de pykota, finalmente agregamos la cuota de impresin al usuario sobre la impresora.

Para esto se han creado una serie de scripts que faciliten la tarea.

Cuando agreguemos la impresora en cups debemos colocar en el uri

cupspykota:socket://ip_impresora:9100

Para administrar el rbol ldap de manera cmoda puede descargar la ltima versin de la aplicacin ldap account manager desde su pagina web.

https://www.ldap-account-manager.org/lamcms/