1 | #!/bin/bash |
---|
2 | # setsmbpass: cambia la contraseña del usuario del cliente para acceder a los |
---|
3 | # servicios Samba. |
---|
4 | # Nota: se modifica el Initrd del cliente y se cambia la clave en el servidor. |
---|
5 | # Nota: no se modifica el usuario de acceso (usuario "opengnsys"). |
---|
6 | # Uso: setsmbpass |
---|
7 | # Autor: Ramon Gomez - Univ. Sevilla, julio 2011 |
---|
8 | |
---|
9 | |
---|
10 | # Variables. |
---|
11 | PROG=$(basename $0) |
---|
12 | OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"} |
---|
13 | SAMBAUSER="opengnsys" # Usuario por defecto. |
---|
14 | CLIENTINITRD=$OPENGNSYS/tftpboot/ogclient/oginitrd.img |
---|
15 | TMPDIR=/tmp/ogclient$$ |
---|
16 | |
---|
17 | # Control básico de errores. |
---|
18 | if [ $# != 0 ]; then |
---|
19 | echo "$PROG: Error de ejecución" >&2 |
---|
20 | echo "Formato: $PROG" |
---|
21 | exit 1 |
---|
22 | fi |
---|
23 | if [ "$USER" != "root" ]; then |
---|
24 | echo "$PROG: Error: solo ejecutable por root" >&2 |
---|
25 | exit 1 |
---|
26 | fi |
---|
27 | |
---|
28 | # Crear clave para usuario de acceso a los recursos. |
---|
29 | if [ -r $CLIENTINITRD ]; then |
---|
30 | stty -echo 2>/dev/null |
---|
31 | echo -n "Clave del usuario Samba: " |
---|
32 | read SAMBAPASS |
---|
33 | # Solo se deben aceptar números y letras para la clave de acceso. |
---|
34 | if [ -n "${SAMBAPASS//[a-zA-Z0-9]/}" ]; then |
---|
35 | echo |
---|
36 | echo "$PROG: Error: la clave solo debe contener caracteres alfanuméricos" >&2 |
---|
37 | stty echo 2>/dev/null |
---|
38 | exit 2 |
---|
39 | fi |
---|
40 | echo |
---|
41 | echo -n "Confirmar clave: " |
---|
42 | read SAMBAPASS2 |
---|
43 | echo |
---|
44 | stty echo 2>/dev/null |
---|
45 | if [ "$SAMBAPASS" != "$SAMBAPASS2" ]; then |
---|
46 | echo "$PROG: Error: las claves no coinciden" >&2 |
---|
47 | exit 2 |
---|
48 | fi |
---|
49 | # Editar la parte de acceso del cliente: |
---|
50 | # descomprimir Initrd, sustituir clave y recomprimir Initrd). |
---|
51 | mkdir -p $TMPDIR |
---|
52 | cd $TMPDIR |
---|
53 | gzip -dc $CLIENTINITRD | cpio -im |
---|
54 | if [ -f scripts/ogfunctions ]; then |
---|
55 | sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions |
---|
56 | find . | cpio -H newc -oa | gzip -9c > $CLIENTINITRD |
---|
57 | else |
---|
58 | echo "$PROG: Aviso: no se ha modificado la clave del cliente." |
---|
59 | fi |
---|
60 | rm -fr $TMPDIR |
---|
61 | md5sum $CLIENTINITRD | cut -f1 -d" " > $CLIENTINITRD.sum |
---|
62 | else |
---|
63 | SAMBAPASS="og" # Clave por defecto. |
---|
64 | echo "$PROG: Aviso: no se ha modificado la clave del cliente." |
---|
65 | fi |
---|
66 | echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER |
---|
67 | |
---|