source: server/bin/setsmbpass @ 7555a0d

configure-oglivelgromero-new-oglivemainmount-efivarfsubu24tpluse-local-agent-oglivevarios-instalacion
Last change on this file since 7555a0d was c28eefa, checked in by Natalia Serrano <natalia.serrano@…>, 20 months ago

Log to syslog in a number of shell scripts

  • 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
[a5d9191]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.
[c28eefa]40        echolog "Cambiando contraseña en todos los clientes ogLive instalados"
[a30baf2]41        if which oglivecli &>/dev/null; then
42            LIST=$(oglivecli list | awk '{print $2}')
43        else
44            LIST="ogclient"
45        fi ;;
46    1)  # Cambios en único ogLive (AVISO: puede crear inconsistencias con otros ogLive).
[c28eefa]47        echolog "Cambiando contraseña en un solo ogLive"
[a30baf2]48        LIST="$1" ;;
49    *)  # Error de formato.
[56a0aff]50        raiseError usage ;;
[a30baf2]51esac
[f3b1480]52
[5b18e0e]53# Recuperar eco de consola si se corta el proceso.
54trap "stty echo 2>/dev/null" KILL
55# Buscar todos los clients ogLive instalados.
56for OGLIVE in $LIST; do
57    # Crear clave para usuario de acceso a los recursos.
58    CLIENTINITRD="$TFTPDIR/$OGLIVE/$INITRD"
59    if [ -r "$CLIENTINITRD" ]; then
60        if [ -z "$SAMBAPASS" ]; then
61            # Obtener clave del teclado sin eco en pantalla.
62            stty -echo 2>/dev/null
63            echo -n "Clave del usuario Samba: "
64            read -r SAMBAPASS
65            # Solo se deben aceptar números y letras para la clave de acceso.
66            if [[ "$SAMBAPASS" =~ [^a-zA-Z0-9] ]]; then
[693dac9]67                echo
68                stty echo 2>/dev/null
[56a0aff]69                raiseError cancel "La clave solo debe contener caracteres alfanuméricos"
[5b18e0e]70            fi
71            echo
72            # Obtener confirmación clave sin eco en pantalla.
73            echo -n "Confirmar clave: "
74            read -r SAMBAPASS2
75            echo
76            stty echo 2>/dev/null
[56a0aff]77            [ "$SAMBAPASS" != "$SAMBAPASS2" ] && raiseError cancel "Las claves no coinciden"
[f3b1480]78        fi
79        # Editar la parte de acceso del cliente:
80        #    descomprimir Initrd, sustituir clave y recomprimir Initrd).
[c28eefa]81        echolog "Configurando cliente \"$OGLIVE\" ..."
[f3b1480]82        mkdir -p $TMPDIR
[56a0aff]83        cd $TMPDIR || ogRaiseError access "Directorio temporal"
[a5d9191]84        COMPRESS=$(file -b "$CLIENTINITRD" | awk '{print tolower($1);}')
85        $COMPRESS -dc "$CLIENTINITRD" | cpio -im
[f3b1480]86        if [ -f scripts/ogfunctions ]; then
87                sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
[f0cfbc0]88                # TEMPORAL: solución ticket 554, actualizar cliente en caché (ogLive r3257).
89                sed -i "s/busybox reboot/reboot/" scripts/ogfunctions
90                # FIN CÓDIGO TEMPORAL.
[f243a47]91                # Ticket 565, preparar acceso Rsync cliente.
[9555dd1]92                echo "$SAMBAPASS" > scripts/passrsync
93                chown root.root scripts/passrsync
94                chmod 400 scripts/passrsync
[a5d9191]95                # Generar Initrd del cliente (siempre comprimido con gzip).
[5b18e0e]96                find . | cpio -H newc -oa | gzip -9c > "$CLIENTINITRD"
[f3b1480]97        else
[c28eefa]98                echolog "$PROG: Aviso: no se ha modificado la clave del cliente \"$OGLIVE\"."
[f3b1480]99        fi
100        rm -fr $TMPDIR
[5b18e0e]101        # Calcular suma de comprobación.
102        md5sum "$CLIENTINITRD" | cut -f1 -d" " > "$CLIENTINITRD.sum"
103        let CHANGES++
104    else
[c28eefa]105        echolog "$PROG: Cliente \"$OGLIVE\" no accesible."
[5b18e0e]106    fi
107done
108if [[ $CHANGES != 0 ]]; then
109    # Ticket 565, preparar acceso Rsync servidor.
[72d9295]110    [ -e /etc/rsyncd.secrets ] && sed -i -n -e "/^$SAMBAUSER:/!p" -e "$ a$SAMBAUSER:$SAMBAPASS" /etc/rsyncd.secrets || echo "$SAMBAUSER:$SAMBAPASS" > /etc/rsyncd.secrets
[5b18e0e]111    chown root.root /etc/rsyncd.secrets
112    chmod 600 /etc/rsyncd.secrets
113    # Cambiar clave Samba.
114    echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
[f3b1480]115else
[c28eefa]116    echolog "$PROG: Aviso: no se ha modificado la clave de ningún cliente."
[f3b1480]117fi
118
Note: See TracBrowser for help on using the repository browser.