sábado, 18 de febrero de 2012

Expulsar usuarios del sistema

En el caso de ser administrador de sistemas en Linux puede resultar útil un comando que permita expulsar a un usuario del sistema y, al mismo tiempo, bloquear accesos posteriores. Después de buscar de manera infructuosa si existía tal comando en el sistema, decidí crear un script que se adaptase a lo que necesitaba. Posteriormente encontré el comando slay, aunque sólo permitía eliminar los procesos de un usuario del sistema, no imperdirle el acceso. De todos modos, cuando lo descubrí ya había hecho el script que os dejo a continuación.


#!/bin/bash

set -u

#Comprobamos que se le pasa un parámetro al script (el nombre de usuario a expulsar)
if [ $# -eq 1 ]; then
  uid=`id -u $1 2> /dev/null`

  #Si el usuario existe en el sistema
  if [ -n $uid ]; then
    if [ $1 != "root" ]; then
      pkill -KILL -U $uid
      sed -i "s/$1/#$1/g"  /etc/passwd
      echo "Usuario $1 expulsado del sistema y bloqueado"
    else
      #Si intentamos expulsar al root
      echo  "¿Seguro que quieres abandonar el sistema? (s/n)"
      read salir
    
      if [ $salir = "s" ] || [ $salir = "S" ]; then
        #Expulsamos el usuario root
        pkill -KILL -U $uid
        sed -i "s/$1/#$1/q" /etc/passwd
      else
        #Terminamos el programa
        exit 0
      fi
    fi
  fi
fi