GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo restringir a un usuario a una carpeta y no permitirles que se muevan de su carpeta

Resolví mi problema de esta manera:

Crear un nuevo grupo

$ sudo addgroup exchangefiles

Crear el directorio chroot

$ sudo mkdir /var/www/GroupFolder/
$ sudo chmod g+rx /var/www/GroupFolder/

Cree el directorio de escritura grupal

$ sudo mkdir -p /var/www/GroupFolder/files/
$ sudo chmod g+rwx /var/www/GroupFolder/files/

Déselos ambos al nuevo grupo

$ sudo chgrp -R exchangefiles /var/www/GroupFolder/

después de eso fui a /etc/ssh/sshd_config y añadido al final del archivo:

Match Group exchangefiles
  # Force the connection to use SFTP and chroot to the required directory.
  ForceCommand internal-sftp
  ChrootDirectory /var/www/GroupFolder/
  # Disable tunneling, authentication agent, TCP and X11 forwarding.
  PermitTunnel no
  AllowAgentForwarding no
  AllowTcpForwarding no
  X11Forwarding no

Ahora voy a agregar un nuevo usuario con el nombre de obama a mi grupo:

$ sudo adduser --ingroup exchangefiles obama

Ahora todo está hecho, por lo que debemos reiniciar el servicio ssh:

$ sudo service ssh restart

aviso:el usuario ahora no puede hacer nada file directorio Quiero decir que todo su archivo debe estar en la carpeta de archivos.


Las restricciones son un tema sensible y deben definirse de manera coherente. Lo que puede hacer es definir un shell restringido para el usuario como su shell predeterminado .

Por ejemplo, establecer /bin/rksh (un kornshell restringido) en lugar del shell predefinido del usuario como shell predeterminado para ese usuario en /etc/profile .

NOTA: si el ejecutable con este nombre no existe en su sistema, cree un enlace fijo ln /bin/ksh /bin/rksh y ksh determinará por su nombre si está restringida o no.

El shell restringido evitará (por ejemplo) hacer un cd comando, o especificando un comando con un / (una ruta explícita) en la invocación, y no permite cambiar el PATH , SHELL o ENV variable, y las redirecciones de salida también están prohibidas.

Tu puedes todavía proporciona predefinido scripts de shell al usuario que (¡bajo el control de los implementadores de scripts!) le permitirán ejecutar ese(s) script(s) específico(s) en un entorno sin restricciones.


El comando chroot le permite crear una raíz restringida para un usuario, esta pregunta explica el concepto de chroot y cómo usarlo.

Actualización:Búsqueda de chroot jail configurado en digital ocean , abre más documentación específica para su entorno. Aquí hay un par que creo que están relacionados con lo que podría necesitar.

Cómo configurar entornos Chroot para realizar pruebas en un VPS con Ubuntu 12.04

Cómo permitir el acceso SSH restringido al usuario chroot encarcelado

Aquí hay uno que se relaciona con jailkit, que sugirió FloHimself.


Linux
  1. Cómo permitir que el usuario use sudo en Ubuntu Linux

  2. Cómo crear un usuario Sudo en Rocky Linux y CentOS

  3. ¿Cómo mover archivos de una cuenta de usuario a otra en la misma computadora?

  4. Cómo usar sudo para permitir que un usuario no root ejecute un comando en particular

  5. ¿Cómo restringir a un usuario de SSH para que solo permita el túnel SSH?

Cómo agregar y eliminar usuarios en CentOS 8

Cómo agregar y eliminar usuarios en CentOS 7

Cómo agregar y eliminar usuarios en Debian 9

Cómo crear y configurar un usuario de Sudo en Arch Linux

Cómo crear un usuario Sudo en Ubuntu y Debian

Permisos básicos de directorio de Linux y cómo verificarlos