unix chroot jail shell (com ou sem sudo?)

1

no momento estou criando uma cadeia chroot. Por isso, eu li alguns artigos e tudo parece ser claro, exceto por uma coisa: o shell chroot jail

Em uma fonte, eles criaram a seguinte configuração (é claro que a configuração é muito maior, mas essa é a parte em que tenho uma pergunta):

A cadeia está configurada com alguns programas e há libs.
A pasta chroot jail é /jail/ .
Agora queremos criar o prisão dentro da nossa nova cadeia.
Portanto, abrimos o arquivo /etc/sudoers e escrevemos a seguinte linha:

prison ALL=NOPASSWD: /usr/bin/chroot, /bin/su - prison  

nós então criamos o arquivo /bin/chroot-shell dentro da nossa cadeia como o shell que o usuário deve usar quando se conectar com o ssh. O conteúdo é:

#!/bin/bash
/usr/bin/sudo /usr/bin/chroot /jail/ /bin/su - $USER "@"  

A parte interessante é que nem /usr/bin/sudo nem /bin/chroot são copiados para o /jail/ .
E o linke esperava: quando o usuário tenta logar com o sftp (WinSCP por exemplo) ele funciona. Mas quando ele tenta usar um terminal no SSH (com Putty, por exemplo), então ele falha com a seguinte linha:

sudo: unknown uid 1001: who are you?

Então, minhas perguntas são:

  1. Essa maneira de configurar uma cadeia chroot não é insegura? colocar uma pessoa presa no arquivo de configuração do sudo não parece significativo para mim. Então, qual é a ideia por trás disso? Por que não apenas copiar /bin/bash para a cadeia e deixar o usuário usar isso em vez do próprio bin/chroot-shell e a entrada sudo?
  2. Se, de alguma forma, isso for mais seguro do que usar /bin/bash , como posso fazer isso funcionar? Acho que o primeiro passo seria copiar /usr/bin/sudo e /usr/bin/chroot para o diretório de prisão, certo? mas o que vem depois? sudo não conhece o usuário ...

Obrigado por toda sua ajuda e desculpe pelo meu inglês ruim.
saudações e
Chriss

SOLUÇÃO
Até agora eu não tenho idéia, porque o autor do artigo que eu li queria criar um próprio shell e dar ao usuário na cadeia direitos sudo para alguns comandos. Mas o artigo foi de 2008, portanto um pouco desatualizado.
Eu agora coloco o /bin/bash Shell como o shell padrão para usuários presos (com o comando chsh ). Também tive que ter certeza de que as libs /lib/libdl.so.2 /lib/libc.so.6 /lib/ld-linux.so.2 (no meu caso, ambas de 32 bits e 64 bits) são todas três na cadeia, então um usuário preso teria um nome de usuário adequado. Porque sem estes não há nenhuma maneira adequada para obter o nome de usuário fora do id do usuário dentro do arquivo paswd .
Depois disso, os usuários poderiam abrir uma conexão ssh adequada com um shell funcional e a linha de comando saberia quem eles são (o nome do prefixo no início da linha e também o comando whoami ). É isso aí, agora tudo está funcionando bem ^^

    
por christopher2007 18.11.2015 / 12:23

0 respostas