martes, 26 de abril de 2011

Bajas de usuarios en Linux con Perl

El otro día veíamos cómo dar de alta un usuario en Linux usando un script en Perl. Pues bien, hoy vamos a ver cómo lo podemos dar de baja, eliminando su directorio home y el contenido del mismo.

#!/usr/bin/perl

# Script que permite dar de baja un usuario.

# Author: Víctor Parra [parra@usal.es]

# AVISO: Requiere permisos de root
# Es necesario instalar el File::Path y el Linux::usermod
# ># perl -MCPAN -e 'install File::Path'
# ># perl -MCPAN -e 'install Linux::usermod'

# Parámetros:
# - [nombre_del_usuario] -> Nombre del usuario

$args=@ARGV;

if ($args < 1)
{
 print "\n";
 print "Uso: $0 [nombre_del_usuario]\n";
 print "\n";
 print "\n";
 die "Abortando";
}

$ruta="/home/" . $ARGV[0] . "/";

$usuario=$ARGV[0];
use Linux::usermod;
use File::Path;

print "Borrando el directorio $ruta...\n";
rmtree($ruta, 1, 1 ) or die "rmtree: $!\n";

Linux::usermod->del($usuario) or die "Deluser: $!\n";

print "\nUsuario $usuario borrado con éxito\n";
print "\n";
exit;

En este script tan sólo necesitamos hacer uso de la función Linux::usermod->del, la cual elimina el usuario pasado por parámetro en la variable $usuario.

Previamente eliminamos todo su directorio home con la orden rmtree, la cual elimina todos los ficheros y directorios (de forma recursiva) que se encuentren por debajo de la raíz que le pasamos como parámetro.. Los parámetros que se le pasan son:

  • $ruta -> Raíz del directorio que queremos eliminar (en nuestro caso, el directorio home del usuario, p.e. para el usuario prueba sería: /home/prueba el contenido de dicha variable.
  • El segundo parámetro (booleano) si se encuentra a true nos irá listando los archivos y directorios que se irán borrando a medida que se vaya ejecutando la orden.
  • El tercer valor pasado a dicha función es también un boolean que, a true, garantiza que no se borrarán aquellos ficheros para los cuales no tenemos permisos (en el caso de ejecutar el script como root obviamente siempre tendremos permiso).
Y eso es todo, esta vez se trata de un script más simple, pero si aún así surgen dudas ya sabéis: comentario al canto y lo contesto lo antes que pueda ;)

No hay comentarios:

Publicar un comentario

Las "disonancias gramaticales" no son bien recibidas en este blog así que, por favor, respeta la ortografía.
Nuestros ojos lo agradecerán.