GNU/Linux >> Linux Esercitazione >  >> FreeBSD

Freebsd – Ssh in Chrooted Jail non funziona a causa dell'operazione /dev/null non supportata?

Sto provando a configurare una jail ssh-chroot su uno dei miei server NAS. Il sistema funziona su NAS4Free (che è basato su nanobsd). L'utente dovrebbe essere in grado di eseguire un solo comando, che è uno script bash che apre ssh su un altro server ed esegue un comando lì.

Per configurare il chroot ho questo nella mia configurazione sshd.

Match User op
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

Lo script contiene questa riga:

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

Posso accedere a quel chroot usando ssh ma quando eseguo lo script viene visualizzato il seguente errore quando provo a eseguire il comando ssh al suo interno.

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

Lo stesso accade quando provo a eseguire ssh plain all'interno del chroot

[I have no [email protected] /]$ ssh
Couldn't open /dev/null: Operation not supported

/dev/null si presenta così:

$ 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

Senza i permessi 666 ottengo un errore /dev/null permesso negato ovviamente.

Ho creato dev/null usando

mknod dev/null c 2 2

Ho cercato di trovare una spiegazione del motivo per cui /dev/null restituisce l'operazione non consentita, ma non ho trovato nulla che aiuti.

Qualcuno potrebbe spiegare come risolvere questo problema?

Risposta accettata:

Ho creato dev/null usando

mknod dev/null c 2 2

La tua conoscenza è obsoleta. Le cose non funzionano più in questo modo, ora che NAS4Free è basato su prodotti del calibro di FreeBSD 10 e 11. (Né quelli sono i numeri di dispositivo per il dispositivo nullo comunque.) Leggi il mknod Manuale. Puoi ancora eseguire mknod per creare nodi dispositivo in un disco reale o filesystem RAM, ma i nodi che crei saranno praticamente del tutto inutili. Come puoi vedere, il kernel non ti consente di aprire i dispositivi con essi.

Questo è il motivo per cui nelle jail — vere e proprie jail, quelle fornite con il sistema operativo, non semplici ambienti con chroot che si possono configurare con sshd_config — si ottengono i file del dispositivo montando un devfs istanza all'interno del carcere. È anche il motivo per cui le jail hanno le manopole per controllare se devfs può essere montato e quale set di regole devfs si applica ad esso.

Se vuoi un /dev/null nel tuo ambiente root modificato, dovrai usare mount_nullfs per creare l'effettivo /dev albero visibile all'interno della radice modificata. Se usi una jail in buona fede, configurala per montare un devfs su /dev .

Se usi un jail in buona fede, ovviamente lo configuri per eseguire sshd dentro la prigione , ascoltando l'indirizzo IP della prigione e abilitato come servizio in della prigione /etc/rc.conf normalmente.

Correlati:la differenza tra [[ $a ==z* ]] e [ $a ==z* ]?

Ulteriori letture

  • mknod . Manuale di FreeBSD 11.0.
  • devfs . Manuale di FreeBSD 11.0.
  • devfs.rules . Manuale di FreeBSD 11.0.
  • Documentazione:Guida:Carcere. NAS4Wiki gratuito.
  • Matteo Riondato. "Carcere". Manuale di FreeBSD .
  • Scott Robb (04-03-2015). Jail di FreeBSD .

FreeBSD
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Linux:differenza tra /dev/console , /dev/tty e /dev/tty0?

  3. Quanto sono portatili /dev/stdin, /dev/stdout e /dev/stderr?

  4. Quando usare /dev/random vs /dev/urandom?

  5. Come silenziare completamente un Cronjob in /dev/null/?

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

Linux:differenza tra /dev/console , /dev/tty e /dev/tty0

kernel:disabilitare /dev/kmem e /dev/mem

echo o print /dev/stdin /dev/stdout /dev/stderr

Perché sono necessari < o > per usare /dev/tcp

Crea un dispositivo a blocchi virtuale che scrive su /dev/null