QPKG para carpetas inmutables WORM 1.1 y 1.2
#1
Hola


Este post es una secuela del anterior QPKG para carpeta inmutables WORM pero con alguna variante.

La primera y mas sencilla es el uso de un log. Para ello se crea un archivo llamado "worm.log" en la carpeta "Public"

En el se anotan las distintas actividades que se hacen al instalar, activar y desactivar el qpkg.


En el post de usuario sudoer sin terner visudo en QTS se indicaba como hacer que no pida clave, pero esto lo hace para cualquier comando.

Si queremos afinar mas y no abrir tantas puertas al campo, podemos hacerlo sólo con los comandos que van a ser usados por WORM 1.1.
Para ello hemos de tener estos comandos en el autorun.sh

Code:
#agrega a miusuario como sudoers
mkdir /usr/etc/sudoers.d
echo "miusuario ALL=(ALL) NOPASSWD: /usr/bin/passwd, /usr/local/bin/usermod, /bin/cp, /bin/diff, /bin/mkdir, /bin/chmod, /bin/chattr, /bin/awk" > /usr/etc/sudoers.d/miusuario


Para aquellos que tengan interés, podemos hacerlo por scripts individuales. 

El de activar la inmutabilidad sería algo como esto:
Code:
#!/bin/sh
sistemaQTS=`getcfg SHARE_DEF defVolMP -f /etc/config/def_share.info`
#ruta defecto donde dejo la cfg
valoresfile=$sistemaQTS/Public/worm.cfg
valoresfile1=$sistemaQTS/Public/worm.log
DIA=`date +"%Y/%m/%d"`

# requisito previo, el usuario de la nas ha de ser sudoers
# guardo valor de estado de activacion del usuario admin para dejarlo activo si es que ya lo estaba
estado=$(sudo passwd -S admin | awk '{print $2}' )
    
# si no existe larchivo de worm.log, lo creo
if [ ! -f $valoresfile1 ]; then
    touch $valoresfile1
    chmod 777 $valoresfile1
    HORA=`date +"%H:%M:%S"`
    echo "$DIA $HORA creo archivo worm.log" >> $valoresfile1
fi
# escribo en el worm.log
echo "$DIA $HORA inicio aplicacion worm" >> $valoresfile1

# si el estado original no era activo, lo activo
if [ ! $estado == 'P' ]; then
    #activo al usuario admin
    sudo usermod -U admin
    HORA=`date +"%H:%M:%S"`
    # escribo en el worm.log
    echo "$DIA $HORA activo al usuario admin" >> $valoresfile1
fi
    
# si no existe la primera configuracion, copio la vacia a la carpeta Public.
if [ ! -f $valoresfile ]; then
    sudo cp $sistemaQTS/.qpkg/$QPKG_NAME/worm.cfg $sistemaQTS/Public/worm.cfg
    chmod 777 $sistemaQTS/Public/worm.cfg
    HORA=`date +"%H:%M:%S"`
    # escribo en el worm.log
    echo "$DIA $HORA copio archivo de configuracion de directorios vacio" >> $valoresfile1
else
    #compruebo si la cfg ha sido cambiada comparando archivo con el origianl del qpkg
    if sudo diff -q $sistemaQTS/.qpkg/$QPKG_NAME/worm.cfg $sistemaQTS/Public/worm.cfg; then
        #Son iguales y no hay rutas
        echo "Son iguales y NO ejecuto nada"HORA=`date +"%H:%M:%S"`
        # escribo en el worm.log
        echo "$DIA $HORA archvivo de configuracion sigue vacio, NO ejecuto nada" >> $valoresfile1
    else
        # existe el archivo de cfg cambiado, leo el contenido para ver cuales son las rutas inmutables
        while IFS= read -r line; do
            # si no existe la carpeta, la creo
            if [ ! -d $line ]; then
                #si no hay una ruta, la creo
                sudo mkdir $line
                sudo chmod 777 $line
                HORA=`date +"%H:%M:%S"`
                # escribo en el worm.log
                echo "$DIA $HORA creo carpeta $line" >> $valoresfile1
            fi
            # la hago inmutable
            sudo chattr -R +i $line
            HORA=`date +"%H:%M:%S"`
            # escribo en el worm.log
            echo "$DIA $HORA activo inmutabilidad a $line" >> $valoresfile1
        done < $valoresfile
    fi
fi

# si el estado original del usuario admin era activo, lo dejo activo y en caso contrario los desactivo
if [ ! $estado == 'P' ]; then
    #desactivo al usuario admin
    sudo usermod -L admin
    HORA=`date +"%H:%M:%S"`
    # escribo en el worm.log
    echo "$DIA $HORA desactivo usuario admin" >> $valoresfile1
fi



El de desactivar sería el siguiente:

Code:
#!/bin/sh
sistemaQTS=`getcfg SHARE_DEF defVolMP -f /etc/config/def_share.info`
#ruta defecto donde dejo la cfg
valoresfile=$sistemaQTS/Public/worm.cfg
valoresfile1=$sistemaQTS/Public/worm.log
DIA=`date +"%Y/%m/%d"`

# requisito previo, el usuario de la nas ha de ser sudoers

#guardo valor de estado de activacion del usuario admin para dejarlo activo si es que ya lo estaba
estado=$(sudo passwd -S admin | awk '{print $2}' )

# escribo en el worm.log
echo "$DIA $HORA detengo aplicacion worm" >> $valoresfile1

# si el estado original no era activo, lo activo
if [ ! $estado == 'P' ]; then
    #activo al usuario admin
    sudo usermod -U admin
    HORA=`date +"%H:%M:%S"`
    # escribo en el worm.log
    echo "$DIA $HORA activo usuario admin" >> $valoresfile1
fi
    
# quita la inmutabilidad en las carpetas
while IFS= read -r line; do
    sudo chattr -R -i $line
    HORA=`date +"%H:%M:%S"`
    # escribo en el worm.log
    echo "$DIA $HORA desactivo inmutabilidad a $line" >> $valoresfile1
done < $valoresfile

# si el estado original era activo, lo dejo activo
if [ ! $estado == 'P' ]; then
    #desactivo al usuario admin
    sudo usermod -L admin
    HORA=`date +"%H:%M:%S"`
    # escribo en el worm.log
    echo "$DIA $HORA desactivo al usuario admin" >> $valoresfile1
fi


Los qpkg ubicados en Mega son los siguientes:

Añado una versión con una pequeña mejora respecto del anterior.
Esta consisten en que al activar la inmutabilidad, también lo hacemos al archivo worm.cfg. 
Con ello evitamos posibles desastres si hay un borrado accidental del mismo durante la habilitación y NO sabemos cuales son las carpetas protegidas.
La instalación puede hacerse actualizando sobre el paquete anterior.

Los enlaces en Mega son los siguientes:

Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply




Users browsing this thread: 1 Guest(s)