ssh na jaula chrooted não funciona porque a operação / dev / null não é suportada

4

Estou tentando configurar uma cadeia ssh-chroot em um dos meus servidores NAS. O sistema é executado no NAS4Free (que é baseado no nanobsd). O usuário deve ser capaz de executar apenas um comando, que é um script bash que abre o ssh para outro servidor e executa um comando lá.

Para configurar o chroot eu tenho isso na minha configuração sshd.

Match User op
    ChrootDirectory %h
    X11Forwarding no
    AllowTcpForwarding no

O script tem esta linha:

ssh -i /.ssh/id_rsa backup@$externalresource -t "/mnt/storage/backup/run_project.sh '$1' '$2'"

Eu posso fazer login no chroot usando ssh, mas quando executo o script, ele dá o seguinte erro ao tentar executar o comando ssh nele.

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

O mesmo acontece quando tento executar o ssh plain dentro do chroot

[I have no name!@nas /]$ ssh
Couldn't open /dev/null: Operation not supported

/ dev / null parece assim:

$ 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

Sem as 666 permissões, obtenho um erro de permissão negada / dev / null.

Eu criei dev / null usando

mknod dev/null c 2 2

Eu tentei encontrar uma explicação por que a operação de devolução / dev / null não é permitida, mas não encontrei nada que ajude.

Alguém poderia explicar como corrigir isso?

    
por user6329530 30.11.2016 / 17:08

1 resposta

6

I created dev/null using

mknod dev/null c 2 2

Seu conhecimento está desatualizado. As coisas não funcionam mais assim, agora que o NAS4Free é baseado nos gostos do FreeBSD 10 e 11. (Esses também não são os números de dispositivos para o dispositivo nulo.) Leia o manual mknod . Você ainda pode executar mknod para criar nós de dispositivos em um disco ou sistema de arquivos RAM real, mas os nós criados serão praticamente totalmente inúteis. Como você pode ver, o kernel não permite abrir dispositivos com eles.

É por isso que nas prisões - prisões reais, aquelas que vêm com o sistema operacional, não simples ambientes chroot que podem ser configurados com sshd_config - obtém-se os arquivos do dispositivo montando uma instância devfs dentro da cadeia . É também por isso que os jails têm knobs para controlar se devfs pode ser montado e qual o conjunto de regras do devfs que se aplica a ele.

Se você quiser um /dev/null em seu ambiente raiz alterado, terá que usar mount_nullfs para tornar a árvore /dev real visível na raiz alterada. Se você usar uma cadeia de boa fé, basta configurá-lo para montar um devfs em /dev .

Se você usar uma prisão genuína, é claro que você configura para executar sshd dentro da cadeia , escutando o endereço IP da cadeia e habilitado como um serviço jail's /etc/rc.conf da maneira normal.

Leitura adicional

por 30.11.2016 / 18:18