Restringir la shell de usuario con rbash

Restringir la shell de usuario con rbash, en la terminal de Linux.

En Linux, al igual que en otros sistemas derivados de UNIX, al crear un nuevo  usuario se le asigna un shell predeterminado (normalmente /bin/bash). Esto quiere decir que un usuario con suficientes conocimientos, puede moverse libremente por otros directorios a los cuales no debería tener acceso, o incluso ejecutar alguna acción que dañe a otros usuarios.

Para evitar situaciones tan desagradables como las mencionadas anteriormente, existe rbash. Rbash, también conocido como restricted shell, tiene la capacidad de restringir las operaciones que un usuario (o varios), puede realizar en línea de comandos. En este artículo vemos como hacer esta operación, de manera sencilla y rápida.

Por ejemplo, si ejecutamos el modo simple rbash, o bash con la opción -r en la invocación, el shell se restringe automáticamente el usuario actual. Volverá a su estado normal al reiniciar el entorno. Observa la imagen de ejemplo.

Ejemplo de uso de rbash

Ejemplo de uso de rbash

 

Restringir la shell de usuario con rbash

Un modo restringido se usa para configurar un entorno más controlado que el estándar. Su comportamiento y forma de operar es idéntico a bash, con la excepción de lo que no está permitido. Vemos un listado de lo no permitido, más habitual.

  • Cambiar de directorio con el comando cd.
  • No se permite modificar los valores de SHELL, PATH, ENV o BASH_ENV.
  • Comandos, secuencias o nombres que contengan «/», como carácter o argumento.
  • Archivos que contengan una barra como argumento para la opción -p del propio hash.
  • Importar definiciones de funciones desde el entorno de inicio de shell.
  • Analizar el valor de SHELLOPTS desde el entorno de inicio shell.
  • Redirigir salidas usando los operadores de redirección >, > |, <>, > &, &> y >>.
  • Usar exec para reemplazar el shell con otro comando.
  • Agregar o eliminar comandos integrados con las opciones -f y -d, del comando enable.
  • Uso del comando enable builtin para habilitar funciones shell, que están deshabilitadas.
  • Desactivar cualquier modo de salir del modo restringido.
  • Alguna más de menor importancia.

 

Si queremos restringir solo a un usuario, modificamos su entorno de inicio en «$HOME/.bash_profile», con un sencillo script. En el home del usuario, creamos el archivo correspondiente.

sudo nano .bash_profile

Copia y pega lo siguiente.

# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then 
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
bash -r

Guarda el archivo, cierra el editor y reinicia el entorno de inicio del usuario en particular. Ahora probamos que funciona correctamente.

cd /etc/

cd /tmp/

Imagen de ejemplo.

Restricciones en bash

Restricciones en bash

 

Otra opción es modificar la shell predeterminada.

chsh -s /bin/rbash

También por usuario.

chsh -s /bin/rbash usuario
Entorno de inicio rbash

Entorno de inicio rbash

 

De todas formas, si tienes varios usuarios lo normal es imponer las mismas restricciones a todos. El superusuario jamás tendrá restricciones. En este caso (recomendable), creamos un enlace simbólico en /bin de bash a rbash, ningún usuario tendrá más permisos que los necesarios para su trabajo.

sudo cd /bin

sudo ln -s bash rbash

 

Nota: En algunas distribuciones linux la URL puede variar, por ejemplo la ruta /usr.

 

Canales de Telegram: Canal SoloLinux – Canal SoloWordpress

Espero que este artículo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales.

Chat de SoloLinux en Telegram

 

Agregar comentario

1 logo sololinux

Suscríbete a SoloLinux

Recibe todos los nuevos artículos es tu correo electrónico

You have Successfully Subscribed!

Ir al contenido