Crear parches

En un cliente estoy trabajando en la integración de Active Directory y Linux RHEL4, y me he encontrado con numerosos problemas. La idea es que los usuarios no se conecten por SSH a los servidores como Root, sino con su login y passwd del dominio Windows 2003, y además se les mapee como home su unidad de trabajo personal (la U:).

Me he encontrado  varios defectos importantes, en esto.
  1. RHEL4U0 hasta RHEL4U5 tienen mal soporte al módulo CIFS en el kernel. No nos permite montar rutas UNC de la forma \\SERVER\LO_QUE_SEA$\LOGIN, sólo se queda en \\SERVER\LO_QUE_SEA$. En RHEL4U6 funciona perfectamente, mientras en RHEL4U5 se escibe un mensaje en /var/log/messages:
    kernel: CIFS: Unknown mount option prefixpath
  2. No hay una versión buena de pam_mount que funcione en RHEL4 decentemente sin instalar media Fedora, por lo que finalmente me he tenido que ir a la versión 0.9.25
  3. La versión del cliente samba que viene hasta RHEL4U5 no monta correctamente mis volúmenes CIFS, por lo que he tenido que actualizar los RHEL4 a samba*3.0.25b-0.4E.6.
  4. Como simultaneo usuarios linux (/etc/passwd) con usuarios ActiveDirectory (LDAP) cuando se conectan los usuarios locales aparece un molesto mensaje:
    pam_mount: error trying to retrieve authtok from auth code
    pam_mount: error trying to read password
    que por otro lado es normal.
  5. Por las particularidades de la configuración del cliente, he tenido que crearme un script miMount, que es el que llama pam_mount, dado que había usuarios que tenían diferente UNC de conexión a la red, por temas de cuotas. En el script se detecta esto y se arregla.
Viendo todo esto, creo que es un verdadero milagro que funcione pam_mount en la red del cliente y en RHEL4 previas a U6. Al final he ido solucionando todo a excepción del mensajito que aparece cuando se conectan los usuarios linux, que no he podido solucionar mediante la configuración de  pam. He creado un parche para pam_mount y he recompilado el paquete, que es lo que he distribuido por los servidores linux RHEL4. Para generar el parche:
  1. Cambiarse a al directorio donde están los fuentes del paquete:
    cd /usr/src/redhat/SOURCES/
  2. Descomprimir y dejar dos copias: una original (orig) y otra para aplicar el parche (patched)
    tar -xzvf pam_mount-0.9.25.tar.gz
    mv pam_mount-0.9.25 pam_mount-0.9.25.orig
    cp -R pam_mount-0.9.25.orig pam_mount-0.9.25.patched
  3. Realizar los cambios en el árbol de fuentes patched.
  4. Extraer las diferencias con diff y crear el parche.
    diff -uNr pam_mount-0.9.25.orig pam_mount-0.9.25.patched > Mensajes.patch
  5. Modificar el SPECS/pam_mount para tener que en la compilación se aplique nuestro parche. Esto es añadir al principio
    Patch0: Mensajes.patch
    y luego tras la sección %setup -q,
    %patch0 -p1
  6. Por supuesto deberemos cambiar también la revisión.
    Release: 2
Luego sólo quedaría reconstruir nuestro paquete y volver a instalarlo.