summaryrefslogtreecommitdiffstats
path: root/admin/Interface/CambiarAcceso
blob: 75b38c9c2deeb5a2b143bf9a0744e62323d11ef7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/bash

#______________________________________
#
# PARAMETROS RECIBIDOS DESDE EL CLIENTE
# $1 modo  (admin, user)
#______________________________________

# Error si llamada no se realliza desde OpenGnSys Client.
PROG=$(basename $0)
CALLER=$(ogGetCaller)
if ! $(ogCheckStringInGroup "$CALLER" "CrearImagen ConsolaRemota CrearImagenBasica CrearSoftIncremental"); then
    ogRaiseError $OG_ERR_NOTEXEC "$CALLER -> $PROG"
    exit $?
fi

# Salir si el repositorio está bloquedo (tiene ficheros abiertos).
REPOIP=$(ogGetRepoIp)
if [ -z "$REPOIP" ]; then
	ogRaiseError $OG_ERR_NOTFOUND "repo no montado"
	exit $?
fi
if ogIsRepoLocked; then
	ogRaiseError $OG_ERR_LOCKED "repo $REPOIP"
	exit $?
fi

# Comprobar protocolo y modo de acceso.
PROTO=${ogprotocol:-"smb"}
case "$PROTO" in
	nfs|smb) ;;
	*)	ogRaiseError $OG_ERR_FORMAT "protocolo desconocido $PROTO"
		exit $? ;;
esac
case "$1" in
	admin)	MODE="rw,nolock" ;;
	user)	MODE="ro,nolock" ;;
	*)	ogRaiseError $OG_ERR_FORMAT "modo desconocido $1"
		exit $? ;;
esac

# Desmontar repositorio y volver a montarlo con el modo adecuado.
umount $OGIMG
# Unidad organizativa
[ "$ogunit" != "" ] && OGUNIT="/$ogunit"
ogEcho info "$PROG: Montar repositorio $REPO por $PROTO en modo $1"
case "$PROTO" in
	nfs)	mount -t nfs $REPOIP:$OGIMG$OGUNIT $OGIMG -o $MODE ;;
	smb)	PASS=$(grep "^[	 ]*\(export \)\?OPTIONS=" /scripts/ogfunctions 2>&1 | \
			sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/')
		PASS=${PASS:-"og"}
		mount.cifs //$REPOIP/ogimages$OGUNIT $OGIMG -o $MODE,serverino,acl,username=opengnsys,password=$PASS
esac