source: server/bin/setsmbpass @ 9c9de82

Last change on this file since 9c9de82 was fb25c36, checked in by OpenGnSys Support Team <soporte-og@…>, 5 years ago

#1009 Add ogclient.json update to setsmbpass

ogclient.json has samba user and pass because ogVDI needs them to upload
qcow2 images to the repository. setsmbpass sets user and pass and
updates ogLives to match. If a user executes setsmbpass, then
ogclient.json samba info becomes outdated.

Add ogclient.json samba user and pass update to setsmbpass script.

  • Property mode set to 100755
File size: 4.4 KB
RevLine 
[f3b1480]1#!/bin/bash
[5b18e0e]2
3#/**
[a30baf2]4#@file    setsmbpass [ogLive]
[56a0aff]5#@brief   Cambia la contraseña de los clientes para acceder a los servicios principales.
6#@usage   setsmbpass [ogLive]
7#@param   ogLive    solo modifica la clave del cliente indicado (puede crear inconsistencias)
[5b18e0e]8#@warning Se modifica el Initrd del cliente y se cambia la clave en el servidor.
9#@warning No se modifica el usuario de acceso (usuario "opengnsys").
10#@version 1.0.2 - Versión inicial.
11#@author  Ramón M. Gómez - ETSII Univ. Sevilla
12#@date    2011-07-28
13#@version 1.1.0 - Soporte para varios clientes ogLive.
14#@author  Ramón M. Gómez - ETSII Univ. Sevilla
15#@date    2017-06-20
[0e3e167]16#@version 1.2.0 - Soporte para varios compresores de Initrd.
17#@author  Ramón M. Gómez - ETSII Univ. Sevilla
18#@date    2020-09-02
[5b18e0e]19#*/ ##
[f3b1480]20
21
[56a0aff]22# Variables y funciones globales.
23PROG="$(basename "$0")"
[f3b1480]24OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
[56a0aff]25PATH=$PATH:$OPENGNSYS/bin
[f3b1480]26SAMBAUSER="opengnsys"                           # Usuario por defecto.
[61ca7f4]27TFTPDIR=$OPENGNSYS/tftpboot
[5b18e0e]28INITRD=oginitrd.img
29TMPDIR=/tmp/oglive$$
30let CHANGES=0
[f3b1480]31
[ff019d5]32source $OPENGNSYS/lib/ogfunctions.sh || exit 1
[56a0aff]33
34# Control de parámetros.
35[ "$*" == "help" ] && help
36[ "$*" == "version" ] && version
[ff019d5]37[ "$USER" != "root" ] && raiseError access "Solo ejecutable por root"
[a30baf2]38case $# in
39    0)  # Cambios en todos los clientes ogLive instalados.
40        if which oglivecli &>/dev/null; then
41            LIST=$(oglivecli list | awk '{print $2}')
42        else
43            LIST="ogclient"
44        fi ;;
45    1)  # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
46        LIST="$1" ;;
47    *)  # Error de formato.
[56a0aff]48        raiseError usage ;;
[a30baf2]49esac
[f3b1480]50
[5b18e0e]51# Recuperar eco de consola si se corta el proceso.
52trap "stty echo 2>/dev/null" KILL
53# Buscar todos los clients ogLive instalados.
54for OGLIVE in $LIST; do
55    # Crear clave para usuario de acceso a los recursos.
56    CLIENTINITRD="$TFTPDIR/$OGLIVE/$INITRD"
57    if [ -r "$CLIENTINITRD" ]; then
58        if [ -z "$SAMBAPASS" ]; then
59            # Obtener clave del teclado sin eco en pantalla.
60            stty -echo 2>/dev/null
61            echo -n "Clave del usuario Samba: "
62            read -r SAMBAPASS
63            # Solo se deben aceptar números y letras para la clave de acceso.
64            if [[ "$SAMBAPASS" =~ [^a-zA-Z0-9] ]]; then
[693dac9]65                echo
66                stty echo 2>/dev/null
[56a0aff]67                raiseError cancel "La clave solo debe contener caracteres alfanuméricos"
[5b18e0e]68            fi
69            echo
70            # Obtener confirmación clave sin eco en pantalla.
71            echo -n "Confirmar clave: "
72            read -r SAMBAPASS2
73            echo
74            stty echo 2>/dev/null
[56a0aff]75            [ "$SAMBAPASS" != "$SAMBAPASS2" ] && raiseError cancel "Las claves no coinciden"
[f3b1480]76        fi
77        # Editar la parte de acceso del cliente:
78        #    descomprimir Initrd, sustituir clave y recomprimir Initrd).
[5b18e0e]79        echo "Configurando cliente \"$OGLIVE\" ..."
[f3b1480]80        mkdir -p $TMPDIR
[56a0aff]81        cd $TMPDIR || ogRaiseError access "Directorio temporal"
[0e3e167]82        COMPRESS=$(file -b "$CLIENTINITRD" | awk '{print tolower($1);}')
83        $COMPRESS -dc "$CLIENTINITRD" | cpio -im
[f3b1480]84        if [ -f scripts/ogfunctions ]; then
85                sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
[f0cfbc0]86                # TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
87                sed -i "s/busybox reboot/reboot/" scripts/ogfunctions
88                # FIN CÓDIGO TEMPORAL.
[f243a47]89                # Ticket 565, preparar acceso Rsync cliente.
[9555dd1]90                echo "$SAMBAPASS" > scripts/passrsync
91                chown root.root scripts/passrsync
92                chmod 400 scripts/passrsync
[0e3e167]93                # Generar Initrd del cliente (siempre comprimido con gzip).
[5b18e0e]94                find . | cpio -H newc -oa | gzip -9c > "$CLIENTINITRD"
[f3b1480]95        else
[5b18e0e]96                echo "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
[f3b1480]97        fi
98        rm -fr $TMPDIR
[5b18e0e]99        # Calcular suma de comprobación.
100        md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
101        let CHANGES++
102    else
[a30baf2]103        echo "$PROG: Cliente \"$OGLIVE\" no accesible."
[5b18e0e]104    fi
105done
106if [[ $CHANGES != 0 ]]; then
[fb25c36]107    jq ".samba.user = \"$SAMBAUSER\" | .samba.pass = \"$SAMBAPASS\"" \
108        "$OPENGNSYS"/client/ogClient/cfg/ogclient.json > /tmp/ogclient.json
109    mv /tmp/ogclient.json "$OPENGNSYS"/client/ogClient/cfg/ogclient.json
[5b18e0e]110    # Ticket 565, preparar acceso Rsync servidor.
[72d9295]111    [ -e /etc/rsyncd.secrets ] && sed -i -n -e "/^$SAMBAUSER:/!p" -e "$ a$SAMBAUSER:$SAMBAPASS" /etc/rsyncd.secrets || echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
[5b18e0e]112    chown root.root /etc/rsyncd.secrets
113    chmod 600 /etc/rsyncd.secrets
114    # Cambiar clave Samba.
115    echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
[f3b1480]116else
[5b18e0e]117    echo "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
[f3b1480]118fi
119
Note: See TracBrowser for help on using the repository browser.