Como fazer: Chroot Dosemu (Clipper no Linux)

hra

Este tutorial explica como fechar uma instalação do DOSEMU em um "userspace" de forma que o usuário não possa acessar o restante do sistema de arquivos do Linux. Estou focado em uma instalação do DOSEMU executando em
um servidor para acesso remoto por ssh, o objetivo primário do ambiente
é fornecer um servidor de aplicações para os antigos programas CLIPPER,
ainda muito comuns no Brasil.

[ Hits: 72.878 ]

Por: Hamilton R. Amorim em 09/10/2003 | Blog: http://www.algorista.tk


Criando a raíz



A primeira coisa a fazer é criar uma raíz de diretórios e arquivos, que no final será a raíz visível para o usuário "teste". Abaixo do diretório /home/teste crie as seguintes pastas:

/bin
/dev
/etc
/home
/home/teste
/home/teste/dosemu
(aqui estará o dosemu)
/lib
/proc
/sbin
/tmp
/usr
/usr/sbin
(link simbólico para sbin)
/usr/bin (link simbólico para bin)
/usr/share

Esses links simbólicos apontam para nossa raíz "falsa", cuidado para não apontar nada para o sistema de arquivo "oficial", esse vai desaparecer quando terminarmos essa configuração.

Agora vamos copiar alguns arquivos mínimos para o DOSEMU funcionar e para termos alguma funcionalidade de terminal. Copie os seguintes arquivos de suas origens reais para suas respectivas pastas dentro do /home/teste:

/bin
     basename
     bash
     cat
     clear
     cp
     du
     grep
     id
     less
     ln
     ls
     mv
     rm
     sh -> bash (link simbólico para sh)
     su         (não copie esse ainda)

/dev
     null       (crie um link real)

/etc
     bashrc
     group      (não copie ainda)
     passwd     (não copie ainda)

/lib
    ld-2.2.5.so
    ld-linux.so.2 -> ld-2.2.5.so (link simbólico)
    libc-2.2.5.so
    libcrypt.so.1
    libc.so.6 -> libc-2.2.5.so (link simbólico)
    libdl-2.2.5.so
    libdl.so.2 -> libdl-2.2.5.so (link simbólico)
    libncurses.so.5
    libnsl.so.1
    libnss_compat.so.2
    libnss_files.so.2
    libpam_misc.so.0
    libpam.so.0
    libtermcap.so.2 -> libtermcap.so.2.0.8 (link simbólico)
    libtermcap.so.2.0.8

/proc
    cpuinfo (copie)

/usr/share
    terminfo/ (pasta, copie inteira)
Você pode me perguntar o como eu sei que são esses arquivos e eu te respondo, os programas são o mínimo que precisamos para ter um terminal decente, mais algumas extensões de shell que o DOSEMU precisa (id, basename, etc). As libs eu consegui com o comando ldd e uma boa dose de "tentativas e erros".

Alguns arquivos merecem um cuidado especial, tentarei explicar cada um deles:
  • Links simbólicos: você sabe o que é, não sabe ? espero que sim.
  • /bin/su: este arquivo é um problema, o su que vem com o RedHat73 está linkado dinamicamente com um zilhão de bibliotecas, o que torna muito difícil utilizá-lo aqui. A sugestão é baixar o pacote sh-utils em ftp://alpha.gnu.org/gnu/coreutils/sh-utils-2.0.15.tar.gz e compilar, pegue o arquivo src/su, este funciona perfeito. Se tiver algum problema em compilar pegue este "su" precompilado: http://www.algorista.hpg.ig.com.br/como_fazer/su.gz.
  • /dev/null: crie um link real que tudo funciona bem.
  • /home/teste/dosemu: aqui você copia sua instalação do dosemu que está plenamente funcional. Ela funciona né? Espero que sim.
  • /etc/group: crie um arquivo só com as duas linhas do root e do seu usuário, no meu caso é o usuário "teste". Meu arquivo ficou assim:
    root:x:0:root teste:x:514:


  • /etc/passwd: o mesmo caso, crie um arquivo só com as duas linhas que interessam:
    root:x:0:0:root:/root:/bin/bash teste:x:514:514::/home/teste:/bin/bash


  • /usr/share/terminfo: nesta pasta tem as informações para seu terminal remoto, necessário para o comando less. Se não precisa do less, não precisa disso.
