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.
mknod
. Manuel FreeBSD 11.0. devfs
. Manuel FreeBSD 11.0. devfs.rules
. Manuel FreeBSD 11.0.