Archive for April, 2010

Tercer Simposio sobre Software Libre y Educación

April 24th, 2010

Desde la comunidad educativa libre Gleducar, invitamos a todos los interesados a participar del Tercer Simposio sobre Software Libre y Educación (SLyE) que se realizará el 8 de mayo en la Facultad de Filosofía y Letras de la Universidad de Buenos Aires (UBA), sito en Puan 480 de la ciudad de Buenos Aires. Este evento pretende acercar a la comunidad docente, de la mano de educadores, propuestas para utilizar Software Libre en su tarea cotidiana. ¡La entrada es gratuita!

Desde Gleducar consideramos que el Software Libre es la mejor alternativa para la educación en general, y su implementación permite llevar adelante proyectos institucionales y curriculares que no son posibles con otro tipo de software. Por otra parte, es sabido que para la mayoría de los docentes el Software Libre es desconocido, y es por ello que nos hemos propuesto realizar un encuentro que permita difundir las posibilidades conocidas por nosotros, en un lenguaje simple.

Nos ocupa hacer una educación mejor, mas equitativa y mejor sincronizada con la vida actual, pero haciendo foco en los valores positivos a desarrollar por los chicos. De esta forma, los invitamos a participar del encuentro que comenzará a las 9 hs. y se extenderá hasta las 19 hs.

Si te interesa participar, y querés obtener mas información sobre el encuentro, podes visitar el sitio oficial de SLyE. Además, es posible ver lo que se hizo en las ediciones anteriores y si realmente estas interesado, inscribíte a través de la web del encuentro.

Lo invitamos ademas a colaborar con nosotros difundiendo el evento. Para ello hemos creado una serie de banners que puede usar en su
sitio web
.

Cronograma del encuentro

  • 09:30 hs – Acreditación
  • 10:00 hs – Presentación de Simposio – Iris Fernández
  • 10:20 hs – Aplicaciones multimedia en el escuela – María Eugenia Núñez
  • 11:10 hs – Moodle y su implementación en la Educación Pública – Lic Carlos Rodriguez
  • 12:10 hs – Scratch transversal a otras asignaturas y en Moodle – Prof. Marisa Conde
  • 13:10 hs – Vikidia, la enciclopedia libre de contenido adaptado para chicos – Alejandro Joos
  • 13:30 hs – Almuerzo
  • 14:30 hs – Aplicaciones Libres en la UBA – Lic. Laura Marotias
  • 15:00 hs – Entorno de aprendizaje Sugar – Gonzalo Odiard y Gustavo Ibarra
  • 16:00 hs – Tuquito en las Classmates – Alvar Maciel y Ramiro Pol
  • 17:00 hs – Todo muy lindo pero… ¿cómo se hace para que una escuela funcione con Software Libre? – Javier Castrillo
  • 18:00 hs – Del Software a la Cultura Libre – Iris Fernández y María Eugenia Núñez

Sobre el Software Libre

El Software Libre, según la Wikipedia, es aquel cuya licencia respeta la libertad de los usuarios sobre su producto adquirido y, por tanto, una vez obtenido puede ser usado, copiado, estudiado, cambiado y redistribuido libremente. El software libre se refiere a la libertad
de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software. De modo más preciso, se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa, con cualquier propósito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo cual se puede ayudar a otros y de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie.

Sobre Gleducar

Gleducar es una comunidad de docentes, estudiantes y activistas de la educación interesados en el trabajo colectivo, la construcción cooperativa del conocimiento y su libre distribución. Gleducar es también una Asociación Civil que apoya e impulsa el desarrollo de la comunidad.

Trabajamos sobre temáticas como el Conocimiento Libre, la Educación Popular y las Nuevas Tecnologías Libres. Buscamos transformar la
realidad a través de la intervención crítica y activa en todos los espacios educativos: formales y no formales.

Impulsamos el uso de Software Libre en las escuelas, como un modelo pedagógico y técnico, buscando un cambio en el paradigma de la
producción, construcción y difusión de los contenidos educativos.

Mas sobre Gleducar: http://www.gleducar.org.ar

Contacto

Puede comunicarse con los organizores escribiendo a slye-contacto(arroba)gleducar.org.ar.

Debian Lenny PDC “SAMBA+LDAP+Quotas”

April 23rd, 2010
  • Este HOWTO es una recopilación de muchos otros howtos que dan vuelta por internet, pero ninguno me funcionaba del todo. Asi que en base a todos ellos publico este howto para que les sirva tanto como a mi.
  • Probado y testeado en Debian Lenny

