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.