Certifique-se de que não tem nada bizarro nas permissões dos arquivos e pastas. Aqui acaba a configuração da arvore falsa, só restando as modificações no dosemu e as configurações do Linux.

Página anterior     Próxima página

Páginas do artigo
   1. Considerações iniciais
   2. Introdução
   3. Requisitos
   4. Criando a raíz
   5. Hackeando o DOSEMU
   6. Configurando o Linux
   7. Considerações finais
Outros artigos deste autor

Como fazer: chroot SSH (SSH mais seguro)

Onde estão os programadores da era DOS?

Copiando programas dos LiveCDs (Kurumin) para seu Debian sem usar a internet

A miséria social do Brasil e o software proprietário

cal2svg - brincando com shell script e arquivos vetoriais SVG

Leitura recomendada

Instalação e configuração do Bandwidthd no Conectiva Linux 9

O gerenciador de boot GRUB

Compilando e instalando o Wine, WineTools e Internet Explorer(s) no Linux

Alta disponibilidade de link - rápido e simples

Impressoras/scanners e multifuncionais Insigne GNU/Linux

  
Comentários
[1] Comentário enviado por rorengel em 20/10/2003 - 17:44h

Ola amigo!!

Gostaria de saber se o usuarios clientes (linux) poderao acessar o servidor (dosemu) de que forma e como?

Ok
Rafael Orengel

[2] Comentário enviado por hra em 21/10/2003 - 09:13h

Olá Rafael,
não compreendi a pergunta, mas no caso basta conectar por ssh e digitar "./dosemu" ou "cd dosemu; ./dosemu". Eu coloquei esses comandos no ~/.bash_profile de forma que basta conectar para entrar no dosemu

[3] Comentário enviado por rorengel em 22/10/2003 - 15:30h

mas nesse caso

[4] Comentário enviado por rorengel em 22/10/2003 - 15:31h

Ola, desculpa

nesse caso precisa instalar o dosemu no cliente ou nao?

[5] Comentário enviado por GnU-Linux em 27/12/2003 - 17:11h

Olá.
Muito bom mesmo.

[6] Comentário enviado por gustavo_marcon em 25/01/2004 - 14:36h

Olá, preciso instalar um servidor linux em uma empresa e esse servidor precisa abrir uma aplicação DOS.. Como faço isso?
Eu não consegui entender como funciona o DOSEmu. Quer dizer que além de instalar o DosEmu tenho que instalar uma versão do MS-DOS também?
E se eu não tiver nenhuma versão do DOS?


Preciso muito dessas respostas. Obrigado!!

[7] Comentário enviado por hra em 26/01/2004 - 14:15h

gustavo, você precisa instalar o DOSEMU e uma versão de DOS, existem opções free, como o FreeDos e o DRDOS.
Você precisa localizar o DOSEMU-HOWTO e estudá-lo, é um assunto muito complexo.
HRA

[8] Comentário enviado por grossfuss em 05/02/2005 - 00:48h

acho que vc realmente entende do que fala, mas este conhecimento tende a ficar para vc, pois ninguém consegue repetir o que vc fez, somente guiando-se pelo seu texto, que como é incompreensível, é inútil

[9] Comentário enviado por hra em 09/02/2005 - 12:58h

concordo com vc quando diz que ninguem consegue fazer isso baseando-se apenas em meu texto, isso é verdade, mas vc deve entender que tudo na vida é assim. Pra entender alguma coisa vc precisa pesquisar, estudar, dedicar tempo e usar o cérebro. Não é lendo o texto que vai conseguir fazer isso, é com esforço e dedicação, e muita tentativa e erro. O texto é apenas uma ajuda na pesquisa.
Erra medonhamente quando tenta falar por todas as pessoas, pois recebo diariamente emails de gente perguntando sobre o tema e reportando sucessos e falhas em diferentes distros.

