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:
/bin/bash
para a cadeia e deixar o usuário usar isso em vez do próprio bin/chroot-shell
e a entrada sudo? /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 ^^