83 lines
2.6 KiB
Bash
83 lines
2.6 KiB
Bash
#!/bin/bash
|
|
# setsmbpass: cambia la contraseña del usuario del cliente para acceder a los
|
|
# servicios Samba.
|
|
# Nota: se modifica el Initrd del cliente y se cambia la clave en el servidor.
|
|
# Nota: no se modifica el usuario de acceso (usuario "opengnsys").
|
|
# Uso: setsmbpass
|
|
# Autor: Ramon Gomez - Univ. Sevilla, julio 2011
|
|
|
|
|
|
# Variables.
|
|
PROG=$(basename $0)
|
|
OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
|
|
SAMBAUSER="opengnsys" # Usuario por defecto.
|
|
TFTPDIR=$OPENGNSYS/tftpboot
|
|
CLIENTINITRD=$TFTPDIR/ogclient/oginitrd.img
|
|
TMPDIR=/tmp/ogclient$$
|
|
|
|
# Control básico de errores.
|
|
if [ $# != 0 ]; then
|
|
echo "$PROG: Error de ejecución" >&2
|
|
echo "Formato: $PROG"
|
|
exit 1
|
|
fi
|
|
if [ "$USER" != "root" ]; then
|
|
echo "$PROG: Error: solo ejecutable por root" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# Crear clave para usuario de acceso a los recursos.
|
|
if [ -r $CLIENTINITRD ]; then
|
|
stty -echo 2>/dev/null
|
|
echo -n "Clave del usuario Samba: "
|
|
read SAMBAPASS
|
|
# Solo se deben aceptar números y letras para la clave de acceso.
|
|
if [ -n "${SAMBAPASS//[a-zA-Z0-9]/}" ]; then
|
|
echo
|
|
echo "$PROG: Error: la clave solo debe contener caracteres alfanuméricos" >&2
|
|
stty echo 2>/dev/null
|
|
exit 2
|
|
fi
|
|
echo
|
|
echo -n "Confirmar clave: "
|
|
read SAMBAPASS2
|
|
echo
|
|
stty echo 2>/dev/null
|
|
if [ "$SAMBAPASS" != "$SAMBAPASS2" ]; then
|
|
echo "$PROG: Error: las claves no coinciden" >&2
|
|
exit 2
|
|
fi
|
|
# Editar la parte de acceso del cliente:
|
|
# descomprimir Initrd, sustituir clave y recomprimir Initrd).
|
|
mkdir -p $TMPDIR
|
|
cd $TMPDIR
|
|
gzip -dc $CLIENTINITRD | cpio -im
|
|
if [ -f scripts/ogfunctions ]; then
|
|
sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
|
|
# TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
|
|
sed -i "s/busybox reboot/reboot/" scripts/ogfunctions
|
|
# FIN CÓDIGO TEMPORAL.
|
|
# Ticket 565, preparar acceso Rsync cliente.
|
|
echo "$SAMBAPASS" > scripts/passrsync
|
|
chown root.root scripts/passrsync
|
|
chmod 400 scripts/passrsync
|
|
# Generar Initrd del cliente.
|
|
find . | cpio -H newc -oa | gzip -9c > $CLIENTINITRD
|
|
# Ticket 565, preparar acceso Rsync servidor.
|
|
echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
|
|
chown root.root /etc/rsyncd.secrets
|
|
chmod 600 /etc/rsyncd.secrets
|
|
else
|
|
echo "$PROG: Aviso: no se ha modificado la clave del cliente."
|
|
fi
|
|
rm -fr $TMPDIR
|
|
md5sum $CLIENTINITRD | cut -f1 -d" " > $CLIENTINITRD.sum
|
|
cp -a $CLIENTINITRD $TFTPDIR
|
|
cp -a $CLIENTINITRD.sum $TFTPDIR
|
|
else
|
|
SAMBAPASS="og" # Clave por defecto.
|
|
echo "$PROG: Aviso: no se ha modificado la clave del cliente."
|
|
fi
|
|
echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
|
|
|