GNU/Linux >> Tutoriels Linux >  >> FreeBSD

Freebsd - Ssh dans la prison chrootée ne fonctionne pas à cause de l'opération /dev/null non prise en charge ?

J'essaie de configurer une prison ssh-chroot sur l'un de mes serveurs NAS. Le système fonctionne sur NAS4Free (qui est basé sur nanobsd). L'utilisateur ne doit pouvoir exécuter qu'une seule commande, qui est un script bash qui ouvre ssh sur un autre serveur et y exécute une commande.

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

Match User op
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

Le script contient cette ligne :

ssh -i /.ssh/id_rsa [email protected]$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"

Je peux me connecter à ce chroot en utilisant ssh, mais lorsque j'exécute le script, l'erreur suivante s'affiche lorsque j'essaie d'exécuter la commande ssh.

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

La même chose se produit lorsque j'essaie d'exécuter ssh plain dans le chroot

[I have no [email protected] /]$ 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 autorisations 666, j'obtiens bien sûr une erreur /dev/null autorisation refusée.

J'ai créé dev/null en utilisant

mknod dev/null c 2 2

J'ai essayé de trouver une explication pour laquelle l'opération de retour /dev/null n'est pas autorisée, mais je n'ai rien trouvé d'utile.

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

Réponse acceptée :

J'ai créé dev/null en utilisant

mknod dev/null c 2 2

Vos connaissances sont dépassées. Les choses ne fonctionnent plus de cette façon, maintenant que NAS4Free est basé sur les goûts de FreeBSD 10 et 11. (Ce ne sont pas non plus les numéros de périphérique pour le périphérique nul de toute façon.) Lisez le mknod Manuel. Vous pouvez toujours exécuter mknod pour créer des nœuds de périphérique dans un disque réel ou un système de fichiers RAM, mais les nœuds que vous créez seront pratiquement totalement inutiles. Comme vous pouvez le voir, le noyau ne vous permet pas d'ouvrir des périphériques avec eux.

C'est pourquoi dans les prisons - les prisons réelles, celles fournies avec le système d'exploitation, pas de simples environnements chrootés que l'on peut configurer avec sshd_config — on obtient les fichiers du périphérique en montant un devfs instance au sein de la prison. C'est aussi pourquoi les prisons ont des boutons pour contrôler si devfs peut être monté et quel jeu de règles devfs s'y applique.

Si vous voulez un /dev/null dans votre environnement racine modifié, vous devrez utiliser mount_nullfs pour faire le réel /dev arbre visible dans la racine modifiée. Si vous utilisez une prison authentique, configurez-la simplement pour monter un devfs sur /dev .

Si vous utilisez une prison de bonne foi, vous la configurez bien sûr pour qu'elle exécute sshd à l'intérieur de la prison , écoutant l'adresse IP de la prison et activé en tant que service dans la prison /etc/rc.conf de manière normale.

Connexe :la différence entre [[ $a ==z* ]] et [ $a ==z* ] ?

Autres lectures

  • mknod . Manuel FreeBSD 11.0.
  • devfs . Manuel FreeBSD 11.0.
  • devfs.rules . Manuel FreeBSD 11.0.
  • Documentation : Tutoriel :Prisons. Wiki NAS4Free.
  • Matteo Riondato. "Prisons". Manuel FreeBSD .
  • Scott Robb (2015-03-04). Jailles FreeBSD .

FreeBSD
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Quand utiliser /dev/random contre /dev/urandom ?

  3. Comment désactiver complètement un Cronjob vers /dev/null/?

  4. Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

  5. Que sont les fichiers /dev/zero et /dev/null sous Linux

tty (/dev/tty ) vs pts (/dev/pts) sous Linux

Comment encoder en base64 /dev/random ou /dev/urandom ?

screen Impossible d'ouvrir votre terminal '/dev/pts/0' - veuillez vérifier

Comment Linux utilise /dev/tty et /dev/tty0

echo ou print /dev/stdin /dev/stdout /dev/stderr

Pourquoi < ou > sont-ils nécessaires pour utiliser /dev/tcp