#!/bin/bash # # userLin.sh # angeldp # # Script de gestión de usuarios. # Con -v mostrará los usuarios que pueden iniciar sesión en el equipo; # con -a añadirá nuevos usuarios; y con -e eliminará el usuario que se indique. # # En primer lugar comprobaré los parámetros: clear # Si no se ha pasado un parámetro # señalo el error e indico la sintaxis correcta. if [ $# -ne 1 ] then echo "Sintaxis incorrecta; " echo "Uso: $0 [-v | -a | -e]" echo -e "-v\tMuestra los usuarios que pueden iniciar sesión." echo -e "-a\tPermite añadir usuarios al sistema." echo -e "-e\tPermite eliminar usuarios del sistema." exit fi # Si se quieren ver los usuarios # muestro un mensaje de espera y la lista con los nombres # del primer campo del fichero /etc/passwd; siempre y cuando # las líneas no terminen en false (grep -v "false"$) if [ "$1" = "-v" ] then echo -n "Generando el listado de usuarios " echo -n ". " sleep 1 echo -n ". " sleep 1 echo "." USUARIOS=`grep -v "false"$ /etc/passwd | cut -d: -f1` # Si la variable usuarios queda vacía es que se ha producido un error: if [ -z "$USUARIOS" ] then echo "Se ha producido un error al leer de /etc/passwd" exit fi echo $USUARIOS # Si lo que se desea es añadir usuarios... elif [ "$1" = "-a" ] then # deberé comprobar que quien ejecuta el script puede añadir usuarios # para ello miraré si puede editar /etc/passwd if [ ! -w /etc/passwd ] then echo "No tiene permisos para añadir usuarios al equipo. Use sudo" exit fi echo -n "Indique el nombre de usuario a añadir: " read NUEVOUSU # Comprobaré que efectivamente ha escrito algo. if [ -z "$NUEVOUSU" ] then echo -e "\nDebe indicar un nombre de usuario." exit fi # También compruebo que el usuario no exista, # buscando líneas del passwd que comiencen por su nombre seguido de ":" # y contándolas. if [ `more /etc/passwd | grep ^"${NUEVOUSU}:" | wc -l` -eq 1 ] then echo -e "\n$NUEVOUSU ya existe; no se hará nada." exit fi # Solicito los datos opcionales: echo -en "\nIndique, si lo desea, el nombre completo del nuevo usuario: " read COMENTARIO # Si no ha escrito nombre completo, pongo el nombre de login if [ -z "$COMENTARIO" ] then COMENTARIO="$NUEVOUSU" fi echo -en "\nPuede, también si lo desea, incluir a $NUEVOUSU en un grupo distinto de users: " read GRUPOPRIN # Si no ha escrito un grupo principal, le pongo users como grupo if [ -z "$GRUPOPRIN" ] then GRUPOPRIN="users" fi # Ya tengo la información necesaria para proceder a crear el usuario. adduser --gecos "$COMENTARIO" --ingroup "$GRUPOPRIN" $NUEVOUSU 2> /dev/null # Conservo el código de error devuelto y si es distinto de 0 indico el error NUMERROR=$? if [ $NUMERROR -eq 0 ] then echo "$NUEVOUSU se ha creado correctamente." exit else echo "Se ha producido un error. No se creó $NUEVOUSU." echo "Consulte el error nº $NUMERROR en man adduser." exit fi # Si lo que quiere es eliminar usuarios... elif [ "$1" = "-e" ] then # compruebo los permisos del mismo modo que para añadir usuarios: if [ ! -w /etc/passwd ] then echo "No tiene permisos para eliminar usuarios del equipo. Use sudo" exit fi # Muestro la lista de usuarios: echo -n "Usuarios dados de alta en el equipo: " echo `more /etc/passwd | cut -d: -f1` echo -en "\nIndique el usuario a dar de baja: " read EXUSUARIO # Si el usuario que ha escrito no existe... if [ "`more /etc/passwd | cut -d: -f1 | grep ^"$EXUSUARIO"$`" != "$EXUSUARIO" ] then echo "$EXUSUARIO no existe, compruebe que ha escrito correctamente el nombre del usuario a eliminar." exit fi # Si existe, pregunto si se quiren eliminar también sus archivos echo -en "\n¿Quiere eliminar también sus archivos? s/n " read OPCION if [ "$OPCION" = "s" -o "$OPCION" = "S" ] then deluser --remove-all-files $EXUSUARIO 2> /dev/null NUMERROR=$? if [ $NUMERROR -eq 0 ] then echo -e "\nEl usuario $EXUSUARIO y todos sus archivos han sido eliminados correctamente." exit else echo -e "\nSe produjo un error." echo "Consulte en man deluser el número de error $NUMERROR" exit fi else deluser $EXUSUARIO 2> /dev/null NUMERROR=$? if [ $NUMERROR -eq 0 ] then echo -e "\nEl usuario $EXUSUARIO ha sido eliminado correctamente." exit else echo -e "\nSe produjo un error." echo "Consulte en man deluser el número de error $NUMERROR" exit fi fi # En el caso de que la opción no sea ninguna de las anteriores # indico el error y muestro la sintaxis adecuada else echo "$1 no es una opción válida para el script $0." echo "Sintaxis incorrecta; " echo "Uso: $0 [-v | -a | -e]" echo -e "-v\tMuestra los usuarios que pueden iniciar sesión." echo -e "-a\tPermite añadir usuarios al sistema." echo -e "-e\tPermite eliminar usuarios del sistema." exit fi