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.
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 .