ssh dans la prison chrootée ne fonctionne pas car l'opération / dev / null n'est pas supscope

J'essaie de mettre en place une prison ssh-chroot sur un de mes servers NAS. Le système fonctionne sur NAS4Free (basé sur nanobsd). L'user doit pouvoir exécuter une seule command, qui est un script bash qui ouvre ssh sur un autre server et y exécute une command.

Pour configurer le chroot, j'ai ceci dans ma config sshd.

Match User op ChrootDirectory %h X11Forwarding no AllowTcpForwarding no 

Le script a cette ligne dedans:

 ssh -i /.ssh/id_rsa backup@$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'" 

Je peux me connecter à ce chroot en utilisant ssh mais quand j'exécute le script il donne l'erreur suivante en essayant d'exécuter la command ssh dedans.

 Couldn't open /dev/null: Operation not supported 

La même chose arrive, quand j'essaie d'exécuter ssh plain dans le chroot

 [I have no name!@nas /]$ ssh Couldn't open /dev/null: Operation not supported 

/ dev / null ressemble à ceci:

 $ 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 

Sans les permissions 666, j'obtiens une erreur refusée / dev / null bien sûr.

J'ai créé dev / null en utilisant

 mknod dev/null c 2 2 

J'ai essayé de find une explication pourquoi / dev / null renvoie l'opération non autorisée mais n'a rien trouvé qui aide.

Quelqu'un pourrait-il expliquer comment résoudre ce problème?

J'ai créé dev / null en utilisant

  mknod dev / null c 2 2 

Votre connaissance est obsolète. Les choses ne fonctionnent plus de cette façon, maintenant que NAS4Free est basé sur les goûts de FreeBSD 10 et 11. (Et ce n'est pas non plus le numéro de périphérique du périphérique null.) Lisez le manuel de mknod . Vous pouvez toujours exécuter mknod pour créer des nœuds de périphériques dans un disque ou un système de files RAM, mais les nœuds que vous créez seront quasiment inutiles. Comme vous pouvez le voir, le kernel ne vous laisse pas ouvrir les périphériques avec eux.

C'est pourquoi dans les prisons – réelles, celles qui viennent avec le operating system, pas de simples environnements chrootés que l'on peut mettre en place avec sshd_config – on obtient les files de périphériques en montant une instance devfs dans la prison. C'est aussi pourquoi les prisons ont des buttons pour contrôler si les devfs peuvent être montés et ce que devfs ruleset lui applique.

Si vous voulez un /dev/null dans votre environnement racine modifié, vous devrez utiliser mount_nullfs pour rendre l'arborescence /dev visible dans la racine modifiée. Si vous utilisez une prison de bonne foi, il suffit de le configurer pour monter un devfs sur /dev .

Si vous utilisez une prison de bonne foi, vous devez bien sûr la configurer pour exécuter sshd à l'intérieur de la prison , écouter l'adresse IP de la prison et activer le service dans le file /etc/rc.conf de la façon habituelle.

Plus de lecture

  • mknod . Manuel FreeBSD 11.0.
  • devfs . Manuel FreeBSD 11.0.
  • devfs.rules . Manuel FreeBSD 11.0.
  • Documentation: Howto: Prisons . NAS4Free wiki.
  • Matteo Riondato. " Prisons ". Manuel de FreeBSD .
  • Scott Robb (2015-03-04). Prison de FreeBSD .