Académique Documents
Professionnel Documents
Culture Documents
El usuario enva el
trabajo a la cola de
impresin de la
impresora
Usuario
3. El servidor ejecuta la
accin establecida por la
regla
Servidor
de
Impresin
2. El servidor examina el
trabajo y lo compara con
las reglas configuradas
en la cola
Pycota
Regla de la cola
de impresin:
Si las pginas
son B/N
mover a la
cola del
Canon
multifuncional
2230
Image Runner
Instalacin de LDAP con Samba NFS Y Cuotas Cups Pykota en Debian Wheezy
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.
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
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"
1.3 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/sambadoc/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
include
include
include
include
include
include
include
include
include
include
include
include
/etc/ldap/schema/core.schema
/etc/ldap/schema/collective.schema
/etc/ldap/schema/corba.schema
/etc/ldap/schema/cosine.schema
/etc/ldap/schema/duaconf.schema
/etc/ldap/schema/dyngroup.schema
/etc/ldap/schema/inetorgperson.schema
/etc/ldap/schema/java.schema
/etc/ldap/schema/misc.schema
/etc/ldap/schema/nis.schema
/etc/ldap/schema/openldap.schema
/etc/ldap/schema/ppolicy.schema
/etc/ldap/schema/samba.schema
el
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
olcDbIndex:
uid eq,pres,sub
cn eq,pres,sub
sn eq,pres,sub
displayName eq,pres,sub
memberUid eq,pres,sub
mail eq,pres,sub
givenname eq,pres,sub
uniqueMember eq,pres
sambaSID eq
sambaPrimaryGroupSID eq
sambaGroupType eq
sambaSIDList eq
sambaDomainName eq
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
1.4
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 <dc=fnc,dc=com,dc=ve> 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
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 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
/usr/share/doc/smbldap-tools/examples/smbldap.conf.gz
>
/etc/smbldap-
archivo
principal
de
configuracin
de
smbldap-tools
/etc/smbldap-
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".
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}"
# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"
# Gecos
userGecos="Usuario del Dominio"
# 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:
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 smbldappopulatede la siguiente manera:
root@servidorimpresion:# smbldap-populate
Populating LDAP directory for domain FNC.COM.VE (S-1-5-21-3702025042-35278797074288773517)
(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
root
NT username:
root
Account Flags:
User SID:
[U
S-1-5-21-3702025042-3527879707-4288773517-500
S-1-5-21-3702025042-3527879707-4288773517-513
root
Home Directory:
\\PDC\root
HomeDir Drive:
H:
Logon Script:
Profile Path:
\\PDC\profiles\root
Domain:
FNC
Account desc:
Workstations:
Munged dial:
Logon time:
Logoff time:
never
Kickoff time:
never
: 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]
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,wwwdata,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
compat
group:
compat
shadow:
compat
Por:
passwd:
compat ldap
group:
compat ldap
shadow:
compat ldap
hosts:
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
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
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.
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
/dev/sda1
16
250000
hard
260000
inodes
soft
hard
0
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManWorkstation\Paramet
ers
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
olcDatabase={0}hdb
ubicado
en
el
directorio
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, smbldaptools, NSS LDAP y PAM.
Archivos y Directorios
/etc/samba
smbldap-tools /etc/smbldap-tools/
libnss-ldap
PAM
/etc/nsswitch.conf /etc/libnss-ldap.conf
/etc/pam_ldap.conf
/etc/pam.d
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
Python-SNMP
http://sourceforge.net/projects/pysnmp/
Python-pkpgcounter http://www.pykota.com/software/pkpgcounter/download/tarballs/
Python-pkipplib
http://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:
1. Entrar al directorio donde se encuentra el archivo tar.gz que acabamos de descargar.
2. Descomprimir el archivo con el siguiente comando:
tar xvzf nombre_archivo.tar.gz
3.
4.
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.
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
directorio /etc/ldap/slapd.d/cn=config/cn=schema, donde x representa el siguiente numero
el
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
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: operador@me.gob.ve
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.