Instalacion

Lo primero que hacemos es un update de nuestro equipo e instalamos los siguientes packetes

apt-get update
apt-get install apache2-suexec libapache2-mod-php5 php5 php5-cli php5-curl php5-gd php5-imap
apt-get install php5-ldap php5-mcrypt php5-mhash php5-sqlite php5-tidy php5-xmlrpc php-pear
apt-get install slapd mcrypt ldap-utils libgd-tools apache2-doc samba swat smbclient smbfs
apt-get install smbldap-tools libpam-ldap libnss-ldap resolvconf phpldapadmin

Podemos obviar las configuraciones, ya que lo haremos todo más adelante.

Configurar slapd

Ejecutamos el comando dpkg-reconfigure slapd y completamos segun los siguientes parámetros:

  • Omitir la configuración de OpenLDAP? No
  • Nombre de dominio: midominio.com.ar
  • Nombre de organización: midominio.com.ar
  • Contraseña del admin: CAMBIAR
  • Motor de base de datos a utilizar: HDB
  • Borrar la base de datos al purgar slapd ? No
  • Permitir LDAP v2? No

Hacemos una copia de seguridad de nuestra base de datos LDAP inicial, con el siguiente comando:

slapcat > ~/slapd.ldif

Ahora copiamos el esquema LDAP para Samba:

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

Generamos una contraseña para root encriptada con MD5:

slappasswd -h {MD5}

Ahora copiamos y reemplazamos el /etc/ldap/slapd.conf con esta versión (cambiando los datos relacionados al dominio):

#######################################################################
#allow bind_v2

# Schema and objectClass definitions
include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         /etc/ldap/schema/samba.schema

pidfile         /var/run/slapd/slapd.pid
argsfile        /var/run/slapd/slapd.args

loglevel        none

modulepath /usr/lib/ldap
moduleload back_hdb

sizelimit 500

tool-threads 1

backend hdb
database        hdb

suffix          "dc=midominio,dc=com,dc=ar"
rootdn          "cn=admin,dc=midominio,dc=ar"

# Reemplazar con nuestra pass
rootpw          {MD5}Qhz0AB5FDDDYFKBJVAngcw==
directory       "/var/lib/ldap"

dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500

index objectClass                       eq,pres
index ou,cn,sn,mail,givenname           eq,pres,sub
index uidNumber,gidNumber,memberUid     eq,pres
index loginShell                        eq,pres
index uid                               pres,sub,eq
index displayName                       pres,sub,eq
index nisMapName,nisMapEntry            eq,pres,sub
index sambaSID                          eq
index sambaPrimaryGroupSID              eq
index sambaDomainName                   eq
index default                           sub
index uniqueMember                      eq
index sambaGroupType                    eq
index sambaSIDList                      eq

lastmod         on

checkpoint      512 30

access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet
        by self write
        by anonymous auth
        by * none

access to attrs=shadowLastChange,shadowMax
        by self write
        by * read

access to *
        by * read

Ahora detenemos el nscd:

/etc/init.d/nscd stop

Renovamos la base de datos de LDAP con los siguientes comandos:

