Respuestas:
Esto es simple. Simplemente cree un nuevo usuario con su directorio de inicio configurado al que necesita que tenga acceso (este comando debe ejecutarse bajo sudo
o en el shell raíz):
adduser --home /restricted/directory restricted_user
Esto creará un usuario restricted_user
, se establecerá el directorio /restricted/directory
y luego los permisos en el directorio para que el usuario pueda escribir en él. No tendrá la capacidad de escribir en ningún otro directorio de forma predeterminada.
Si ya tiene el directorio, puede ejecutar el adduser
comando con una --no-create-home
opción añadida y establecer permisos manualmente (también con privilegios de root), como:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Si necesita hacer que incluso los directorios de escritura mundial no sean accesibles para este usuario, hay dos variantes.
1) Si desea proporcionar una sesión de shell interactiva al usuario, considere seguir este manual sobre cómo crear una cárcel chroot (en su /restricted/directory
).
Después de eso, agregue lo siguiente a su sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Si solo necesita que copie archivos entre su punto final de conexión y su host, todo es mucho más fácil. Agregue estas líneas al final de su sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Luego comente Subsystem sftp /usr/lib/openssh/sftp-server
colocando un #
signo hash ( ) al comienzo.
Después de reiniciar su servidor SSH (no mata las sesiones interactivas al reiniciar, por lo que es seguro incluso si configuró algo mal; además, no cierra su sesión en ejecución antes de que haya verificado que todavía puede iniciar sesión), todo debería funcionar Como era la intención.
Subsystem sftp internal-sftp
línea en su segundo ejemplo sobre el Match
bloque. De lo contrario, ssh imprimirá un error y no se iniciará.
La forma más fácil de crear un usuario restringido que no pueda salir del directorio dado (por ejemplo, al directorio superior, etc.) y que tenga un conjunto de comandos limitado / elegido para usar, es usar un Shell restringido. Árbitro:
Primero, cree un enlace simbólico llamado rbash
(ejecutar como usuario root).
ln -s /bin/bash /bin/rbash
Luego, cree un usuario normal con este Shell restringido y configure su directorio de inicio en la carpeta deseada:
useradd -s /bin/rbash -d /home/restricted_folder username
Incluso sin el Shell restringido, si no agrega explícitamente a este usuario a la lista de sudoers, ni a ningún grupo especial, entonces estará limitado de manera predeterminada.
Con el Shell restringido, lo siguiente no se permite o no se realiza:
cambio de directorios con cd
establecer o desarmar los valores de SHELL, PATH, ENV o BASH_ENV
especificando nombres de comandos que contienen /
especificando un nombre de archivo que contiene un / como argumento para el. comando incorporado
Especificar un nombre de archivo que contenga una barra como argumento para la opción -p del comando hash builtin
importar definiciones de funciones desde el entorno de shell al inicio
analizando el valor de SHELLOPTS desde el entorno de shell al inicio
redirigir la salida utilizando los operadores de redireccionamiento>,> |, <>,> &, &> y >>
usando el comando incorporado exec para reemplazar el shell con otro comando
Agregar o eliminar comandos incorporados con las opciones -f y -d al comando habilitar incorporado
Uso del comando enable builtin para habilitar los builtins de shell deshabilitados
especificando la opción -p para el comando incorporado
desactivar el modo restringido con set + r o set + o restringido.
Estas restricciones se aplican después de cualquier archivo de inicio
Además / Opcionalmente, para restringir al usuario a un conjunto de comandos limitado / elegido para usar, puede crear un .bash_profile de solo lectura para ese usuario, con
PATH=$HOME/bin
y enlace simbólico cualquier comando 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