If you can't read please download the document
Upload
luisbaute
View
86
Download
5
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/