GNU/Linux >> Znalost Linux >  >> FreeBSD

Freebsd – Ssh v chrootovaném vězení nefunguje, protože operace /dev/null není podporována?

Snažím se nastavit vězení ssh-chroot na jednom z mých serverů NAS. Systém běží na NAS4Free (který je založen na nanobsd). Uživatel by měl mít možnost spustit pouze jeden příkaz, což je bash-script, který otevře ssh na jiný server a tam provede jeden příkaz.

Pro nastavení chrootu to mám v konfiguraci sshd.

Match User op
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

Skript obsahuje tento řádek:

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

Mohu se přihlásit k tomuto chrootu pomocí ssh, ale když spustím skript, zobrazí se při pokusu o spuštění příkazu ssh v něm následující chyba.

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

Totéž se stane, když se pokusím spustit ssh plain v chroot

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

/dev/null vypadá takto:

$ 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

Bez oprávnění 666 dostávám samozřejmě chybu /dev/null povolení odepřeno.

Vytvořil jsem dev/null pomocí

mknod dev/null c 2 2

Snažil jsem se najít vysvětlení, proč /dev/null vrací operace nepovolená, ale nenašel jsem nic, co by pomohlo.

Mohl by mi prosím někdo vysvětlit, jak to opravit?

Přijatá odpověď:

Vytvořil jsem dev/null pomocí

mknod dev/null c 2 2

Vaše znalosti jsou zastaralé. Věci už tímto způsobem nefungují, když je NAS4Free založeno na FreeBSD 10 a 11. (Ani to nejsou čísla zařízení pro nulové zařízení.) Přečtěte si mknod manuál. Stále můžete spustit mknod vytvořit uzly zařízení na skutečném disku nebo souborovém systému RAM, ale uzly, které vytvoříte, budou v podstatě úplně k ničemu. Jak můžete vidět, jádro vám nedovolí otevřít zařízení pomocí nich.

To je důvod, proč ve vězeních — skutečných vězeních, těch, která přicházejí s operačním systémem, ne v jednoduchých chrootovaných prostředích, která lze nastavit pomocí sshd_config — soubory zařízení lze získat připojením devfs instance ve vězení. To je také důvod, proč mají vězení knoflíky pro ovládání devfs lze připojit a jaká sada pravidel devfs se na něj vztahuje.

Pokud chcete /dev/null ve změněném kořenovém prostředí budete muset použít mount_nullfs vytvořit skutečný /dev strom viditelný ve změněném kořenu. Pokud používáte bona fide jail, nakonfigurujte jej tak, aby připojoval devfs na /dev .

Pokud používáte bona fide vězení, samozřejmě ho nastavíte tak, aby spouštělo sshd uvnitř vězení , která naslouchá na IP adrese věznice a je povolena jako služba v vězení /etc/rc.conf normálním způsobem.

Související:rozdíl mezi [[ $a ==z* ]] a [ $a ==z* ]?

Další čtení

  • mknod . Manuál FreeBSD 11.0.
  • devfs . Manuál FreeBSD 11.0.
  • devfs.rules . Manuál FreeBSD 11.0.
  • Dokumentace:Jak na to:Vězení. NAS4Free wiki.
  • Matteo Riondato. „Vězení“. Příručka FreeBSD .
  • Scott Robb (2015-03-04). Vězení FreeBSD .

FreeBSD
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Kdy použít /dev/random vs /dev/urandom?

  3. Jak úplně umlčet Cronjob do /dev/null/?

  1. Jak kódovat base64 /dev/random nebo /dev/urandom?

  2. Proč nefunguje find -exec mv {} ./target/ +?

  3. Kdy mám použít /dev/shm/ a kdy /tmp/?

  1. DD z /dev/zero do /dev/null...co se vlastně stane

  2. Linux:Rozdíl mezi /dev/console , /dev/tty a /dev/tty0

  3. jádro:deaktivace /dev/kmem a /dev/mem