Teria sido bem mais educado da sua parte, e bem mais proveitoso pra comunidade linux se vc tivesse contribuido com uma pergunta do que com essa agressão desnecessária.

Para uns uma pedra no caminho é motivo pra reclamar, pra outros pode virar uma bela escultura. Repense sua postura antes de chamar de inutil o trabalho de outros. Preencher as lacunas do texto teria sido bem menos inútil que seu comentário.

[10] Comentário enviado por anetorj em 05/11/2005 - 18:06h

Caro Hamilton,

Instalei o DOSEMU e os meus programas clipper estao funcionando, estou somente com um problema. No meu sistema clipper eu uso caracteres especiais, para fazer as telas. No DOSEMU sai varios caracteres estranhos no lugar desses caracteres especiais, onde eu configuro no dosemu.conf ou outro lugar qualquer no Linux, para o DOSEMU usar os mesmo caracteres de quando estou em um maquina dos.

Desde ja agradeco.

[11] Comentário enviado por newtonasc em 01/11/2006 - 16:00h

Olá meu amigo!!! Excelente tutorial!!! Só preciso de uma ajudinha, qdo tento instalar o MS-DOS 6.22 ele retorna dois tipos de erro:
O primeiro diz que não foi encontrado disco rigido! Entendo que seja por estar tentando instala-lo em uma partição do Suse. Tentei instalar pelo DOSEMU, entrando no drive "A" e executando o SETUP.EXE.
O segundo problema e que as vezes quando tento instalar, ele pede para colocar o disquete de instalação no drive e reiniciar o computador!!
Trabalho com vários programas em clipper, e preciso instalar o MS-DOS pq qdo executo os programas pelo DOSEMU algumas telas ficam desfiguradas!!!
Grato pela atenção:
Newton

[12] Comentário enviado por aprendiz_ce em 29/11/2006 - 21:48h

Estou necessitando executar um "batch" diferente para cada usuário que executar o DOSEMU. Tem como ao carregar o DOSEMU, fazer um CHECK através de alguma variável do sistema e disparar a execução do respectivo "batch" para o usuário.

Obrigado, parabéns pelo artigo e aguardo retorno.

[13] Comentário enviado por chenmical em 03/09/2007 - 11:24h


Instalei o DOSEMU e os meus programas clipper estao funcionando, estou somente com um problema. No meu sistema clipper eu uso caracteres especiais, para fazer as telas. No DOSEMU sai varios caracteres estranhos no lugar desses caracteres especiais, onde eu configuro no dosemu.conf ou outro lugar qualquer no Linux, para o DOSEMU usar os mesmo caracteres de quando estou em um maquina dos.

Desde ja agradeco.

[14] Comentário enviado por aprendiz_ce em 03/09/2007 - 14:57h

chenmical,


Acrescente ou altere isso $_term_char_set = "ibm" no seu dosemu.conf.


Boa sorte!

[15] Comentário enviado por chenmical em 04/09/2007 - 10:17h

Mardonio ,

Eu ja adicionei porem alguns caracteres ainda ficam errado por exemplo: º , ª , ç , ã,...
ou seja resolvei uma parte porem algumas ficaram erradas ainda se vc poder me ajudar agradeço

[16] Comentário enviado por aprendiz_ce em 04/09/2007 - 10:33h

chenmical,

Qual a distro que você usa? O DOSEMU que você está utilizando é atual? Pergunto pois tive alguns PROBLEMAS com isso também. No meu caso estou utilizando o Debian Etch e no meu dosemu.conf está assim:

$_term_char_set = ""

Funciona super bem, mas se eu acessar a referida máquina de uma estação Windows com o putty, fica tudo "maluco".

Boa sorte e qualquer posta aí.

[17] Comentário enviado por chenmical em 04/09/2007 - 12:27h

Aqui eu estou com o Ubuntu 7 instalado, o dosemu é atual e o meu dosemu.conf esta igual ao seu eu coloco "ibm" ele melhora porem continua maluco

Obrigado e se voce descobrir algo me fala


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts