Estoy tratando de configurar una cárcel ssh-chroot en uno de mis servidores NAS. El sistema se ejecuta en NAS4Free (que se basa en nanobsd). El usuario debe poder ejecutar solo un comando, que es un script bash que abre ssh a otro servidor y ejecuta un comando allí.
Para configurar el chroot tengo esto en mi configuración sshd.
Match User op
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
El script tiene esta línea:
ssh -i /.ssh/id_rsa [email protected]$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"
Puedo iniciar sesión en ese chroot usando ssh, pero cuando ejecuto el script, aparece el siguiente error al intentar ejecutar el comando ssh en él.
Couldn't open /dev/null: Operation not supported
Lo mismo sucede cuando trato de ejecutar ssh sin formato dentro del chroot
[I have no [email protected] /]$ ssh
Couldn't open /dev/null: Operation not supported
/dev/null se ve así:
$ ls -la dev/
total 8
drwx--x--x 2 root staff 512 Nov 29 18:16 .
drwxr-xr-x 8 root staff 512 Nov 29 18:06 ..
crw-rw-rw- 1 root staff 0x18 Nov 29 18:16 null
Sin los permisos 666 obtengo un error de denegación de permiso /dev/null, por supuesto.
Creé dev/null usando
mknod dev/null c 2 2
He intentado encontrar una explicación de por qué /dev/null devoluciones no se permite la operación, pero no he encontrado nada que ayude.
¿Podría alguien explicar cómo solucionar esto?
Respuesta aceptada:
Creé dev/null usando
mknod dev/null c 2 2
Tu conocimiento está desactualizado. Las cosas ya no funcionan de esta manera, ahora que NAS4Free se basa en FreeBSD 10 y 11. (De todos modos, tampoco son esos los números de dispositivo para el dispositivo nulo). Lea el mknod
manual. Todavía puedes ejecutar mknod
para crear nodos de dispositivo en un disco real o en un sistema de archivos RAM, pero los nodos que cree serán completamente inútiles. Como puedes ver, el kernel no te permite abrir dispositivos con ellos.
Es por eso que en las cárceles:cárceles reales, las que vienen con el sistema operativo, no simples entornos chroot que uno puede configurar con sshd_config
— uno obtiene los archivos del dispositivo montando un devfs
instancia dentro de la cárcel. También es por eso que las cárceles tienen perillas para controlar si devfs
se puede montar y qué conjunto de reglas devfs se le aplica.
Si quieres un /dev/null
en su entorno raíz modificado, tendrá que usar mount_nullfs
para hacer el /dev
real árbol visible dentro de la raíz modificada. Si usa una cárcel de buena fe, simplemente configúrela para montar un devfs en /dev
.
Si usa una cárcel de buena fe, por supuesto, la configura para ejecutar sshd
dentro de la cárcel , escuchando en la dirección IP de la cárcel y habilitado como un servicio en la cárcel /etc/rc.conf
de la manera normal.
Lecturas adicionales
mknod
. Manual de FreeBSD 11.0.devfs
. Manual de FreeBSD 11.0.devfs.rules
. Manual de FreeBSD 11.0.- Documentación:Cómo:Cárceles. Wiki de NAS4Free.
- Mateo Riondato. “Cárceles”. Manual de FreeBSD .
- Scott Robb (2015-03-04). Cárceles de FreeBSD .