Integración Unix AIX, Samba, Winbind, SSH y dominio Windows (5/8) - Winbind y SSH, compilación código fuente de Samba


Home del documento

En este apartado tratamos la integración de winbind con SSH, lo que nos va a permitir acceder a la linea de comandos del sistema con nuestra cuenta del dominio.

- Lo primero que hay que hacer es añadir a nuestro smb.conf las siguientes líneas en la sección global

template homedir = /home
template shell = /bin/ksh


- Tal como deja entrever la doc oficial de Samba aquí (en la sección "NSS Winbind on AIX") esta integración que pretendemos hacer este SO no es trivial. Es debido a que /usr/lib/security/WINBIND es un módulo que sólo provee servicios de identificación, mientras que para logar a un sistema con SSH necesitamos identificación y autenticación.

Esto nos lleva a la utilización de PAM (Pluggable Authentication Modules) que en el caso de AIX presenta de nuevo ciertas particularidades que complican el tema.


- El primer obstáculo en este punto se presenta debido a que el paquete binario que hemos utilizado no viene precompilado para uttlizar PAM:

# type smbd
smbd is /opt/pware/samba/3.0.26a/sbin/smbd
# smbd -b | grep -i PAM
#

Así que, si no disponemos de otro binario para AIX que incluya las opciones que necesitamos, no queda otro remedio que compilar el paquete a nuestro gusto (Toca descargar código fuente desde alguno de los mirrors de Samba, seguimos con la versión samba-3.0.26a)


- Segundo obstáculo (al menos en mi caso): El SO no trae compilador de C.

# type cc
cc not found.
# type gcc
gcc not found.


- A través de

http://gcc.gnu.org/install/binaries.html

llegamos a

http://www.bullfreeware.com/download/wpar_tt/

donde disponemos de un binario precompilado (gcc-3.3.2-5.aix5.3.ppc.rpm en el momento de redactar) de la versión GNU del compilador de C para AIX (Me bajé también por si acaso la libgcc-3..., pero parece que no la necesita). Instalamos mediante rpm:

# pwd
/usr/src/rpms
# ls
gcc-3.3.2-5.aix5.3.ppc.rpm libgcc-3.3.2-5.aix5.3.ppc.rpm
# rpm -ivh gcc-3.3.2-5.aix5.3.ppc.rpm
gcc ##################################################
# type cc
cc not found.
# type gcc
gcc is /usr/bin/gcc
# ln -s /usr/bin/gcc /usr/bin/cc
#


- Desgunzipado y desempaquetado:

# pwd
/usr/src
# ls samba*.gz
samba-3.0.26a.tar.gz
# gunzip samba*.gz
# ls samba*.tar
samba-3.0.26a.tar
# tar -xf samba*.tar
#


- configure ...:

# cd samba-3.0.26a
# cd source
# ./configure
...
config.status: creating include/config.h
config.status: executing rm-stdint.h commands
config.status: executing rm-stdbool.h commands
#

... pero sólo con esto no llegará a construir el módulo pam_winbind.so (necesario). Entonces lo que he hecho es:

# ./configure --with-pam --with-pam_smbpass
...
config.status: creating script/installbin.sh
config.status: creating script/uninstallbin.sh
config.status: creating include/config.h
config.status: executing rm-stdint.h commands
config.status: executing rm-stdbool.h commands


- Ahora toca make...

# make
...
nsswitch/pam_winbind.c: In function `pam_sm_chauthtok':
nsswitch/pam_winbind.c:1976: warning: passing arg 2 of `pam_get_user' from incompatible pointer type
Linking shared library bin/pam_winbind.so
Target "all" is up to date.

... y me aseguro que el módulo se ha construido:

# find . -name pam_winbind.so
./bin/pam_winbind.so
#


- Lo siguiente sería hacer make install. Atención! Esto sobreescribe la versión de Samba que pudiera haber en /usr/local/samba pero puede que esto no interese por algún motivo. Por ejemplo tras esto habría que volver a añadir la máquina al dominio.

# make install
...
#


- Hemos acabado con la compilación de Samba. Ahora probamos con la nueva versión que hemos construido. Primero linkamos /etc/smb.conf y despues arrancamos cada uno de los daemons...

# ln -s /etc/smb.conf /usr/local/samba/lib/smb.conf
# /usr/local/samba/sbin/smbd -D
# /usr/local/samba/sbin/nmbd -D
# /usr/local/samba/sbin/winbindd -B

... y tras esto volvemos a añadir la máquina al dominio:

# net rpc join -S delta.dominio.com -U administrador
Password:
Joined domain DOMINIO.
#


Home del documento