Alta de usuarios

+ Debemos ejecutar el script pasándole como parámetros un nombre de usuario y la contraseña.

+ En $ruta almacenamos el directorio HOME que tendrá el usuario concatenando la cadena "/home" con el nombre del usuario (almacenado en $ARGV[0]) mediante el operador . (punto).

+ Indicamos que vamos a usar las librerías CPAN Linux::usermod y File::Copy mediante el comando use.

+ Creamos la carpeta home y le modificamos los permisos.

+ Creamos el usuario mediante el comando Linux::usermod->add pasándole como parámetros:
    - El nombre del usuario.
    - La contraseña.
    - El UID (lo dejamos en blanco para que asigne el correspondiente). OJO, hay que usar COMILLAS SIMPLES.
    - El GID (en nuestro caso 100, que se corresponde con el grupo "users" de Debian.
    - Los comentarios sobre el usuario (teléfono, nombre completo... etc.) También los dejamos en blanco mediante el uso de COMILLAS SIMPLES.
    - Obtenemos el usuario mediante Linux::usermod->new y lo almacenamos en la variable $user.
    - Modificamos el propietario y el grupo de la carpeta HOME del usuario mediante el comando chown pasándole como parámetros el UID del usuario (obtenido mediante $user->get(uid) ), el GID del grupo al que pertenece el usuario ($user->get(gid) ) y la ruta del directorio HOME.
    - Copiamos en dicho directorio los archivos del skel. El comando copy (obtenido de la librería File::Copy) tiene 2 parámetros: el primero que es la ruta por defecto donde están estos archivos, y el segundo el nombre del archivo donde lo queremos pegar (en nuestro caso es el directorio HOME concatenado con el nombre del archivo, de nuevo mediante el uso del operador .

+ Una vez hecho esto creamos una subcarpeta en el directorio HOME llamada public_html (que en mi práctica era necesaria para guardar los archivos de la página web del usuario). NO es obligatorio crearla, pero si necesitáis crear una subcarpeta (o varias) sería seguir esos pasos, cambiando obviamente el nombre de la carpeta por el que quisiérais.

Finalmente le damos permisos de quota al usuario de 5Mb (tamaño que me exigían en la práctica) ejecutando el comando setquota a pedal (acotándolo entre acentos graves `). Este comando se puede omitir si en vuestro script no vais a usar quotas. En caso de que sí fuera, los parámetros pasados son:
    - $usuario -> Le indicamos el usuario al que le vamos a asignar los permisos (con la opción -u delante).
    - Límite soft de bloque -> Espacio en bloques que el usuario no deberá sobrepasar si no quiere recibir un aviso.
    - Límite hard de bloque -> Espacio en bloques que el usuario NO podrá superar.
    - Límite soft de inodos -> Número máximo de inodos que podrá tener el usuario antes de recibir avisos de que se excede su quota.
    - Límite hard de inodos -> Número máximo de inodos que el usuario podrá tener en esa partición del sistema.
    - $ruta -> Ruta en la cual se aplicarán las quotas (en nuestro caso, se trata del directorio HOME del usuario, del que no podrá salir. Se especifica mediante la opción -a).
This commit is contained in:
parra 2016-05-18 14:58:35 +02:00
parent 6015f5b660
commit f016e73a0c
1 changed files with 56 additions and 0 deletions

56
alta_usuarios.pl Normal file
View File

@ -0,0 +1,56 @@
#!/usr/bin/perl
# Script que permite dar de alta un usuario.
# Author: Víctor Parra [parra@usal.es]
# AVISO: Requiere permisos de root
# Es necesrio instalar el File::Copy y el Linux::usermod
# ># perl -MCPAN -e 'install File::Copy::Recursive'
# ># perl -MCPAN -e 'install Linux::usermod'
# Parámetros:
# - [nombre_del_usuario] -> Nombre del nuevo usuario
# - [password] -> Contraseña del nuevo usuario
$args=@ARGV;
if ($args < 2)
{
print "\n";
print "Uso: $0 [nombre_del_usuario] [password]\n";
print "\n";
print "\n";
die "Abortando";
}
$ruta="/home/" . $ARGV[0] . "/";
$usuario=$ARGV[0];
use Linux::usermod;
use File::Copy;
print "La ruta /home es: $ruta \n";
my $pass=$ARGV[1];
mkdir $ruta;
chmod(0770, $ruta) || print $!;
Linux::usermod->add($usuario,$pass,'',100,'',$ruta,"/bin/bash") || print "USERADD: $! \n";
$user=Linux::usermod->new($usuario);
chown($user->get(uid), $user->get(gid), $ruta) || print "CHOWN USER: $! \n";
copy("/etc/skel/.bash_logout", $ruta . ".bash_logout");
copy("/etc/skel/.bashrc", $ruta . ".bashrc");
copy("/etc/skel/.profile", $ruta . ".profile");
$subruta = $ruta . "/" . "public_html";
mkdir $subruta;
chown($user->get(uid), $user->get(gid), $subruta) || print "CHOWN: $! \n";
`setquota -u $usuario 0 5120 0 0 -a $ruta`;
print "\nUsuario $usuario creado con éxito\n";
print "\n";
exit;