lunes, 4 de febrero de 2019

Modificar Active Directory desde Linux

El siguiente script es utilizado para modificar la descripción de un usuario de Active Directory de Windows desde un Linux con el comando ldapmodify.

El script crea un archivo llamado entrymods con formato ldif para luego importarlo, finalmente lo borra.

Acá el script y luego lo explicaré linea por linea:

#!/bin/bash
if [ $# -ne 3 ]
then
       echo "Cantidad de parametros incorrecta"
       echo "Uso del Script: $0 [Apellido] [Nombre] [descripcion]"
       echo "Ejemplo: $0 Martinez Diego Mi_Descrip"
       exit
fi
if [ "$1" != "Cacheuta" -a "$1" != "Perez" -a "$1" != "Martinez" ]
then
 echo "Usuario Incorrecto, no tiene permisos o esta mal escrito: (Cacheuta, Perez ó Martinez)"
 exit
fi
rm -rf /tmp/entrymods
echo dn: CN=$1 $2,OU=Sistemas,OU=Users,OU=España,OU=Europa,DC=redes,DC=seguridad,DC=com >> /tmp/entrymods
echo changetype: modify >> /tmp/entrymods
echo replace: description >> /tmp/entrymods
echo description: $3 >> /tmp/entrymods
ldapmodify -h mi_domain_controller -D "mi_user@redes.seguridad.com" -w "Clave_de_mi_user" -f /tmp/entrymods
rm -rf /tmp/entrymods

Explicación del script:

 El primer if testea si la cantidad de parámetros que recibe el script es igual a 3. Se debe enviar como parámetro el Apellido, Nombre y la Descripción que querémos que le ponga al usuario con el Apellido indicado.

El segundo if verifica si los usuarios a modificar corresponde con alguno de esos 3, es decir sólo a estos 3 usuarios podré modificar su descripción: Cacheuta, Perez y Martinez.

Luego borro el temporal de ldif en caso que exista, a continuación creo uno nuevo, donde le especifico la Unidad Organizativa donde están dichos usuarios a modificar, le especifico que voy a modificar y lo que voy a reemplazar es la descripción del usuario.

Ejecuto el ldapmodify específicandole el nombre ó la ip del domain controller, un usuario con permisos para modificar el Active Directory, la password del usuario para modificar el AD y el archivo LDIF generado previamente.

Al final vuelvo a borrar el archivo temporal.

Le damos permisos al script para que cualquiera pueda ejecutar:

# chmod a+x /ruta/del/script/modifica_descripcion.sh

Ejecutamos el script pasandoles los parámetros:


/ruta/del/script/modifica_descripcion.sh Cacheuta Diego Administracion

Agregamos al webmin para que pueda ejecutarlo el usuario deseado:

http://redes-seguridad.blogspot.com/2012/11/permisos-script-en-webmin.html