La eliminación de la variable PATH
no haría ninguna diferencia: si los usuarios pueden ejecutar un comando de shell, aún podrían establecer la variable o ejecutar comandos dando su ruta completa. Si de alguna manera obtienen acceso a una shell, has perdido.
Cambiar su shell a otro significa que están confinados a ese programa, y todo lo que logran lanzar desde ese programa.
Hay otra forma de restringir a los usuarios que solo pueden iniciar sesión con SSH: puede darles una clave (y no poner una contraseña en la cuenta, de modo que la única manera de iniciar sesión es con la clave), y poner una restricción command=…
en authorized_keys
(consulte la página de manual sshd
. Esto permite configurar diferentes comandos en diferentes claves para la misma cuenta, lo que puede o no ser útil. Tenga en cuenta que si confía en las restricciones en ~/.ssh/authorized_keys
, debe hacer que el directorio principal del usuario, el directorio .ssh
y su contenido sea propiedad de root para que el usuario no pueda modificarlos.
Si el programa al que desea dar acceso usa interacciones de terminal o es un filtro de flujo, entonces el acceso SSH dedicado es una buena manera de proporcionar ese servicio. Si el programa solo produce resultados de una pequeña cantidad de entrada, o si el programa utiliza un tipo de interacción de relleno en un formulario, entonces el HTTPS sería más adecuado. No invente su propio protocolo sobre SSL para esto: el uso del shell remoto (a través de SSH) o HTTP (a través de HTTPS) es el mejor para la interfaz de su programa. HTTPS será más fácil de usar para la mayoría de los usuarios.
Si desea dar a los usuarios un acceso limitado a la shell que solo les permita ejecutar un conjunto limitado de comandos, puede hacer que su shell rbash
, a shell restringido . Tenga en cuenta que los shells restringidos son difíciles de configurar correctamente: debe asegurarse de que ninguno de los programas disponibles tenga un escape de shell (GNU sed
, versiones no restringidas de vi
, ...).
Para limitar más a los usuarios, jail lo más posible. Esto puede variar desde un simple chroot
(que limita los archivos a los que los usuarios pueden acceder si logran engañar a su programa) hasta darles una cuenta solo dentro de una máquina virtual completa.