2010-06-06 12:40:52 +0000 2010-06-06 12:40:52 +0000
50
50

Crear un usuario SSH que sólo tenga permiso para acceder a carpetas específicas

He instalado SSH, pero he descubierto que si uso mi cuenta original para entrar en Ubuntu, tiene demasiados permisos.

Quiero restringir el usuario para que sólo tenga permisos para carpetas específicas en Ubuntu. ¿Cómo puedo configurar dicho usuario?

Respuestas (2)

53
53
53
2010-06-06 12:49:32 +0000

Esto es sencillo. Sólo tienes que crear un nuevo usuario con su directorio principal establecido al que necesitas que tenga acceso (este comando debe ser ejecutado bajo sudo o en el shell de root):

adduser --home /restricted/directory restricted_user

Esto creará un usuario restricted_user, el directorio /restricted/directory y luego se establecerán los permisos en el directorio para que el usuario pueda escribir en él. Por defecto no podrá escribir en ningún otro directorio.

Si ya tiene el directorio, puede ejecutar el comando adduser con la opción --no-create-home añadida y establecer los permisos manualmente (también con privilegios de root), como:

chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory

Si necesitas que incluso los directorios de escritura mundial sean inaccesibles para este usuario, hay dos variantes.

1) Si quiere proporcionar una sesión de shell interactiva al usuario, entonces considere seguir este manual sobre la creación de una jaula chroot (en su /restricted/directory).

Después de eso, añada lo siguiente a su sshd_config:

Match user restricted_user
  ChrootDirectory /restricted/directory

2) Si sólo necesitas que copie archivos entre su punto final de conexión y tu host, todo es mucho más fácil. Añade estas líneas al final de tu sshd_config:

Match user restricted_user
  ForceCommand internal-sftp
  ChrootDirectory /restricted/directory

Subsystem sftp internal-sftp

Luego comente el Subsystem sftp /usr/lib/openssh/sftp-server colocando un signo de hash (#) al comienzo.

Después de reiniciar su servidor SSH (no mata las sesiones interactivas en el reinicio, por lo que es seguro incluso si usted configuró mal algo; también, no cierra su sesión en ejecución antes de que usted haya comprobado que todavía es capaz de conectarse), todo debería funcionar como se pretende.

5
5
5
2017-11-04 02:03:42 +0000

La forma más fácil de crear un usuario restringido que no pueda salirse del directorio dado (por ejemplo, al directorio superior, etc.), y que tenga un conjunto limitado/elegido de comandos para usar, es usar un Shell Restringido. Ref: http://man.he.net/man1/rbash

En primer lugar, cree un enlace simbólico llamado rbash (ejecute como usuario root).

ln -s /bin/bash /bin/rbash

A continuación, cree un usuario normal con este Shell Restringido, y establezca su directorio principal en la carpeta deseada:

useradd -s /bin/rbash -d /home/restricted_folder username

Incluso sin el Shell Restringido, si explícitamente no agrega este usuario a la lista de sudoers, o a cualquier grupo especial, entonces será limitado por defecto.

Con el Shell Restringido, lo siguiente no está permitido o no se realiza:

  • cambiar directorios con cd

  • establecer o desestablecer los valores de SHELL, PATH, ENV, o BASH_ENV

  • especificar nombres de comandos que contengan /

  • especificar un nombre de archivo que contenga una / como argumento del comando .

  • Especificar un nombre de archivo que contenga una barra como argumento de la opción -p del comando buildin hash

  • importar definiciones de funciones desde el entorno del shell al inicio

  • analizar el valor de SHELLOPTS desde el entorno del shell al inicio

  • redirigir la salida utilizando las opciones >, >|, <>, >&, &>, y >> operadores de redirección

  • usar el comando exec builtin para reemplazar el shell con otro comando

  • añadir o eliminar comandos builtin con las opciones -f y -d al comando enable builtin

  • usar el comando enable builtin para habilitar los buildins del shell deshabilitados

  • especificar la opción -p al comando command builtin

  • desactivar el modo restringido con set +r o set +o restricted.

Estas restricciones se aplican después de cualquier archivo de inicio

Además/Opcionalmente, para restringir al usuario a un conjunto limitado/elegido de comandos a utilizar, puede crear un .bash_profile de sólo lectura para ese usuario, con

PATH=$HOME/bin

y hacer un enlace simbólico de los comandos que permita en la carpeta ~/bin a ese usuario:

ln -s /bin/ls /home/restricted_folder/bin/ls
ln -s /bin/mkdir /home/restricted_folder/bin/mkdir
ln -s /bin/rm /home/restricted_folder/bin/rm

etc.

HTH