/etc/init.d/slapd stop
rm -rf /var/lib/ldap/*
slapadd -l ~/slapd.ldif
slapindex
chown -Rf openldap:openldap /var/lib/ldap
/etc/init.d/slapd start

Ahora verificamos que todo está correcto ejecutando slapcat

Configurar Samba

Para configurar Samba copiamos y reemplazamos el /etc/samba/smb.conf con esta versión:

[global]
dos charset = UTF-8
display charset = UTF-8
workgroup = midominio.com.ar
realm = midominio.com.ar
server string = %h server
map to guest = Bad User
passdb backend = ldapsam:ldap://127.0.0.1/
pam password change = Yes
passwd program = /usr/sbin/smbldap-passwd -u %u
passwd chat = *New*password* %n\n *Retype*new*password* %n\n *all*authentication*tokens*updated*
unix password sync = Yes
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
add user script = /usr/sbin/smbldap-useradd -m %u
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
add machine script = /usr/sbin/smbldap-useradd -w %u
logon script = logon.bat
logon path = \\%N\profiles\%U
logon drive = H:
domain logons = Yes
os level = 65
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
ldap admin dn = cn=admin,dc=midominio,dc=com,dc=ar
ldap delete dn = Yes
ldap group suffix = ou=group
ldap idmap suffix = ou=idmap
ldap machine suffix = ou=computer
ldap suffix = dc=midominio,dc=com,dc=ar
ldap ssl = no
ldap user suffix = ou=people
panic action = /usr/share/samba/panic-action %d
case sensitive = No

[homes]
comment = Home Directories
valid users = %S
read only = No
create mask = 0600
directory mask = 0700
browseable = No

[printers]
comment = All Printers
path = /var/spool/samba
create mask = 0700
printable = Yes
browseable = No

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers

[netlogon]
path = /var/lib/samba/netlogon
browseable = No

[profiles]
path = /var/lib/samba/profiles
force user = %U
read only = No
create mask = 0600
directory mask = 0700
guest ok = Yes
profile acls = Yes
browseable = No
csc policy = disable

[public]
path = /tmp
read only = No
guest ok = Yes

Ahora vamos a crear el password de root para samba:

smbpasswd -w CAMBIAR

Creamos los directorios para el netlogon y los profiles y reiniciamos samba:

mkdir -p /var/lib/samba/netlogon /var/lib/samba/profiles
chown -Rf root:root /var/lib/samba/netlogon /var/lib/samba/profiles
chmod 1777 /var/lib/samba/profiles
/etc/init.d/samba restart

Probamos el fichero de configuración con testparm y comprobamos que no haya mensajes de error.

Configurar SMBLDAP-TOOLS

Preparamos los ficheros de configuración de smbldap-tools

zcat /usr/share/doc/smbldap-tools/examples/smbldap.conf.gz > /etc/smbldap-tools/smbldap.conf
cp /usr/share/doc/smbldap-tools/examples/smbldap_bind.conf /etc/smbldap-tools/smbldap_bind.conf

Buscamos el Samba SID de nuestro PDC para despues ponerlo en /etc/smbldap-tools/smbldap.conf:

net getlocalsid

y reemplazamos nuestro /etc/smbldap-tools/smbldap.conf con esta versión. Recordemos cambiar el SID y modificarlo según nuestras necesidades:

SID="S-1-5-21-1169193956-4199179787-2206793627"
sambaDomain="midominio.com.ar"
slaveLDAP="127.0.0.1"
slavePort="389"
masterLDAP="127.0.0.1"
masterPort="389"
ldapTLS="0"
verify="require"
cafile="/etc/smbldap-tools/ca.pem"
clientcert="/etc/smbldap-tools/smbldap-tools.pem"
clientkey="/etc/smbldap-tools/smbldap-tools.key"
suffix="dc=midominio,dc=com,dc=ar"
usersdn="ou=people,${suffix}"
computersdn="ou=computer,${suffix}"
groupsdn="ou=group,${suffix}"
idmapdn="ou=idmap,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
scope="sub"
hash_encrypt="MD5"
crypt_salt_format="%s"
userLoginShell="/bin/bash"
userHome="/home/%U"
userHomeDirectoryMode="700"
userGecos="System User"
defaultUserGid="513"
defaultComputerGid="515"
skeletonDir="/etc/skel"
defaultMaxPasswordAge="45"
userSmbHome=""
userProfile=""
userHomeDrive="H:"
userScript="logon.bat"
mailDomain="midominio.com.ar"
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

Actualizamos /etc/smbldap-tools/smbldap_bind.conf con lo siguiente:

slaveDN="cn=admin,dc=midominio,dc=com,dc=ar"
slavePw="CAMBIAR"
masterDN="cn=admin,dc=midominio,dc=com,dc=ar"
masterPw="CAMBIAR"

Cambiamos la configuración con los permisos correctos:

chmod 0644 /etc/smbldap-tools/smbldap.conf
chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

Ahora terminamos de crear nuestra base de datos ldap con el mapeo automatico de los grupos POSIX de Linux y Windows:

smbldap-populate

Hacemos backup a la base de datos anterior:

slapcat > ~/smbldap.ldif

Configurar PAM/NSS

Configuramos PAM/NSS con LDAP dpkg-reconfigure libnss-ldap

 * LDAP server Uniform Resource Identifier: ldap://127.0.0.1
 * Distinguished name of the search base: dc=midominio,dc=com,dc=ar

 * LDAP version to use: 3
 * Does the LDAP database require login? No
 * Special LDAP privileges for root? Yes
 * Make the configuration file readable/writeable by its owner only? Yes
 * LDAP account for root: cn=admin,dc=midominio,dc=com,dc=ar

 * LDAP root account password: CAMBIAR

Configurar NSSWITCH

Actualizamos /etc/nsswitch.conf como sigue:

passwd: files ldap
group: files ldap
shadow: files ldap
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 ldap

Configurar LDAP

Añadimos las siguientes lineas a /etc/ldap/ldap.conf

host localhost
base dc=midominio,dc=com,dc=ar
binddn cn=admin,dc=midominio,dc=com,dc=ar
bindpw CAMBIAR
bind_policy soft
pam_password exop
timelimit 15
nss_base_passwd dc=midominio,dc=com,dc=ar?sub
nss_base_shadow dc=midominio,dc=com,dc=ar?sub
nss_base_group ou=group,dc=midominio,dc=com,dc=ar?one

Configurar LIBNSS-LDAP

Y modificamos las siguientes lineas en /etc/libnss-ldap.conf

bind_policy soft
pam_password md5
nss_base_passwd dc=midominio,dc=com,dc=ar?sub
nss_base_shadow dc=midominio,dc=com,dc=ar?sub
nss_base_group ou=group,dc=midominio,dc=com,dc=ar?one

Chequeamos /etc/libnss-ldap.secret

cat /etc/libnss-ldap.secret

Configurar LIBPAM-LDAP

Ejecutamos dpkg-reconfigure libpam-ldap

 * LDAP server Uniform Resource Identifier: ldap://127.0.0.1
 * Distinguished name of the search base: dc=midominio,dc=com,dc=ar
 * LDAP version to use: 3
 * Make local root Database admin. Yes
 * Does the LDAP database require login? No
 * LDAP account for root: cn=admin,dc=midominio,dc=com,dc=ar
 * LDAP root account password: CAMBIAR
 * Local crypt to use when changing passwords. MD5

Modificamos las siguientes líneas en /etc/pam_ldap.conf

bind_policy soft
nss_base_passwd dc=midominio,dc=com,dc=ar?sub
nss_base_shadow dc=midominio,dc=com,dc=ar?sub
nss_base_group ou=group,dc=midominio,dc=com,dc=ar?one

Chequeamos /etc/libnss-ldap.secret

cat /etc/libnss-ldap.secret

Actualizamos /etc/pam.d/common-account como sigue

account sufficient pam_ldap.so
account required pam_unix.so

Actualizamos /etc/pam.d/common-auth como sigue

auth [success=1 default=ignore] pam_unix.so
auth required pam_ldap.so use_first_pass
auth required pam_permit.so

Actualizamos /etc/pam.d/common-password

password sufficient pam_ldap.so
password required pam_unix.so nullok obscure md5

Actualizamos /etc/pam.d/common-session

session optional pam_ldap.so
session required pam_unix.so

PRUEBAS

Ahora creamos un usuario de prueba para comprobar que todo está bien:

smbldap-useradd -a -m test
smbldap-passwd test

En el server de pruebas hay un script para dar el alta a los nuevos usuarios. El mismo esta ubicado en /usr/local/bin/adduserdomain y le debemos pasar como unico parametro el nombre del usuario a crear. Luego le asignaremos la contraseña cuando el script la solicite.

Con getent passwdgetent group podemos comprobar los grupos y usuarios.

Unir terminales Windows al dominio

Para Windows 2000 el procedimiento es normal, pero en Windows Xp tenemos que hacer un pequeño ajuste. Ejecutamos regedit, ir a la siguiente clave:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters

y en el valor de requiresignorseal que es de tipo dword le asignamos 0, también al valor de requirestrongkey que es de tipo dword le asignamos 0

Debemos reiniciar la terminal antes de unirla al dominio, para que los cambios surtan efecto.

Unir terminales Linux al dominio

Primero, debemos loguearnos a la maquina que vamos a unir al dominio para configurar PAM/NSS.

Instalemos en el cliente el software necesario

aptitude install libnss-ldap libpam-ldap libpam-cracklib

y respondemos segun la siguiente conf:

Configuración de libnss-ldap:

  • Identificador de recursos para el servidor LDAP: ldap://10.1.4.1/
  • El nombre distintivo (DN) de la base de búsquedas: dc=midominio,dc=com,dc=ar
  • Versión de LDAP a utilizar: 3
  • Cuenta LDAP para root: cn=admin,dc=midominio,dc=com,dc=ar
  • Contraseña para la cuenta LDAP de root: dejar vacío

Configuración de libpam-ldap:

  • Crear un administrador de la base de datos local: No
  • ¿Hace falta un usuario para acceder a la base de datos LDAP? : No

Los archivos de configuración de PAM y NSS

PAM y NSS utilizarán la misma base de datos ldap, por la tanto su configuración es igual. Editamos los archivos /etc/libnss-ldap.conf y /etc/pam_ldap.conf, y reemplazamos con lo siguiente (la configuración es muy similar a la del servidor):

# DN base
base dc=midominio,dc=com,dc=ar
# URI del servidor ldap, en nuestro caso es 192.168.1.200
uri ldap://10.1.4.1/

# Version de ldap a utilizar
ldap_version 3

# Cuenta de root ldap
# Esta linea no es necesaria, la comentamos o borramos
# rootbinddn cn=admin,dc=midominio,dc=com,dc=ar

bind_policy soft
pam_password md5

nss_base_passwd dc=midominio,dc=com,dc=ar?sub
nss_base_shadow dc=midominio,dc=com,dc=ar?sub
nss_base_group ou=group,dc=midominio,dc=com,dc=ar?one

Modificamos /etc/nsswitch.conf agregando ldap para las búsquedas y wins para resolver nombres:

passwd:         files ldap
group:          files ldap
shadow:         files ldap
hosts:          files wins dns

Hacemos un backup de la configuración de PAM

# cp -a /etc/pam.d{,.ORIGINAL}

Y modificamos los archivos de configuración de PAM:

/etc/pam.d/common-auth

auth    [success=2 default=ignore]      pam_unix.so nullok_secure
auth    [success=1 default=ignore]      pam_ldap.so use_first_pass
auth    requisite                       pam_deny.so
auth    required                        pam_permit.so

/etc/pam.d/common-account

account [success=2 new_authtok_reqd=done default=ignore]        pam_unix.so
account [success=1 default=ignore]      pam_ldap.so
account requisite                       pam_deny.so
account required                        pam_permit.so

/etc/pam.d/common-password

password        required        pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
password        [success=2 default=ignore]      pam_unix.so obscure crypt
password        [success=1 user_unknown=ignore default=die]     pam_ldap.so use_authtok try_first_pass
password        requisite                       pam_deny.so
password        required                        pam_permit.so

/etc/pam.d/common-session

La configuración de este archivo difiere de la del servidor PDC. En el servidor podemos crear las cuentas de usuario mediante smbldap-useradd agregando la opción -m de modo que el home de cada usuario se crea junto con el usuario. En los clientes el home de cada usuario no existe, por lo que se utiliza el módulo pam_mkhomedir.so para crear el home del usuario en caso que no exista. Eso es lo que motiva agregar la primer linea del archivo

session required                        pam_mkhomedir.so
session [default=1]                     pam_permit.so
session requisite                       pam_deny.so
session required                        pam_permit.so
session required                        pam_unix.so
session optional                        pam_ldap.so

Probando la configuración

Primero que nada, detengamos el demonio nscd

# /etc/init.d/nscd stop

Ahora ya podemos hacer login en los clientes Linux/Unix con algún usuario del dominio Samba, utilizemos la cuenta de adminnuevo que creamos anteriormente. Y hemos logrado hacer login con un usuario del dominio. Vemos también como el módulo pam_mkhomedir.so definido en /etc/pam.d/common-session ha creado el home del usuario en el equipo local. Esto solo sucede para el primer login

Asignacion de Quotas

  • Primero debemos preparar la partición en la que queremos poner cuotas editando /etc/fstab (añadimos usrquota):
    /dev/hda2/ /home ext3 defaults,usrquota 0 2
  • Con eso cuando reiniciemos tendremos la partición preparada. Para activarlo ahora sin reiniciar (hasta que volvamos a reiniciar):
    mount -o remount,usrquota /home
  • Creamos 2 archivos en la partición en la que queremos crear las cuotas de usuario:
    touch /home/aquota.user
    touch /home/aquota.group
    chmod 600 /home/aquota.user /home/aquota.group
  • Ahora instalamos quota y quotatools:
    apt-get install quota quotatool
  • Activamos las cuotas: quotacheck -vagumf
  • Por último asignamos una cuota de 300 Mb para el usuario “prueba”:
    quotatool -u prueba -bq 300M -l '320 Mb' /home
  • Para ver las cuotas asignadas: repquota /home
  • Para eliminar la cuota del usuario “prueba”:
    quotatool -u prueba -bq 0M -l '0 Mb' /home

Referencias: