Integrando Bind com DHCPD
Integrando Bind com DHCPD
Colaboração: Smailli Hemori Moraes
Configuração do DHCP
- Obtenha o conteudo do parametro secret do arquivo /etc/rndc.key
- Edite o arquivo de configuracao do DHCPD /etc/dhcpd.conf como segue
ddns-update-style interim; default-lease-time 6000; max-lease-time 72000; authoritative; log-facility local7; key "rndckey" { algorithm hmac-md5; secret "INSIRA O CONTEUDO DO PARAMETRO SECRET DO RNDC.KEY"; }; zone lab.local { primary 192.168.1.103; key rndckey; } zone 1.168.192.in-addr.arpa. { primary 192.168.1.103; key rndckey; } subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.220 192.168.1.225; option routers 192.168.1.253; option subnet-mask 255.255.255.0; option domain-name "lab.local"; option domain-name-servers 192.168.1.103; one-lease-per-client on; option netbios-name-servers 192.168.1.103; # Configuração de IP fixo baseado no MAC host NOME_DO_EQUIPAMENTO { hardware ethernet 00:60:B0:43:B1:5A; fixed-address 192.168.1.223; } } - Reinicie o servico de dhcp
# service dhcpd restart
Configuração do DNS
- Edite o arquivo de configuracao do DNS /etc/named.conf como segue
zone "lab.local" { type master; notify no; file "lab.hosts"; allow-update < key rndckey; >; }; zone "1.168.192.in-addr.arpa"{ type master; notify no; file "reverso.hosts"; allow-update < key rndckey; >; };
Criação das zonas
- Crie o arquivo /var/named/chroot/var/named/lab.hosts com o seguinte conteúdo:
$TTL 86400 ; 1 day lab.local IN SOA srv1-lx.lab.local. root.srv1-lx.lab.local. ( 2006010600 ; 28800 ; 14400 ; 3600000 ; 86400 ; ) NS srv1-lx.lab.local. srv1-lx A 192.168.1.103 ftp CNAME srv1-lx
- Crie o arquivo /var/named/chroot/var/named/reverso.hosts com o seguinte conteúdo:
$TTL 86400 @ IN SOA srv1-lx.lab.local. root.srv1-lx.lab.local. ( 2006010600 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400 ) ; Minimum IN NS srv1-lx.lab.local. 223 IN PTR srv1-lx.lab.local.
- Reinicie o servico de DNS
# service named restart
Fonte: http://www.dicas-l.com.br/print/20061130.html
Segurança do Sistema de Arquivos
Segurança do Sistema de Arquivos
Colaboração: Rubens Queiroz de Almeida
Verificar falhas de segurança no sistema de arquivos é outra tarefa importante do administrador. Primeiramente devem ser identificados os arquivos que podem ser alterados por usuários não autorizados, arquivos que podem involuntariamente dar permissões excessivas a usuários e arquivos que possam fornecer acesso a invasores. É importante também monitorar modificações no sistema de arquivos e possuir mecanismos que permitam a volta do sistema ao estado original.
O comando find é um comando de propósito geral para pesquisar o sistema de arquivos. O comando
# find / -type f -a ( -perm 0400 -o -perm 0200 ) -print
localiza todos os arquivos do sistema com os bits setuid ou setgid ligados. A saída deste comando deve ser analisada para determinar se não existe algum arquivo suspeito na lista.
O comando
# find / -perm -2 -print
identifica todos os arquivos com permissão de escrita universal.
O comando
# find / -nouser -o nogroup -print
identifica arquivos que não pertencem a nenhum usuário ou a nenhum grupo. Imediatamente após a instalação de um sistema, deve-se gerar um arquivo que liste a configuração inicial dos arquivos do sistema:
# ls -aslgR /bin /etc /usr >> MasterChecklist
Este arquivo contém uma lista completa de todos os arquivos nestes diretórios. As linhas referentes a arquivos que mudem freqüentemente devem ser removidas do arquivo. O masterchecklist deve ser guardado em um local seguro para evitar adulterações. Para pesquisar alterações no sistema de arquivos, execute o comando acima novamente e compare-o com o arquivo mestre:
# diff MasterChecklist Currentlist
Outro aspecto muito importante é a realização de backups freqüentes do sistema de arquivos. Backups não apenas protegem contra falhas de hardware mas também contra deleções acidentais.
Acrônimos ;-)
PERL - Pathetically Eclectic Rubbish Lister PCMCIA - People Can't Memorize Computer Industry Acronyms ISDN - It Still Does Nothing APPLE - Arrogance Produces Profit Losing Entity SCSI - System Can't See It DOS - Defunct Operating System BASIC - Bill's Attempt to Seize Industry Control IBM - I Blame Microsoft DEC - Do Expect Cuts CD-ROM - Comsumer Device, Rendered Obsolete in Months OS/2 - Obsolete Soon, Too WWW - World Wide Wait MACINTOSH - Most Applications Crash; If Not, The Operating System Hangs
Fonte: http://www.dicas-l.com.br/print/19970508.html
Arquivo de dicas dentro do Windows 95 e Windows 98.
Arquivo de dicas dentro do Windows 95 e Windows 98.
Colaboração: <enderson (a) fiat com br> (Enderson Fabian de Carvalho)
Para os usuários do Windows 95 e Windows 98 existe um arquivo de dicas que serão de muita valia uma vez que ajudam e melhoram o desempenho do seu computador.
Este documento contém informações complementares ou as mais recentes informações para suplementar a documentação do Windows 95 ou Windows 98. Vale lembrar que cada arquivo de dicas está associado a versão instalada.
Para acessar o arquivo de dicas, basta ir em "Iniciar", "Executar", e digitar tips.txt).
Fonte: http://www.dicas-l.com.br/print/19990527.html
Uso apt/apt-get no Red Hat
Uso apt/apt-get no Red Hat
Colaboração: Cleymone Ribeiro dos Santos <<cleymone (a) las ic unicamp br>>
É provável que a grande maioria de usuários Red Hat já tenha tido problemas de dependências, ao instalar/atualizar/remover um novo pacote em sua distribuição Red Hat. Existe um gerenciador de pacotes, que foi portado das ferramentas apt do Debian para distribuições baseadas em RPM. APT é um sistema gerenciador de pacotes. apt-get é uma ferramenta de linha de comando para manipular pacotes, permitindo instalação, atualização e remoção dos mesmos. As dependências são automaticamente resolvidas, de modo que ao instalar um pacote que precisa de outros, ele baixará todos os pacotes necessários e os instalará.
Passos:
- baixar o pacote apt do site http://apt.freshrpms.net/
- instalá-lo na sua máquina:
rpm -ivh apt-versão-correta-para-minha-distribuição.rpm
- se houver proxy em sua rede, edite o arquivo /etc/apt/apt.conf. Exemplo para http e ftp:
Acquire { Retries "0"; http { proxy "http://LOCAL-PROXY:PORT"; }; ftp { proxy "ftp://LOCAL-PROXY:PORT"; passive "true"; proxy::passive "true"; }; }Substitua os campos LOCAL-PROXY e PORT para valores de seu proxy. - editar o arquivo /etc/apt/sources.list, tire os comentários das linhas correspondentes a sua versão do RedHat.
Pode também adicionar novas linhas relevantes para sua distribuição. O formato de cada entrada neste arquivo é:
tipo uri distribuição componente1 componente2 componente3
Exemplo:
rpm ftp://apt-rpm.tuxfamily.org/apt redhat/7.3/en/i386 os updates extra
rpm-sr ftp://apt-rpm.tuxfamily.org/apt redhat/7.3/en/i386 os updates extra
Esta informação é obtida nos sites que são "APT enabled", ou seja, oferecem pacotes em repositórios apt. Importante: Red Hat não disponibiliza seus pacotes através do utilitário apt.
Procure no http://freshrpms.net/ por outros sites, que ofereçam pacotes em repositórios apt.
- executar o comando "apt-get update"
obs.: em algumas versões precisa executar 2 vezes este comando, pois tem um bug
Este comando serve para atualizar a base de dados particular do apt, sobre quais pacotes estão instalados, quais não estão e quais estão disponíveis para instalação. O programa apt-get usa esta base, para encontrar como instalar pacotes pedidos pelo usuário e pacotes adicionais, que são necessários para o pacote pedido funcionar apropriadamente. Todas as vezes que o arquivo /etc/apt/sources.list for modificado, execute este comando para o APT obter a lista de pacotes do "source" que vc especificou. Este comando criará sua base no diretório /var/state/apt/lists/.
- executar "apt-get upgrade" para atualizar todos os pacotes que são automaticamente atualizáveis
- executar "apt-get install packagename" para instalar/atualizar os pacotes específicos.
- executar "apt-get remove packagename" para remover pacotes específicos.
Porém, isto ainda pode não ser suficiente para vc conseguir instalar o pacote desejado, pois ele pode não estar disponível nos "mirrors apt enabled". Boa sorte!!
Fonte: http://www.dicas-l.com.br/print/20030507.html
O comando csplit
O comando csplit
Colaboração: Rubens Queiroz de Almeida
Outro comando também utilizado para se dividir um arquivo em vários outros é o comando csplit (Content Split).
Ao contrário do comando split, abordado na dica anterior, o comando csplit permite que se especifique uma string que irá indicar o delimitador de cada um dos novos arquivos.
Tomemos como exemplo o arquivo abaixo, chamado arq1:
arq1
Capítulo 1
Era uma vez, era uma vez três porquinhos, Palhaço, Palito e Pedrito.
.
Capítulo 2 E o Lobo Mau, ... Capítulo 3 E o caçador, matou o Lobo Mau, casou-se com a Chapeuzinho Vermelho, e viveram felizes para sempre.
The End
@@@ Fim arq1
O autor, colocou todos os capítulos do livro em apenas um arquivo e depois se arrependeu. Agora ele quer criar vários arquivos contendo um capítulo cada. O comando abaixo pode resolver este problema:
% csplit -f Capit arq1 "/Capitulo/" <2> % ls -l total 4 -rw-r--r-- 1 queiroz supsof 0 Jun 17 18:31 Capit00 -rw-r--r-- 1 queiroz supsof 85 Jun 17 18:31 Capit01 -rw-r--r-- 1 queiroz supsof 29 Jun 17 18:31 Capit02 -rw-r--r-- 1 queiroz supsof 136 Jun 17 18:31 Capit03 -rw-r--r-- 1 queiroz supsof 250 Jun 17 18:11 arq1
Traduzindo, o comando csplit irá criar vários arquivos iniciados em "Capit", até um máximo de 3 arquivos (parâmetro <2>, computa-se o número entre colchetes + 1). Este valor indica o número de vezes que o comando será repetido. No nosso exemplo, foi especificado exatamente o número de capítulos contidos no arquivo original (3). Caso não conheçamos este valor, podemos especificar um número que sabemos maior que o número de arquivos existentes. O comando csplit irá reclamar, e apagar todos os arquivos já criados. Para evitarmos que isto aconteça, basta especificar a flag "-k", ou seja, a reclamação continuará sendo feita, mas o trabalho já feito não será removido. O que não pode é se especificar um número inferior ao desejado. Neste caso, o comando ficaria como:
% csplit -k -f Capit arq1 "/Capitulo/" <9> 0 85 29 csplit: <9> - out of range 136
A quebra será feita, tomando-se por base o nosso exemplo, antes da string Capitulo, exclusive. Devido a isto, o primeiro arquivo, Capit00, está vazio. Os arquivos criados, à exceção do arquivo Capit00 que está vazio, contêm:
Capit01
Capitulo 1 Era uma vez, era uma vez três porquinhos, Palhaço, Palito e Pedrito. ...
Capit02
Capitulo 2 E o Lobo Mau, ...
Capit03
Capitulo 3 E o caçador, matou o Lobo Mau, casou-se com a Chapeuzinho Vermelho, e viveram felizes para sempre. The End
O comando csplit todavia, é um pouco complexo. Existe um programa de domínio público chamado slice, que é muito mais flexível e fácil de usar que o comando csplit. O programa slice (e onde encontrá-lo), será abordado em breve nesta lista.
Dica Humorística :-)
BASTARD OPERATOR FROM HELL #13
I'm busy with my new shell replacement login script, and it's almost foolproof. Let's just say it pops up with:
"Yes means No and No means Yes. Delete all files [Y]? "
upon login. I'm really starting to worry about the number of account breakins we've been having recently.... The manager isn't though. His main concern appears to be the number of computer-related fatalities on campus. Funny world, isn't it?
I flip the excuse card. "DOPPLER EFFECT" Sounds implausible enough that it's plausable - with a little work of course.
The phone, the bane of my existance, rings.
"Hello, Computer Room" I say, being helpful
"Is this the Technicians?" The caller asks.
Amazing the number of deaf people that use these things. What the hell, I'm bored..
"Yes it is" I lie (Nixon could've done with me)
"I've got a problem with my floppy drive, it doesn't seem to be reading all the time"
"Hmmm. How old is the drive?"
"About a year.."
"And it sometimes fails and sometimes works, but it's starting to fail more and more?"
"YES!"
"Yeah, it's the Doppler effect of magnetism.."
"I thought that only happened with light and sound?"
Bullshit mode ON<
"Yes, well it's been found that on a spinning surface, like a disk, the particle's magnetic alignment changes, especially when the head is stationary and slightly magnetised in respect to it."
"Duh. Oh"
"So, what you need to do is to demagnetise the head. Have you got a disk head demagnetising loop?"
Hmm.... No?"
"OK, we'll have to do it the hard way. Have you got your original diskettes for your software?"
"Yeah."
"Right, chuck them in the drive, one by one, and format them."
"WHAT?!"
"Don't worry, it won't work - remember the drive is failing. All that happens is that the virgin magnetic field of the disks realigns the magnetic field of the head, because they weren't written by a doppler effected drive."
"Oh, yeah!"
"So, when it gives you a write error and asks if you want to continue, you say yes. Do it with all your original diskettes, then, to complete the demagnetising process, run a head cleaning diskette through the drive as well, which will pick up the stray magenetic particles clinging to the head."
"Oh. Ok. Thanks"
"Don't thank me - IT'S MY JOB"
I put the phone down, it rings again. It's the big boss.
"Simon, could you come to my office please?"
ALERT!<
Quick as I can, I press the panic button on our LAN-Analyser, or to be more precise, the "Generate 90% random traffic" button
"Sure, would you like me to come now, or..
The other phone rings. I chuck it on hands free
"Hello, Computer Room, Simon Here, How can I help?"
"THE NETWORK IS DOWN, ALL OUR PCS HAVE SHIT THEMSELVES!" the voice on hands -free screams into the mouthpeice of the other phone
"I see" I say calmly "Yes, our Monitor shows it up, it looks to be a bad segment of thinwire - please hold the line while I unplug it"
I press the "I just got a raise" button (AKA "Stop Traffic Generation") on the Lan Analyser, and almost immediately the user shouts back "Excellent, it's working now, thanks"
"That's ok, don't mention it. Have a nice day"
The big-boss has been listening to all this, so I reckon that the trip to his office won't be so bad after all. I tell him I'll be right down as soon as I secure the net and hang up. On the way down, I invent a new buzzword which always keep management happy. Complete Transient Lockout. Sounds much better than pulling the plug. Like Master-Reset sounds better than off-switch.
I get to his office and the staffing officer is there too. Uh-oh.
"Simon - How would you like to be our System Manager?"
?!!!
"Well... I don't know, I like that hands on.."
"Extra 10 grand a year, Varisty Car.."
"Monaro?"
"Ok"
"Sold!"
....And so ends the saga, as it should have at #10.
<spt (a) grace waikato ac nz>
Fonte: http://www.dicas-l.com.br/print/19970619.html
Semana 4Linux: A Importância da Segurança na Kernel Space
Semana 4Linux - A Importância da Segurança na Kernel Space
Colaboração: Tiago Luiz Maruyama
Em um passado não muito distante, um servidor configurado corretamente tinha seus riscos de ser invadido, mas esse risco era fisicamente dimencionado até os limites da sua rede local. Mas nos dias de hoje isso não é mais possível, por causa da chegada da Internet.
O grande crescimento de computadores interconectados, o crescimento de serviços virtuais e a quantidade de softwares com finalidades ilícitas, trazem como consequência a preocupação de se defender dessas pessoas mal intencionadas que posso utilizar esses softwares que tentam de várias formas invadir seu computador.
Existem vários aplicativos voltados a detectar a invasão do seu sistema, mas existem dois tipos de IDS, o que trabalha na user space (nível de usuário) ou kernel space (nível de kernel).
Podemos dizer que os IDS do tipo tripware que trabalha na camada de usuário podem ser mais vulneráveis, sendo assim burlados com mais facilidade, porque a maioria desses IDS tem arquivos de configuração, onde é informado , quais diretórios ou arquivos que precisam ter a proteção do IDS.
Caso a pessoa que efetuar a invasão não precisar fazer nenhuma alteração em arquivos, que estão relacionados no arquivo de configuração do IDS, somente fizer alterações em arquivos não configurados no IDS ou na camada de kernel ela possivelmente ela não será notada,tudo depende do contexto como o acesso arbitrário ocorreu.
Já com um sistema configurado com um IDS que esteja na camada de kernel, a dificuldade aumenta porque tudo o que a pessoa estiver tentando executar, gerará uma chamada no kernel(systemcall), assim como o IDS está na camada de kernel, todas as chamadas feitas geram mensagens de logs.
O registro das atividades dos usuários e serviços dos sistemas é, notoriamente, muito importante para os administradores e como foi citado o fato de todas as chamadas ao sistema que são negadas serem registradas, cria um cenário muito importante para auditorias futuras.
A importância de registro dos eventos do sistemas é tanta, que na norma NBR ISO/IEC 17799, o item 9.7.1 é todo dedicado ao "Registro (log) de eventos. Deixando claro que registro de eventos são também prioridade em uma política de segurança.
Em um sistema de log, oficialmente somente o root poderia alterar os arquivos de log, já com o Lids aplicado, nem o root teria o poder de alterar esses arquivos.
Lids é um path de segurança no nível de kernel, ou seja, é necessário a recompilação do kernel para a aplicação do path. Esse patch pode ser encontrado no site oficial do LIDS "www.lids.org" e o fonte do kernel em "www.kernel.org"
As ferramentas que acompanham o patch do Lids "lidsadm e lidsconf" são fáceis de utilizar e de configurar, elas estão no nível de usuário e servem para configurar as ACLs que serão determinadas pelo root, que, dependendo da configuração das ACLs do Lids, não será mais o dono do sistema, mas sim somente um usuário comum.
Como o Lids está no nivel de kernel, ele é acionado já no início do boot do sistema, portanto, já na inicialização o sistema se encontra protegido.
Com esse sistema de proteção no boot, ela nega permissão a muitos serviços padrões do sistema, como o dmesg, que gera um relatório de todo a inicialização do kernel. Isso é muito importante, por isso que se deve liberar o dmesg a gravar no diretório /var/log/.
# lidsconf -A BOOT -o /var/log/dmesg -j WRITE
Todos sabem que o arquivo /etc/shadow contém as senhas de todos os usuários do sistema e que as senhas estão criptografadas. Mesmo assim, existe um grande risco de alguém descobrí-las.
Por esse motivo, o LIDS trabalha da seguinte forma: ainda como usuário root é possivel determinar que nenhum binário vá conseguir o acesso a esse arquivo de senhas, colocando uma regra de DENY (proibido), por exemplo:
# lidsconf -A -o /etc/shadow -j DENY
Mas o mais importante é que para toda regra existem as exceções, podendo assim liberar qual binário poderá acessar o /etc/shadow como READONLY (somente leitura). Um exemplo claro, seria o binário /bin/login, que precisa ter permissão de leitura no arquivo para que possa efetuar o login normalmente.
# lidsconf -A -s /bin/login -o /etc/shadow -j READONLY
Mas caso se tente visualizar o conteúdo do arquivo com outros binários (por exemplo: vi, cat, more, etc..), o IDS acusará que esse arquivo não existe.
Da mesma que é possivel proibir o acesso as arquivos para todos os binários e liberar para alguns, também existe a possibilidade de ocultar processos, isso mesmo esconder os processos. Veja por exemplo como ocultar o processo do serviço ssh.
# ldisconf -A -s /usr/sbin/sshd -o CAP_HIDDEN -j GRANT
Quando tentar listar os processos da máquina, esse processo do serviço ssh não aparecerá, mas o serviço está ativo.
Diante desse poder de fogo sugiro como a melhor opção seria utilizar os dois sistemas de IDS, para que vc esteja protegido na camada de usuário e na camada de kernel. Assim dificultado em muito possiveis atividades arbritárias.
Mesmo hoje tendo recursos como LIDS e outros como o SELinux, GrSecurity, devemos pensar sempre de forma estratégica em tudo que for possivel e viável tanto na Kernel Space como na User Space, pois em algumas situações como uma estação de trabalho fica impraticavel o uso de um recurso com LIDS.
O Lids também é um mecanismo a mais para aumentar o nível de segurança de um sistema operacional buscando atender também as diretrizes inerentes ao nível C2 de segurança no que diz respeito o Sistema Operacional.
O nivel C2 recomendado pelo TCSEC " Trusted Computer System Evaluation Criteria", que é nível de segurança minimo requerido pelo governo Americano e utilizada em algumas instituições no Brasil.
Outro valor agregado nessa história é que somente conhecendo profudamente como o sistema funciona e as respectivas aplicações que estejam sendo executadas, conseguimos tirar proveito de um recurso como LIDS, pois do contrário simplesmente nada vai funcionar corretamente, ou seja, além de melhoramos a segurança do sistema e aprendemos muito a emoção é grande :-).
Novidade: O curso ** "Segurança em Servidores Linux usando a BS7799 " ** da 4linux mostra como fazer customizações no sistema Linux objetivando melhorar sua segurança, buscando correlacionar as ações no sistema com as recomendações da norma internacional BS7799. Esta norma é utilizada pois é focada em Segurança deInformação e apesar de tratar de vários ativos iremos focar apenas o ativo software, dessa forma o foco será nos itens da norma relacionados a Software.
Saiba mais no site http://www.4linux.com.br/treinamento/security_415.php ou ligue para (011) 2125-4747
Fonte: http://www.dicas-l.com.br/print/20050902.html
Comprimindo logs ao mesmo tempo em que são gerados
Comprimindo logs ao mesmo tempo em que são gerados
Colaboração: Herbert G. Fischer <<herbert (a) trama com br>>
De vez em quando passamos por situações em que o armazenamento é mais importante que a capacidade de processamento e que precisamos registrar muitas informações em um curto prazo de tempo, fazendo com que os arquivos de log fiquem monumentais.
Eu me deparei com algo assim, num script de sincronia entre servidores web que fiz no meu trabalho. O script precisa rodar de 1 em 1 minuto, gerando um log razoavelmente espaçoso.
Com as ferramentas padrões de compactação do Linux, gzip e bzip2, descobri que é possível algo tecnicamente estranho. Concatenar pedaços de texto compactado num mesmo arquivo e ao descompactar, obter o texto na forma correta.
Na prática:
% echo 123 | gzip -f >> teste.gz % echo 456 | gzip -f >> teste.gz % echo 789 | gzip -f >> teste.gz % echo 101 | gzip -f >> teste.gz % gunzip teste.gz % cat teste 123 456 789 101
Com bzip2 é a mesma coisa, exceto que os parâmetros são diferentes.
echo 123 | bzip2 -z >> teste.bz2 echo 456 | bzip2 -z >> teste.bz2 echo 789 | bzip2 -z >> teste.bz2 echo 101 | bzip2 -z >> teste.bz2 bunzip2 teste.bz2
Bom... diante deste recurso, dentro do script, eu mando as linhas de log da execução atual para um arquivo temporário, compacto ele e concateno no arquivo definitivo. Depois apago o arquivo temporário. Fazendo assim, eu elimino um gargalo de chamadas aos compactadores.
Ahhh... já ia me esquecendo... Prefira usar o GZIP ao invés do BZIP2 caso seu processador esteja no gargalo. O BZIP2 compacta bem mais no uso padrão, mas também usa bem mais processamento.
Fonte: http://www.dicas-l.com.br/print/20040506.html
Vim: Edição de Múltiplos Arquivos
Vim - Edição de Múltiplos Arquivos
Colaboração: Danilo Gonzalez Hashimoto <<danilo (a) liec ufscar br>>
O vim pode ser utilizado para editar múltiplos arquivos, sem a necessidade de se usar janelas, como comentado em mensagens anteriores.
Para isto, basta digitar algo como:
vim arquivo1.txt arquivo2.txt arquivo3.txt arquivo4.txt
Será aberta uma janela com o conteúdo do arquivo1.txt, porém eu posso navegar entre os diversos arquivos da lista, segundo os comandos abaixo:
:e nomearquivo ; abre outro arquivo :ls ; lista os arquivos abertos :bn ; próximo arquivo :bp ; arquivo anterior :b1 ; vai para o primeiro arquivo, ou :b2, :b3, ...
Boletim EAD Links
A equipe EAD do Centro de Computação divulga mensalmente o Boletim EAD Links. Esse Boletim destina-se a informar sobre links relacionados com educação a distância.
Para fazer sua inscrição nesta lista visite http://www.ead.unicamp.br/php_ead/cadastro.php
Fonte: http://www.dicas-l.com.br/print/20030917.html
Impressão com GNU Enscript
Impressão com GNU Enscript
Para imprimir arquivos formato texto puro, uma boa alternativa é o programa enscript.
A quantidade de opções que o programa oferece é assustadora, entretanto bons resultados podem ser conseguidos com apenas alguns poucos parâmetros.
Eu particularmente uso com as seguintes opções:
enscript -2 -f Times-Roman8 -j -o arquivo.ps arquivo.txt
O comando acima irá gerar um arquivo postscript de nome arquivo.ps, irá colocar bordas ao redor do texto (-j), imprimir o texto com a fonte Times Roman, tamanho de oito pontos, e imprimir duas páginas lógicas por página física, o que reduz bem o gasto com papel, o que é algo muito importante com o preço que do cartucho das impressoras jato de tinta.
O resultado do comando pode ser enviado diretamente para impressora padrão de seu sistema. Basta omitir neste caso a diretiva -o.
enscript -2 -f Times-Roman8 -j arquivo.txt [ 1 pages * 1 copy ] sent to printer 6 lines were wrapped
Caso você precise de opções mais sofisticadas do que esta, consulte a documentação do programa:
man enscript
O programa enscript, em sistemas Conectiva GNU/Linux, faz parte do pacote também chamado enscript (pura coincidência :-)
O software pode também ser compilado para outras variantes de Unix. A página oficial do software encontra-se em http://people.ssh.fi/mtr/genscript/
Fonte: http://www.dicas-l.com.br/print/20030429.html
Compilador Shell
Compilador Shell
Colaboração: Lincoln Zuljewic Silva
Um amigo de trabalho me perguntou se existe algum compilador shell pois aqui na empresa usamos alguns scripts com um certo conteúdo delicado (senhas, usuários, etc) e que seria legal se nós pudessemos "esconder" tais informações.
Dei uma procurada na Internet e acabei achando um cara legal chamado "shc". Testei tal programa no Debian e no RedHat ES4. Para o Debian, o pacote existe no apt e para o RedHat, eu não achei nenhum pacote RPM, então tive que compila-lo.
Instalação a partir dos fontes:
- Faça o download do source do endereço http://www.datsi.fi.upm.es/~frosal/
- Descompacte o arquivo baixado: tar xzvf shc-3.8.3.tgz
- Será criado um diretório shc-3.8.3, entre neste e rode:
make
- Será gerado um binário shc neste diretório, copie-o para /usr/bin
Utilização:
Crie um shell script de exemplo (/tmp/hello.sh):
#!/bin/bash echo "Ola mundo"
Agora é só compilar o shell:
shc -r -v -f /tmp/hello.sh
- -r = compatibilidade entre distribuições de Linux
- -v = demostra as linhas utilizadas na compilação
- -f = qual shell será compilado
Entendendo o compilador
O shc le o arquivo shell, cria um arquivo .c (no nosso exemplo chamado hello.sh.x.c) - em linguagem C mesmo - e compila esse arquivo (no nosso exemplo será chamado de hello.sh.x).
Pronto, é só executa-lo.
Eu fiz o teste gerando o binário no Debian e executando no RedHat e vice-versa, ambas funcionaram.
Download: http://www.sounerd.com
Estágio LarCom/FEEC/Unicamp
O LarCom/FEEC/Unicamp está selecionando estagiários para atuarem em um projeto de pesquisa.
DUAS VAGAS.
Requisitos Gerais:
- Estar matriculado ou ter cursado faculdade na área de ciência da computação ou afins.
- Disponibilidade para trabalhar em regime de 40 horas semanais.
Pré-Requisitos Perfil
- Java desktop - SE
- Swing
- Criação e leitura de diagramas UML na ferramenta Rational Rose
Conhecimentos desejáveis:
- Noções de Java coorporativo - EE
- Noções de Spring
- Noções de Oracle
Os interessados devem enviar currículo detalhado para o endereço <mauricio bottoli (a) gmail com> <mailto:<mauricio bottoli (a) gmail com>>, com o assunto " Estagio - ES" na mensagem, até 09/06/2006, .
Maurício Bottoli LaRCom - Laboratório de Redes de Comunicações FEEC - Faculdade de Engenharia Elétrica e Computação UNICAMP - Universidade Estadual de Campinas
Fonte: http://www.dicas-l.com.br/print/20060601.html
Ativando placas wireless com o Ndiswrapper
Ativando placas wireless com o Ndiswrapper
O Ndiswrapper é uma espécie de Wine para drivers de placas de rede wireless. Ele funciona como uma camada de abstração entre driver e o sistema operacional, permitindo que placas originalmente não suportadas no Linux funcionem usando os drivers do Windows.
Em alguns casos o próprio driver para Windows XP que acompanha a placa funcionará, em outros é preciso usar alguma versão específica do driver. Você pode encontrar várias dicas sobre placas testadas por outros usuários do Ndiswrapper no:
http://ndiswrapper.sourceforge.net/wiki/index.php/List
Os drivers para Windows são arquivos executáveis, que servem entre intérpretes entre a placa e o sistema operacional. Eles contém o firmware da placa e outras funções necessárias para fazê-la funcionar. Cada placa é diferente, por isso os drivers de uma não funcionam na outra mas, todos os drivers conversam com o sistema operacional usando uma linguagem específica de comandos. Ou seja, do ponto de vista do sistema operacional todos os drivers são parecidos.
O Ndiswrapper consegue executar o driver e "conversar" com ele usando esta linguagem. Ele trabalha como um intérprete, convertendo os comandos enviados pelo Kernel do Linux em comandos que o driver entende e vice-versa. O Kernel acha que está conversando com uma placa suportada, o driver acha que está rodando dentro de um sistema Windows e a placa finalmente funciona, mesmo que o fabricante não tenha se dignado a escrever um driver nativo.
O Ndiswrapper não funciona com todas as placas e em outras alguns recursos como o WPA não funcionam, mas na maior parte dos casos ele faz um bom trabalho.
A página do projeto é a:
http://ndiswrapper.sourceforge.net
Muitas distribuições já trazem o Ndiswrapper instalado por padrão, como o Kurumin e o Mandrake 10 em diante. Nestes casos você pode pular este tópico sobre a instalação e ir direto para a configuração. Procure pelo pacote "ndiswrapper" no gerenciador de pacotes.
Instalando
Na página você encontrará apenas um pacote com o código fonte. Como o Ndiswrapper precisa de um módulo instalado no Kernel, seria complicado para os desenvolvedores manter versões para muitos distribuições diferentes. Assim como no caso dos softmodems, para compilar o pacote você precisa ter instalados os pacotes kernel-headers e/ou kernel-source e os compiladores. A versão mais recente pode ser baixada no:
http://sourceforge.net/projects/ndiswrapper/
Descompacte o arquivo e acesse a pasta que será criada. Para compilar e instalar, basta rodar o comando:
# make install
(como root)
O Ndiswrapper é composto de basicamente dois componentes. Um módulo, o ndiswrapper.ko (ou ndiswrapper.o se você estiver usando uma distribuição com o Kernel 2.4), que vai na pasta "/lib/modules/2.x.x/misc/" e um executável, também chamado "ndiswrapper", que é usado para configurar o driver, apontar a localização do driver Windows que será usado, etc.
Se por acaso você estiver usando uma distribuição que já vem com o Ndiswrapper instalado, você deve primeiro remover o pacote antes de instalar uma versão mais atual. Caso a localização do módulo ou do executável no pacote da distribuição seja diferente, pode acontecer de continuar sendo usado o driver antigo, mesmo depois que o novo for instalado.
Configurando
Depois de instalar o Ndiswrapper, o próximo passo é rodar o comando "depmod -a" (como root) para que a lista de módulos do Kernel seja atualizada e o novo módulo seja realmente instalado. Isto deve ser feito automaticamente pelo script de instalação, é apenas uma precaução.
Antes de ativar o Ndiswrapper você deve apontar a localização do arquivo .inf dentro da pasta com os drivers para Windows para a sua placa. Em geral os drivers para Windows XP são os que funcionam melhor, seguidos pelos drivers para Windows 2000. Você pode usar os próprios drivers incluídos no CD de instalação da placa. Se eles não funcionarem, experimente baixar o driver mais atual no site do fabricante, ou pesquisar uma versão de driver testada no ndiswapper no:
http://ndiswrapper.sourceforge.net/wiki/index.php/List
Para carregar o arquivo do driver rode o comando "ndiswrapper -i", seguido do caminho completo para o arquivo, como em:
# ndiswrapper -i /mnt/hda6/Driver/WinXP/GPLUS.inf
Rode agora o comando "ndiswrapper -l" para verificar se o driver foi mesmo ativado. Você verá uma lista como:
Installed ndis drivers: gplus driver present, hardware present
Com o driver carregado, você já pode carregar o módulo com um:
# modprobe ndiswrapper
Se tudo estiver ok, o led da placa irá acender, indicando que ela está ativa. Agora falta apenas configurar os parâmetros da rede Wireless que veremos adiante.
Se a placa não for ativada, você ainda pode tentar uma versão diferente do driver. Neste você precisa primeiro descarregar o primeiro driver. Rode o ndiswrapper -l para ver o nome do driver e em seguida descarregue-o com o comando "ndiswrapper -e".
No meu caso por exemplo o driver se chama "gplus" então o comando fica:
# ndiswrapper -e gplus
Para que a configuração seja salva e o Ndiswrapper seja carregado durante o boot, você deve rodar o comando:
# ndiswrapper -m
E em seguida adicionar a linha "ndiswrapper" no final do arquivo "/etc/modules", para que o módulo seja carregado no boot.
Gostou da dica? Veja a agenda de cursos presenciais com Carlos E. Morimoto em Porto Alegre e São Paulo
- Curso: Redes e Servidores Linux (com Carlos E. Morimoto) Em Porto Alegre, início dia 04/07
- Curso: Programando em Shell Script (com Júlio Cezar Neves) Em Porto Alegre, início dia 11/07
Fonte: http://www.dicas-l.com.br/print/20050624.html
Horário de Verão
Horário de Verão
Colaboração: Marlon Dutra
Para o desespero de muita gente, o horário de verão não segue nenhum padrão pré-estabelecido no Brasil, assim como acontece em alguns outros países. Sendo assim, todos os anos temos que nos preocupar em atualizar as máquinas para que elas entrem e saiam corretamente do horário de verão.
É sempre bom lembrar que o nome "horário de verão" é de certa forma equivocado. O horário em si nunca muda. O que muda de fato é o fuso horário, que no caso do Brasil, passa de -3:00 para -2:00, em relação à hora GMT (UTC). Então, antes de sair atualizando o seu relógio, deixe ele quieto e se preocupe em atualizar o seu fuso horário.
O mecanismo de fuso horário (timezone) utilizado no GNU/Linux é o mesmo que em vários outros sistemas Unix, o que facilita o intercâmbio de arquivos de configuração.
Na maioria das distribuições GNU/Linux os arquivos de zona fazem parte do pacote da Glibc. No caso do Debian, esse pacote se chama libc6. Como o ajuste de zona não é considerado um parâmetro de configuração, não há meios de mexermos nisso sem pegar o arquivo fonte, alterar e recompilar.
Todos os anos, após o Governo Federal anunciar o decreto do horário de verão, eu tenho feito a correção e publicado no meu site. Você pode pegar o arquivo fonte corrigido e instalá-lo da seguinte forma:
zic southamerica
O comando gzic vai compilar o arquivo southamerica e colocar os binários normalmente em g/usr/share/zoneinfo/America.
Esse arquivo está configurando o seu computador para entrar no horário de verão em 2 de novembro de 2004 e sair no dia 20 de fevereiro de 2005.
No próximo ano, provavelmente por setembro, a mesma estória se repete.
Fonte: http://www.dicas-l.com.br/print/20041019.html
mkdnsmap4me: Gerador automático de mapas de nomes DNS
mkdnsmap4me - Gerador automático de mapas de nomes DNS
Colaboração: Jansen Sena <<jansen (a) comunidadesol org>>
Freqüentemente, muitos administradores de sistemas costumam criar mapas de nomes para configurar servidores DNS. Uma prática comum para essa atividade consiste em escolher temas de nomes usando como referência personagens de livros, filmes, recursos naturais, cidades, países, entre outros. Entretanto, essa tarefa pode ser trabalhosa e sujeita a erros à medida em que número de hosts a serem mapeados cresce.
O mkdnsmap4me é uma pequena ferramenta desenvolvida em shell script para auxiliar administradores de sistemas no sentido de automatizar o processo de geração de mapas de nomes. Tomando como referência arquivos de texto que contêm padrões de nomes pré-estabelecidos e outras informações repassadas pelo administrador de sistemas, como o nome do domínio, o prefixo IP a ser utilizado, a quantidade de servidores, clientes e impressoras, o mkdnsmap4me cria os mapas direto e reverso para servidores DNS.
1. Exemplo
mkdnsmap4me 192.168.1 comunidadesol.org rios.txt 3 5 passaros.txt 50 40
Nesse caso, o mkdnsmap4me irá criar os mapas direto e reverso para o domínio "comunidadesol.org". O prefixo de endereço IP a ser utilizado é "192.168.1". Os nomes a serem utilizados para os servidores serão retirados do arquivo "rios.txt" e o primeiro servidor terá como sufixo "3". Como "5" servidores devem ser habilitados nesse exemplo, o primeiro endereço IP para os servidores será "192.168.1.3" e o último "192.168.1.7".
Caso existam mais de cinco nomes no arquivo "rios.txt", o mkdnsmap4me irá inseri-los nos mapas DNS comentados para uso futuro. Para os clientes, a ferramenta irá considerar os nomes contidos no arquivo "passaros.txt". A faixa de endereços a ser habilitada compreende "192.168.1.50" até "192.168.1.89". Da mesma forma que nos servidores, caso existam mais nomes disponíveis no arquivo "passaros.txt", os excedentes serão incluídos nos mapas com comentários.
Inserindo mais um bloco de "arquivo de nomes + primeiro sufixo IP + quantidade" o administrador de sistemas pode incluir também impressoras (ou uma terceira categoria qualquer de equipamentos em rede) nos mapas.
2. Instalando o mkdnsmap4me
Para facilitar a sua utilização para os administradores que utilizam distribuições GNU/Linux baseadas no Debian, o mkdnsmap4me está disponível como um pacote ".deb". Para instá-lo basta digitar o segunite comando:
# dpkg -i mkdnsmap4me-0.1.deb
Feito isso, para obter mais detalhes sobre o mkdnsmap4me basta consultar sua man page:
$ man mkdnsmap4me
Para os usuários de outras distribuições pode-se utilizar o ".tar.gz".
Em ambos os casos, a ferramenta possui um conjunto de temas pré-definidos. Caso a instalação tenha sido feita por meio do pacote ".deb", os temas estarão no diretório "/usr/share/doc/mkdnsmap4me/themes". Caso tenha sido utilizado o ".tar.gz" os temas estarão no diretório "themes" dentro da pasta criada após a descompactação do arquivo.
3. Obtendo o mkdnsmap4me
O pacote ".deb", o arquivo ".tar.gz", o script e os arquivos de temas podem ser obtidos no seguinte endereço:
http://www.comunidadesol.org/jansen/mkdnsmap4me
4. Como colaborar?
Você pode colaborar corrigindo problemas no código do mkdnsmap4me, desenvolvido em shell script, reportando problemas, fazendo sugestões e críticas e colaborando com a documentação.
Outra forma de colaborar é criar novos arquivos de temas, considerando filmes, livros, recursos naturais, animais, entre outros. Serão muito bem-vindos temas que considerarem assuntos típicos da sua região!
Para colaborar basta encaminhar um email para <jansen (a) comunidadesol org>.
Apache chairman: Days numbered for commercial software
Fonte: http://www.macworld.co.uk/news/index.cfm?RSS&NewsID=14172
Thursday - March 23, 2006, By Paul Krill
The days of selling software through the traditional commercial model are numbered, as open source is becoming the paradigm of choice, said Greg Stein, chairman of the Apache Software Foundation, at the EclipseCon 2006 conference on Wednesday.
Software is becoming is increasingly commoditised, Stein said during his keynote presentation, and more of it is available free and it is easy to get.
He cited the OpenOffice office automation package as an example of free software that could replace Microsoft Office.
All your software will be free
"As the open-source stack grows and grows and takes over more areas, there's less money available in packaged products," Stein said.
"All of your software will be free. It means that, over time, you aren't going to be paying for software anymore but will instead pay for assistance with it", Stein said.
He estimated that in five to ten years, most software used today will be free.
"The notion of packaged products is really going to go away," Stein said.
Eventually, a free software project will overtake a commercial effort in functionality; there are almost always more developers in the open-source community, Stein said.
Making money in software will involve selling assistance services for functions such as installation, configuration, maintenance, upgrading, testing and customisation, Stein said. Basic software components themselves will be free, he said.
"As our systems grow more and more complex, more and more assistance is necessary," he said.
An audience member was not so willing to concede the software market to open source.
"I think there's always going to b a spot for commercial, closed-source software for specialised tasks, but the base infrastructure will be more open source or easily available," said Danny D'Amours, computer systems officer at the National Research Council.
Commercial, closed-source software will not go away "because there's so many small niches that people will be able to exploit or be able to make commercial solutions off of," D'Amours said.
Evolving licences
In other parts of his presentation, Stein discussed the evolution of software licensing and compared Apache to Eclipse.
"A licence can ruin a perfectly good piece of software," Stein said, borrowing a quote from fellow Apache participant Jon Stevens.
"A bad licence can make it so restrictive that nobody wants to use the software," Stein said.
Licensing has taken various forms, ranging from the traditional proprietary licence used by Microsoft, IBM, and Oracle; to Microsoft's somewhat less-restrictive Shared Source licence to the all-access GNU General Public Licence (GPL), which has caused problems, Stein said.
"The GPL is sometimes considered viral in that it grows out to the entire software package", requiring the release of all code affected by it, he said.
Even licences associated with Google, where Stein is employed, Yahoo and MSN are closed, he said. "Their software is also closed. It's proprietary; you can't get at it," said Klein.
In comparing Eclipse and Apache, Stein said Eclipse looked at the Apache model when being founded. Like Apache, which started with a web server, Eclipse has expanded beyond its original mission, now being more than just an IDE. But Eclipse has paid staff while Apache is all-volunteer, said Stein.
"Our organisations [have] not been very close, but certainly, we're starting to see more co-operation between them" Stein said.
Apache has long-term initiatives under way such as its Harmony J2SE (Java 2 Standard Edition) implementation, Stein noted. Apache has also taken on endeavours that would have been surprising several years ago, such as the Derby database, he said.
Stein cited patents as an issue for open source, particularly in the area of standards. "Standards that have patents in them are going to be very difficult and one of the big areas in the future that are going to cause problems for open source," Stein said.
Fonte: http://www.dicas-l.com.br/print/20060401.html
Otimização no uso do StarOffice
Otimização no uso do StarOffice
Colaboração: Marcelo Pereira <<marcelo (a) pereira com>>
Muita gente tem reclamado do StarOffice por ele ser um aplicativo pesado, que demora para rodar. Por outro lado, ele é uma ferramenta completa para o dia a dia, e é free.
Uma maneira de agilizar o uso do StarOffice é 'dividir' o processamento e a utilização de memória, aliviando a estação cliente de carregar este aplicativo em sua memória local. Assim, na máquina cliente estará rodando apenas o servidor X, enquanto que o StarOffice estará rodando em outra máquina, economizando os recursos do cliente.
Para fazer esta divisão, basta fazer o seguinte:
No servidor:
Instale o StarOffice no servidor com a opção '/net'; Edite o arquivo /etc/hosts.equiv e adicione uma linha para cada uma das estações que irá acessar o StarOffice Exemplo de /etc/hosts.equiv:
## Início do arquivo 192.168.1.11 192.168.1.12 192.168.1.45 ## Fim do arquivo
(Ps.: Pode-se incluir os 'nomes', mas, de qq forma, estes nomes devem estar relacionados no arquivo /etc/hosts para que possam ser resolvidos.) No Cliente: 'Autorize' o servidor a enviar a instância do StarOffice para o seu terminal (execute no X):
(Ex.: xhost +192.168.1.2)
Execute o StarOffice usando rsh e peça para enviar a instância para o terminal:
Ex.:
Servidor: 192.168.1.2 Cliente: 192.168.1.11
Pronto, você está utilizando o StarOffice sem gastar sua preciosa memória...
Fonte: http://www.dicas-l.com.br/print/20010910.html
Arquivo /etc/aliases
Arquivo /etc/aliases
Colaboração: Rubens Queiroz de Almeida <<queiroz (a) unicamp br>>
O arquivo /etc/aliases, como o nome em inglês já o diz, é um arquivo de apelidos. Ou seja, você pode fazer com que mensagens enviadas para um endereço sejam redirecionadas para outro. O outro endereço pode ser configurado de diversas maneiras, oferecendo uma grande flexibilidade ao administrador.
No arquivo /etc/aliases, linhas em branco são ignoradas e todas as linhas que se iniciam com o caracter "#" são interpretadas como comentários.
Basicamente, existem cinco formas possíveis de aliases:
listserv: "|/usr/server/catmail -r -f" (1) consult: :include:/usr/sys/consult (2) owner-consult: suporte (3) cursos: joao,maria,jose,antonio (4) nobody:/dev/null (5)
(1) O alias acima faz com que mensagens enviadas para <Rubens_Queiroz (a) unicamp br> sejam redirecionadas para o usuário queiroz. Cumpre lembrar que a maioria dos sistemas unix limita o tamanho do username em oito caracteres. Através do arquivo /etc/aliases esta limitação é removida.
A outra forma Linhas em branco são ignoradas
Verificação recursiva de nomes
Cinco tipos possíveis
# Aliases obrigatorios postmaster: root MAILER-DAEMON: postmaster # Aliases para o uso do listserv# listserv: "|/usr/server/catmail -r -f" consult: :include:/usr/sys/consult owner-consult: suporte owner-owner: suporte cursos: joao,maria,jose,antonio nobody:/dev/null Rubens_Queiroz: queiroz
Fonte: http://www.dicas-l.com.br/print/19980619.html
Criação de uma árvore completa de diretórios (mkdir -p)
Criação de uma árvore completa de diretórios (mkdir -p)
Colaboração: Rubens Queiroz de Almeida
Para criar uma árvore completa de diretórios, utilize o comando mkdir com a flag "-p".
O comando
mkdir -p /home/users/cs/ano1/graduacao/jose
é equivalente aos comandos
mkdir /home mkdir /home/users mkdir /home/users/cs mkdir /home/users/cs/ano1 mkdir /home/users/cs/ano1/graduacao mkdir /home/users/cs/ano1/graduacao/jose
e bem menos trabalhoso :)
A seguir incluo mais uma dica enviada pelo Lenimar de Andrade (<lenimar (a) netwaybbs com br>)
COPIANDO PAGINAS DA WWW VIA E-MAIL
O "WwwFetch E-mail Gateway" e' uma ferramenta localizada em http://linux.netmor.com/wwwfetch/ que atende a solicitacoes de usuarios para copias de paginas na WWW. As solicitacoes sao enviadas via e-mail e respondidas tambem via e-mail em um unico arquivo .ZIP no formato MIME ou no formato UUENCODE.
As mensagens devem ser enviadas para <wwwfmail (a) linux netmor com> com linhas no seguinte formato:
Query: [Palavras-chave fornecidas para pesquisa] URL: [URLs adicionais, separados por espacos em branco] Images: [Yes/No] OS: [DOS ou UNIX] Files: [Quantidade maxima de arquivos, no maximo 15] Limit: [Quantidade maxima de MBytes, no maximo 1.5] Send: [NO ou UUE ou MIME] Split: [Tamanho de partes fragmentadas no formato MIME]
Os colchetes nao devem ser incluidos.
Observacoes:
1. Somente as linhas do "URL" ou "Query" sao obrigatorias. Os valores 'default' para as demais opcoes sao: Images: No; OS: DOS; Files: 5; Limit: 0.5; Send: No; Split: 10000. A ordem das linhas nao e' importante.
2. Na linha do "Query" podem aparecer expressoes compostas utilizando- se os operadores booleanos AND (E), OR (OU) ou NOT (NAO). Por exemplo:
Query: Brasil OR Brazil NOT Brasilien
Somente em "Query" e' que e' feita distincao entre letras maiusculas e minusculas.
3. Na linha do "OS" pode ser especificado DOS (arquivos com extensao com no maximo 3 letras) ou UNIX. Usuarios de Windows 3.x devem sele- cionar DOS, enquanto que usuarios de Windows95 ou Mac devem selecio- nar UNIX.
4. Se for selecionado "Send: no", entao o resultado da busca nao e' enviado via e-mail. Neste caso, o arquivo .ZIP ficara' guardado por 48 horas em ftp://linux.netmor.com/wwwfetch/
5. Se for enviada mensagem para <wwwfmail (a) linux netmor com> com subject formado pelas palavras 'info' ou 'help', entao e' enviado um arquivo com estas informacoes basicas.
A seguir, alguns exemplos:
Exemplo 1: Neste exemplo, sao fornecidos tres URLs em uma unica men- sagem. Podem ser fornecidos ate' 10 URLs em cada mensagem. As imagens presentes nas tres paginas relacionadas, serao tambem enviadas. As paginas que correspondam a 'links' das paginas solicitadas nao serao enviadas.
To: wwwfmail@linux.netmor.com Subject: ------------------------------------------------------ URL: http://www.gi.net/NET/ URL: http://st-www.cs.uiuc.edu/users/chai/figlet.html URL: http://st-www.cs.uiuc.edu Images: yes Files: 15 Limit: 1.5 Send: uue OS: Dos
Exemplo 2: Como neste exemplo nao tem uma linha com um "Send:", entao o arquivo .ZIP com a pagina especificada nao sera' enviado via e-mail, podendo ser copiado via FTP. No arquivo .ZIP serao incluidos no maximo 10 arquivos com tamanho total nao ultrapassando 0,6 MB.
To: wwwfmail@linux.netmor.com Subject: ------------------------------------- URL: http://jampa.com.br/jampa.html Images: yes Files: 10 Limit: 0.6
Exemplo 3: Neste exemplo eu solicito que seja pesquisado algo relaci- onado com "ufpb.br" ou "UFPB" e que o resultado seja enviado no formato MIME (Base64), sem imagens.
To: wwwfmail@linux.netmor.com Subject: ----------------------------------- Query: ufpb.br or UFPB Send: MIME Images: no
Lenimar Nunes de Andrade (de Joao Pessoa, PB) <lenimar (a) netwaybbs com br>
Fonte: http://www.dicas-l.com.br/print/19970424.html
Privacidade no SSH
Privacidade no SSH
Colaboração: Fabiano Caixeta Duarte
O ssh é um protocolo seguro para comunicações entre diferentes estações utilizado amplamente para obtenção de console textual remota e para tunelar (túneis criptografados) vários tipos de conexão.
Em 'Como melhorar a segurança no ssh' podemos ver algumas maneiras de melhorar a segurança no uso deste protocolo.
Por outro lado, há que se falar em um outro aspecto pertinente à segurança: a privacidade.
Ao utilizar aplicativos clientes do ssh (ssh, sftp, scp, etc), é armazenado em um arquivo do usuário um par de informações nome/ip e chave pública do servidor ssh acessado. Este arquivo é chamado ~/.ssh/known_hosts, ou seja, reside no diretório HOME do usuário.
Por default, o nome do host (ou seu endereço IP) é armazenado em texto plano, o que caracteriza a possibilidade de quebra de privacidade. Para melhor compreensão, imagine o seguinte contexto:
Um atacante está fazendo um target harvesting, ou seja, uma busca por alvos válidos para ataque de força bruta. Ao invés de atacar aleatóriamente um conjunto de hosts que podem não existir ou não possuir servidor ssh, faz muito mais sentido colher hosts que tenham servidores ssh.
Suponhamos que este atacante conseguiu invadir uma determinada máquina e obteve acesso root. A partir de uma varredura em todos os arquivos known_hosts dos usuários, o atacante conhecerá hosts válidos, tanto na mesma rede como em qualquer outra. Assim, ele poderá direcionar o ataque para estes hosts.
A solução
A partir da versão 4.1 do OpenSSH é possível armazenar um hash do nome de host ao invés de texto plano para garantir privacidade. Para tal, basta setar no arquivo de configuração do cliente ssh, geralmente localizado em /etc/ssh/ssh_config a opção HashKnownHosts da seguinte maneira:
HashKnownHosts yes
Naturalmente este procedimento deve ser feito pelo administrador do sistema. Não é necessário reiniciar o serviço, uma vez que esta alteração afeta apenas o funcionamento dos programas clientes de ssh.
A partir de então, todas as entradas que forem inseridas pelo ssh no arquivo known_hosts conterão o hash do nome/IP do host. As entradas pre-existentes permanecerão em texto plano. Para sanar este 'problema' pode-se converter as entradas a partir do seguinte comando:
$ ssh-keygen -H
Cada usuário deve realizar este procedimento. Naturalmente, por meio de algum script específico, o usuário root pode automatizar a rotina para todos os usuários.
Efeito colateral
Existem alguns raros casos em que você pode precisar excluir uma entrada específica no arquivo known_hosts. Exemplo: o servidor em que você costuma se autenticar foi formatado. Na primeira execução do serviço ssh, é definida uma nova chave. Por default, o cliente ssh vai reclamar da diferença entre a chave pré-existente e a atual. Isto ocorre para alertar você que talvez você esteja se conectando a algum outro host como parte de um ataque de IP/DNS spoofing.
Como não é o caso, você vai precisar excluir a entrada antiga. Mas como fazer se você não tem o hostname em texto plano? Isto pode ser feito de forma muito fácil utilizando novamente o utilitário ssh-keygen da seguinte maneira:
$ ssh-keygen -R <hostname>
Onde hostname é o nome do servidor ssh cuja entrada você quer remover.
Conclusão
A preocupação com segurança é algo quase paranóico. Infelizmente não pode ser diferente, uma vez que os crackers não descansam. Assim, mesmo se tratando de um protocolo/programas voltados à criação de um ambiente seguro, o ssh - servidor e cliente -, precisa estar bem configurado para evitar outros problemas de segurança.
Referências
- man ssh_config
- http://www.openssh.com/txt/release-4.1
Fonte: http://www.dicas-l.com.br/print/20060619.html
Configurando o Lilo e o Grub
Configurando o Lilo e o Grub
O lilo e o grub disputam o posto de gerenciador de boot default entre as distribuições Linux. O lilo é o mais antigo e mais simples de configurar, enquanto o grub é o que oferece mais opções. Mas, ao invés de ficar discutindo qual é melhor, vamos aprender logo a configurar e resolver problemas nos dois :-)
O lilo utiliza um único arquivo de configuração, o /etc/lilo.conf. Ao fazer qualquer alteração neste arquivo é preciso chamar o executável do lilo, o "/sbin/lilo" ou simplesmente "lilo" para que ele leia o arquivo e salve as alterações.
Aqui vai um exemplo comentado do arquivo de configuração do lilo, que você pode usar como modelo:
# A opção abaixo (quase sempre a primeira linha do arquivo) indica aonde o lilo # será instalado. Indicando um dispositivo, como em "/dev/hda" ele é instalado # na MBR do HD. Indicando uma partição, como em "/dev/hda1" ele é instalado # no primeiro setor da partição. Fazendo isso o sistema não inicializará diretamente, # você precisará configurar o gerenciador de boot de outro sistema instalado # para carregar o atual. boot=/dev/hda # (caso você use um HD Serial ATA, e o lilo não esteja sendo instalado corretamente, # experimente mudar esta opção de "/dev/hda" para "/dev/sda", a forma como eles # são detectados nas versões recentes do Kernel 2.6 # Esta opção ativa o uso de uma imagem como fundo no menu de boot do lilo. # Este recurso é opcional: bitmap = /boot/kurumin.bmp bmp-colors = 255,9,;9,255, bmp-table = 61,15,1,12 bmp-timer = 73,29,255,9 # RESOLUÇÃO do VÍDEO # Aqui vai o código que determina a resolução do vídeo, em modo texto (usando frame- # buffer) e também no modo gráfico, caso seja usado o driver de vídeo "fb" no arquivo # de configuração do X. # O default na maioria das distribuições é "vga=788", que faz o sistema usar resolução # de 800x600, que é compatível com quase todas as placas de vídeo. # Se você quer usar resolução de 1024x768, mude a opção para: vga=791 # Se você quer usar resolução de 640x480, mude a opção para: vga=785 # Se a sua placa de vídeo não suporta frame-buffer e você quer de volta a velha tela de # texto padrão, mude a opção para: vga=normal # OBS: Se você tem uma placa GeForce 4 ou GeForce 4 MX, deixe esta opção em "788", # pois elas não suportam frame-buffer a 1024x768. vga=788 # Esta linha indica qual será o sistema operacional default, caso você tenha dois ou mais # instalados em dual-boot: prompt default=Kurumin # Tempo de espera antes de entrar no sistema padrão, em décimos de segundo (o # padrão é 10 segundos). O valor máximo é 30000 (3.000 segundos), não use um #número maior que isto, ou o lilo acusará o erro e não será gravado corretamente: timeout=100 # Aqui vão os parâmetros do Kernel. Se você usa deseja desativar o suporte a apci, # para solucionar problemas, por exemplo, adicione a opção "acpi=off" append = "splash=silent apm=power-off nomce quiet devfs=mount" # As linhas abaixo indicam a localização do executável principal do Kernel e do arquivo # initrd, caso seja usado um. Esta é a seção que é duplicada ao instalar um segundo # Kernel image=/boot/vmlinuz-2.6.8.1-kanotix-10 label=Kurumin root=/dev/hda1 read-only
Isso pode ser solucionado facilmente, editando o "/etc/lilo.conf" do Mandrake, para que ele seja reinstalado na partição e adicionando as duas linhas que chamam outros sistemas no lilo do Kurumin.
Você pode editar o lilo do Mandrake e regravá-lo rapidamente através do próprio Kurumin (ou outra distribuição instalada), ou dando boot com um CD do Kurumin ou Knoppix.
Dê boot pelo CD e abra um terminal. Defina a senha de root usando o comando "sudo passwd". Agora vire root usando o comando "su" seguido da senha escolhida.
Monte a partição onde o Mandrake está instalado:
# mount -t reiserfs /dev/hda1 /mnt/hda1
Agora usamos o comando chroot para "entrar" dentro da partição montada, a fim de editar o lilo.conf e gravar o lilo. Todos os comandos dados dentro do chroot são na verdade executados no sistema que está instalado na partição.
É preciso Indicar o sistema de arquivos em que a partição está formatada no comando acima, caso contrário o chroot vai dar um erro de permissão.
# chroot /dev/hda1
Agora use um editor de texto em modo texto, como o mcedit ou o joe para alterar o arquivo "/etc/lilo.conf" e chame o executável do lilo para salvar as alterações. Depois de terminar, pressione Ctrl+D para sair do chroot.
# mcedit /etc/lilo.conf # lilo
Configurando o grub
Muitas distribuições permitem que você escolha entre usar o lilo ou o grub durante a instalação. Outras simplesmente usam um dos dois por padrão. De uma forma geral, o grub oferece mais opções que o lilo e inclui um utilitário, o update-grub que gera um arquivo de configuração básico automaticamente. Por outro lado, a sintaxe do arquivo de configuração do grub é mais complexa o que o torna bem mais difícil de editar manualmente que o do lilo. O grub inclui ainda um prompt de comando, novamente nenhum exemplo de amigabilidade.
De resto, os dois possuem a mesma e essencial função. Sem o gerenciador de boot o sistema simplesmente não inicializa. :-)
O grub usa o arquivo de configuração "/boot/grub/menu.lst". Este arquivo é lido a cada boot, por isso não é necessário reinstalar o grub ao fazer alterações, como no caso do lilo.
Para entender melhor como o grub funciona, vamos ver como instalá-lo no Kurumin, substituindo o lilo que é usado por padrão.
Em primeiro lugar, você precisa instalar o pacote do grub via apt-get. Ele não possui dependências externas, inclui apenas os executáveis principais. Você pode até mesmo arriscar compilar a versão mais recente, baixada no site do projeto.
# apt-get install grub
Depois de instalar, crie a pasta "/boot/grub/" e use o "update-grub" para gerar o arquivo "menu.lst". Basta responder "y" na pergunta e o arquivo é gerado automaticamente:
# mkdir /boot/grub # update-grub Testing for an existing GRUB menu.list file... Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) y Searching for splash image... none found, skipping... Found kernel: /boot/vmlinuz-2.6.8.1-kanotix-10 Found kernel: /boot/memtest86.bin Updating /boot/grub/menu.lst ... done
Agora só falta instalar o grub na MBR usando o comando:
# grub-install /dev/hda
Ao gravar o grub, ele naturalmente substitui o lilo ou qualquer outro gerenciador de boot que esteja sendo usado.
Se você mudar de idéia mais tarde e quiser regravar o lilo, subscrevendo o grub, basta chamá-lo novamente:
# lilo
Assim como no caso do lilo, o arquivo de configuração do grub inclui uma seção separada para cada sistema que aparece no menu de boot. O update-grub não é muito eficiente em detectar outros sistemas instalados, por isso depois de gerar o arquivo você ainda precisará adicionar as linhas referentes a eles no final do arquivo "/boot/grub/menu.lst".
Para que o grub inicialize uma cópia do Windows, instalada na primeira partição, /dev/hda1, adicione as linhas:
title Windows rootnoverify (hd0,0) chainloader +1
Elas equivalem à opção "other=/dev/hda1" que seria usada no arquivo do lilo. A linha "title" contém apenas a legenda que é mostrada no menu de boot. O que interessa mesmo é a linha rootnoverify (hd0,0), que indica o HD e a partição onde o outro sistema está instalado. O primeiro número indica o HD e o segundo a partição dentro deste. Na nomenclatura adotada pelo grub temos:
/dev/hda = 0 /dev/hdb = 1 /dev/hdc = 2 /dev/hdd = 3
As partições dentro de cada HD são também nomeadas a partir do zero:
/dev/hda1 = 0,0 /dev/hda2 = 0,1 /dev/hda3 = 0,2 /dev/hda4 = 0,3 /dev/hda5 = 0,4 /dev/hda6 = 0,5
etc...
Se você quisesse que o grub iniciasse também uma instalação do Mandrake no /dev/hda3, cujo lilo (ou grub) foi instalado na partição, adicionaria as linhas:
title Mandrake rootnoverify (hd0,2) chainloader +1
A linha "chainloader +1" especifica que o grub vai apenas chamar o gerenciador de boot instalado na partição e deixar que ele carregue o outro sistema, assim como fizemos ao editar o arquivo do lilo.
Você pode usar o grub para carregar diretamente o outro sistema, sem precisar passar pelo outro gerenciador de boot. Neste caso você usaria as linhas:
title Mandrake root (hd0,2) kernel /boot/vmlinuz-2.6.8 root=/dev/hda3 ro savedefault boot
Veja que neste caso você precisa especificar a localização do executável do Kernel dentro da partição. Você pode especificar também opções para o Kernel e usar um arquivo initrd, caso necessário, como neste segundo exemplo:
title Mandrake root (hd0,2) kernel /boot/vmlinuz-2.6.8 root=/dev/hda3 ro vga=791 acpi=off splash=verbose initrd /boot/initrd.gz savedefault boot
Assim como no caso do lilo, você pode usar um CD do Kurumin ou Knoppix para reinstalar o grub, caso ele seja subscrito por uma instalação do Windows ou outra distribuição Linux.
Neste caso, depois de dar boot pelo CD, você só precisa montar a partição onde o sistema está instalado, como em:
# mount -t reiserfs /dev/hda2 /mnt/hda2
E usar o chroot para obter o prompt de comando do sistema que está recuperando:
# chroot /mnt/hda2
No prompt, você precisa apenas editar o arquivo "/boot/grub/menu.lst", ou gerá-lo novamente usando o comando "update-grub" e reinstalar o grub, usando o comando:
# grub-install /dev/hda
Gostou da dica? Veja a agenda de cursos presenciais com Carlos E. Morimoto em Porto Alegre e São Paulo
- Curso: Redes e Servidores Linux (com Carlos E. Morimoto) Em Porto Alegre, início dia 04/07
- Curso: Programando em Shell Script (com Júlio Cezar Neves) Em Porto Alegre, início dia 11/07
Fonte: http://www.dicas-l.com.br/print/20050626.html
Instalando OpenLdap + phpLdapAdmin em um FC3 fácil e rápido
Instalando OpenLdap + phpLdapAdmin em um FC3 fácil e rápido
Colaboração: Renato Torresan Pagano
Instalando OpenLdap + phpLdapAdmin em um FC3 fácil e rápido
Pacotes Utilizados
- cyrus-sasl-2.1.19-3.i386.rpm
- BerkleyDB-2.7.7-1.i386.rpm
- nss_ldap-220-3.i386.rpm
- openldap-2.2.13-2.i386.rpm
- openldap-servers-2.2.13-2.i386.rpm
- phpldapadmin-0.9.6c.zip (http://phpldapadmin.sourceforge.net)
- php-4.3.9.tar
- apache_1.3.33.tar
- Instale todos os rpms
cd /root/pacotes rpm -Uvh *
- Instale o Apache
cd /usr/src tar -xzvf /root/apache_1.3.33.tar cd apache_1.3.33 ./configure --enable-module=so --enable-module=rewrite make make install
- Instale o PHP
cd .. tar -xzvf /root/php-4.3.9.tar cd php-4.3.9 ./configure --with-mysql --with-apxs=/usr/local/apache/bin/apxs --with-gd=/usr/lib --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-zlib-dir=/usr/lib --with-xpm-dir=/usr/lib --with-freetype-dir=/usr/lib --with-ldap
Obs.: Caso ele reclame da dependência ldap.h, insira no arquivo /etc/ld.so.conf o caminho /usr/lib/ e /usr/include/ e faça ldconfig, rode novamente o configure.make make install
- Configure o Apache para que ele carregue o modulo do php, insira as seguintes linhas no arquivo de configuração httpd.conf do seu apache:
LoadModule php4_module libexec/libphp4.so
Aqui procure pela palavra LoadModule e procure adicionar na linha abaixo,para manter o arquivo organizado.AddType application/x-httpd-php .php
Aqui procure pela palavra "AddType" e procure adicionar na linha abaixo, para manter o arquivo organizado.
Configure o seu DocumentRoot, aqui irei utilizar o /var/www/html e inicie o seu Apache - Configure agora o seu LDAP
Adicione no /etc/syslog.conf as seguinte linha:#Save ldap messages local.4* /var/log/ldap
Reinicie o syslogservice syslog restart
Vamos editar o arquivo slapd.conf em /etc/openldap, dentro do arquivo procure pelo campo "ldbm and/or bdb database definitions" e adicione as seguintes linhas:database bdb suffix "dc=podiumjundiai" rootdn "cn=adm,dc=podiumjundiai,dc=intranet"
Obs.:Troque os campos podiumjundiai e intranet pelo seu domínio
Ainda nesse arquivo adicione um rootpw, é recomendado que insira uma senha cifrada aqui para isso use o comando slappassword$slappassword New password: Re-enter new password:
Ij+9Nx490e7W9zAolkcOg+uRnwg
Copie e cole a ultima linha no campo rootpw ficando assim:rootpw
Ij+9Nx490e7W9zAolkcOg+uRnwg
Crie um arquivo chamado base.ldif e insira as seguintes configurações:
#-------------------------inicio-------------------------- dn: dc=podiumjundiai,dc=intranet dc: podiumjundiai objectClass: top objectClass: domain dn: ou=Usuarios,dc=podiumjundiai,dc=intranet ou: Usuarios objectClass: top objectClass: organizationalUnit #-------------------------fim--------------------------
Vamos inserir essas informações no ldap para isso faça:
#ldapadd -x -D cn=adm,dc=podiumjundiai,dc=intranet -W -f base.ldif Enter LDAP Password: adding new entry "dc=podiumjundiai,dc=intranet" adding new entry "ou=Usuarios,dc=podiumjundiai,dc=intranet"
Executando o comando ldapsearch deve aparecer as seguintes informações:
[root@constantine renato]# ldapsearch -x # extended LDIF # # LDAPv3 # base <> with scope sub # filter: (objectclass=*) # requesting: ALL # # podiumjundiai.intranet dn: dc=podiumjundiai,dc=intranet dc: podiumjundiai objectClass: top objectClass: domain # Usuarios, podiumjundiai.intranet dn: ou=Usuarios,dc=podiumjundiai,dc=intranet ou: Usuarios objectClass: top objectClass: organizationalUnit
Pronto sua base ldap esta pronta.
- Vamos configurar agora o phpldapadmin
Descompacte o arquivo em /var/www/htmlunzip phpldapadmin-0.9.6c.zip
Entre na pasta descompactada e faça:cp config.php.example config.php
Altere as linhas do arquivo config.php:$servers[$i]['name'] = 'My LDAP Server';
Adicione aqui o nome do seu servidor, ex.: 'Servidor LDAP Podium Jundiai'$servers[$i]['host'] = 'ldap.example.com';
Adicione aqui o endereço do seu servidor, ex.: '192.168.1.230'$servers[$i]['base'] = 'dc=example,dc=com';
Adicione aqui o seu DN, ex.: 'dc=podiumjundiai,dc=intranet'$servers[$i]['login_dn'] = 'cn=Manager,dc=example,dc=com';
Adicone aqui o seu rootdn, ex.: 'cn=adm,dc=podiumjundiai,dc=intranet';$servers[$i]['login_pass'] = 'secret';
Adicione a senha para acesso a base ldap, ex.: 'minhasenha' Obs.:É a mesma senha inserida na slapd.conf porem sem ser criptografada.
Salve e saia, digite no seu browser o http://IP_do_servidor_ldap/phpldapadmin, se tudo foi feito corretamente irá aparecer a tela do phpldapadmin junto com a base ldap criada, agora é só começar a adicionar os usuários.
Salve e saia, vamos agora editar o arquivo ldap.conf, dentro do arquivo insira as seguintes linhas: - Configurar as estações linux FC3 para autenticar no LDAP
Edite o arquivo nsswitch.conf:vi /etc/nsswitch.conf
Procure pelas linhas abaixo e adicione o ldap na frentepasswd: files ldap shadow: files ldap group: files ldap
Agora edite o arquivo ldap.conf em /etc/ldap.conf e adicione o endereço e a base do servidor LDAP (Procure pelas linhas host e base)host 192.168.1.230 base dc=podiumjundiai,dc=intranet
Troque o /ect/pam.d pelo pam.d que esta em /usr/share/doc/nss_ldap-220/pam.d# mv /etc/pam.d /etc/pam.d.ori # cp -R /usr/share/doc/nss_ldap-220/pam.d /etc/pam.d
Pronto sua estação linux com FC3 já esta autênticando em uma base ldap
Renato e. Pagano, Podium Tecnologia em Redes, www.podium.com.br
Fonte: http://www.dicas-l.com.br/print/20050616.html
Usando políticas de senhas em diretórios LDAP
Usando políticas de senhas em diretórios LDAP
Colaboração: Gabriel Menezes Nunes
Vou descrever nesse artigo uma maneira que encontrei de usar os recursos de políticas de senhas em diretórios LDAP. Essa é uma ótima maneira de reforçar a segurança total da sua infra-estrutura da rede, pois um usuário com senha fraca pode colocar em risco todo um planejamento feito durante muito tempo. Caso um servidor seja penetrado por um intruso, devido a uma conta com senha fraca, o invasor estará a um passo de uma possível escalada de privilégios e total comprometimento da máquina em questão. Então, uma "cartilha" de políticas a serem usadas numa rede que contém dados privados de usuários, é crucial para qualquer pequena ou grande empresa.
Procurei muito por esse assunto na internet, mas não encontrei uma documentação interessante usando o OPENLDAP (http://www.openldap.org).
Esse artigo irá apenas demonstrar a instalação e configuração do schema "ppolicy", usado nas políticas de senhas no servidor. Qualquer configuração adicional do LDAP ou configuração do cliente estão fora do escopo desse documento.
Para usar os atributos LDAP de aplicação de senhas fortes, será necessário o PAM. Logo distribuições que não o usem, como o SLACKWARE, não serão afetadas e irão ignorar qualquer bloqueio de usuário ou expiração de senha. Nessas distros, você terá que compilar o PAM , e recompilar alguns pacotes como OpenSSH e Shadow.
Começando pela instalação a partir do código fonte:
Pegue o OpenLDAP mais atual (http://www.openldap.org/software/download) Estou usando a versão 2.3.23
tar xvzf openldap-2.3.23.tgz
Agora vem uma parte interessante: a alteração do código fonte!
Teremos que alterá-lo para podermos usar as políticas de senhas diferentes para cada usuário, e não apenas uma genérica para a base de dados inteira, e também para podermos modificar alguns atributos operacionais que o OpenLDAP padrão não nos deixa modificar.
Então vamos "hackear" o OpenLDAP !!!
Entre no diretório "servers/slapd/overlays" dentro da pasta do openldap.
cd openldap-2.3.23/servers/slapd/overlays
Dentro desse diretório localize e abra o arquivo ppolicy.c, de preferência com um editor que localize facilmente uma string de busca!
kate ppolicy.c
Aberto o arquivo, retire todas as strings "NO-USER-MODIFICATION" dos atributos do schema.
Explicando melhor, schema é um conjunto de atributos e classes usados no LDAP para guardar dados específicos do usuário. Caso esse atributo esteja como "NO-USER-MODIFICATION", ele não poderá ser mudado para usuários normais, logo não será possível uma política individual para cada um no seu banco de dados. Exemplos de schema podem ser samba.schema, para uso do samba com ldap, ou até mesmo um schema feito por um administrador para uso privado e exclusivo da empresa, usando atributos como RG, número do funcionário, salário, andar em que se localiza no prédio, etc.
Arquivo alterado, e só salvar, e agora iremos compilar
Volte ao diretório base do openldap
cd ../../.. ./configure --enable-overlays --enable-lmpasswd --enable-crypt
A parte mais importante é habilitar todos os "overlays", mais especificamente o "ppolicy". LMPasswd é para manter alguma compatibilidade com o samba, caso queira integrá-lo ao LDAP, e "crypt" mantém compatibilidade com sistemas que não usam PAM, como o SLACKWARE.
Caso dê algum problema com o Berkeley DB, exporte o CPPFLAGS: export CPPFLAGS="-I/usr/include/db4" ou onde estiver os includes do Berkeley DB. Repita o configure
E para terminar a instalação
make make install
Para configurar o ppolicy será necessário apenas a adição de uma linha ao slapd.conf
overlay ppolicy
Pronto! Já temos as políticas de senhas rodando no servidor.
Para testar podemos montar um LDIF:
lock_user.ldif ----------------------------------------------- dn: uid=gabriel,dc=servidor,dc=org,dc=br changetype: modify add: pwdAccountLockedTime pwdAccountLockedTime: 000001010000Z -----------------------------------------------
e adicionamos
ldapmodify -x -D 'cn=admin,dc=servidor,dc=org,dc=br' -w senha_do_ldap -f lock_user.ldif
A partir desse comando esse usuário estará bloqueado no servidor e não poderá mais logar. Para permitir sua autenticação:
unlock_user.ldif ----------------------------------------------- dn: uid=gabriel,dc=servidor,dc=org,dc=br changetype: modify delete: pwdAccountLockedTime ----------------------------------------------- ldapmodify -x -D 'cn=admin,dc=servidor,dc=org,dc=br' -w senha_do_ldap -f unlock_user.ldif
O servidor volta a permitir o usuário "gabriel" a se autenticar na base de dados.
Para mais atributos e manipulação de tais políticas, olhe no arquivo ppolicy.schema no diretório schema do OpenLDAP ou no Google!!!
Fonte: http://www.dicas-l.com.br/print/20060621.html
Achando os pacotes RPM que contém depedências não resolvidas
Achando os pacotes RPM que contém depedências não resolvidas
Colaboração: Rodrigo Senra
As distribuições de linux baseadas em RedHat(Fedora,Mandrake,Conectiva) utilizam o formato RPM para gerência de pacotes. Ao se tentar instalar um determinado RPM. muitas vezes há uma recusa de instalação devido a uma depedência não resolvida.
O utilitário RPM avisa o nome do arquivo pendente, mas não avisa em que pacote RPM ele se encontra. O script Python abaixo auxilia a descoberta do RPM que contém um determinado arquivo, realizando uma busca exaustiva no diretório de pacotes rpm.
#------------ início do arquivo findrpm.py #!/usr/bin/env python # uso: findrpm.py <nome do arquivo> <diretório com pacotes .rpm> # respeite a indentação (alinhamento) abaixo import sys import glob import popen2 import os.path files = glob.glob(os.path.join(sys.argv[2],'*.rpm')) print 'Procurando em %d pacotes'%(len(files)) for file in files: print 'Processando %dr'%files.index(file), sys.stdout.flush() outfd,infd = popen2.popen2('rpm -qlp %s'%(file)) for line in outfd.readlines(): if line.find(sys.argv[1])>=0: print 'n',sys.argv[1],' -> ',file break #---------------------- fim do arquivo
Fonte: http://www.dicas-l.com.br/print/20041021.html
Descobrindo a que pacote pertence um arquivo no Slackware
Descobrindo a que pacote pertence um arquivo no Slackware
Colaboração: Marcelo de Freitas Andrade
Uma dificuldade comum de usuários de sistemas baseados em RPM ou Debian quando passam a utilizar Slackware é descobrir a que pacote pertence um certo arquivo. Em sistemas que usam RPM isto é fácil, o próprio comando
rpm -qf arquivo_qualquer
retornará o nome do pacote instalado que contém o arquivo_qualquer.
Para o Debian, o comando seria
dpkg -S
Já em sistemas Slackware o gerenciamento de pacotes é ligeiramente diferente. A listagem de pacotes instalados e removidos encontra-se em /var/log/packages e /var/log/removed_packages respectivamente.
Assim para descobrir a que pacote pertence um arquivo instalado, por exemplo, a biblioteca libdb4.2, pode-se fazer
cd /var/log/packages grep -lir 'libdb' *
Neste caso, as opções do comando grep significam:
- -l - lista nome do arquivo cujo conteúdo contém o padrão
- -i - insensível à caixa, ou seja, não diferencia maiúsculas e minúsculas
- -r - procura a estrutura de arquivos recursivamente
E ainda 'libdb' é o que se deseja procurar (os números foram omitidos apenas para retornar qualquer versão do arquivo) e * é o conjunto de arquivos a procurar. No caso, como estamos em /var/log/packages, será retornado justamente o nome do arquivo (mesmo nome do pacote) que contém o padrão procurado.
II Dia-Debian GNU/Linux
Em comemoração ao 12° aniversário do Projeto Debian, a comunidade Debian através de seus GUDs regionais (Grupo de usuários Debian) estará organizando o evento 'II Dia-D' (Segundo Dia Debian). O evento tem como objetivo apresentar e divulgar o Projeto Debian no Brasil, Palestras, oficinas, workshops e debates sobre o Projeto Debian, Linux e Software Livre acontecerão durante todo o dia, destinadas tanto aos que já conhecem esses temas quanto ao público em geral. Uma 'Install Fest' ocorrerá em paralelo, para aqueles que desejam instalar o Debian em seus computadores pessoais.
No Rio de Janeiro o Dia-D será realizado no dia 13 de Agosto de 2005,das 08:30 às 18:30 hrs, no Instituto de Física da UFF, em Niterói. Estacionamento gratuito. Traga a família e aprenda se divertindo na "Casa da Descoberta".
A programação completa está disponível em http://www.rj.debianbrasil.org, onde devem ser feitas as inscrições.
Fonte: http://www.dicas-l.com.br/print/20050805.html
Configuração honeyd
Configuração honeyd
Colaboração: Pedro Augusto
No artigo "Introdução aos honeypots" (disponível aqui: http://www.pedroaugusto.eti.br/?q=node/7), expliquei uma boa quantidade de teoria em relação aos honeypots (como aplicação, tipos, história...) porém sem focar em qualquer ferramenta para implementação do honeypot. Aqui, irei focar na implantação de um honeypot utilizando OpenBSD e HoneyD. Vamos criar alguns hosts Windows e Linux.
1. O Honeyd
O Honeyd é um daemon desenvolvido por Niels Provos para ser utilizado tanto em Windows quanto *nix.
Ele funciona criando "hosts virtuais" os quais podem ser configurados para emular vários serviços diferentes como e-mail, SSH, Telnet, DNS, backdoors como o MyDoom, etc. Além de emular serviços, o Honeyd também pode enganar scanners de rede fingindo ser outro sistema operacional. Por exemplo, você consegue emular um roteador Cisco, um Windows XP, Windows 2000, Windows Server 2003, Cisco IOS, OS/400, entre vários outros. Ele consegue isso utilizando o banco de dados de fingerprints do NMap (http://www.insecure.org/nmap). Para que você possa emular vários sistemas operacionais com maior veracidade, o Honeyd também permite que você utilize vários endereços IP e associe cada "host virtual" com um endereço IP diferente.
A melhor característica do Honeyd é ser software livre licensiado sob a GPL, ou seja, use à vontade para qualquer finalidade. Ele também é utilizado bastante pelo Honeynet.BR Project (entidade brasileira de pesquisa de honeypots).
Se você quiser conhecer mais sobre o projeto, visite o website oficial http://www.honeyd.org. Aproveite e dê uma ajuda ao desenvolvedor!
2. Instalação do Honeyd
A instalação do Honeyd é bem simples. Se você estiver usando algum BSD, utilize o ports para instalar e poupe um pouco de tempo não precisando resolver as dependências na mão.
Se você vai compilar o Honeyd, o procedimento também não é muito complicado, mas é um pouco demorado. Faça o seguinte:
- Acesse o site do Honeyd e baixe os sources mais recentes: http://www.citi.umich.edu/u/provos/honeyd/honeyd-1.5b.tar.gz
- O Honeyd precisa de algumas bibliotecas para ser compilado com sucesso. Você precisa do Python, do Perl, da libevent (http://www.monkey.org/~provos/libevent/), da libdnet (http://libdnet.sourceforge.net/) e da libpcap (http://www.tcpdump.org/). A instalação dessas dependências é extremamente simples (em quase todas se resumindo a ./configure, make, make install), por isso não vou entrar em detalhes aqui.
- Instale o arpd (http://www.citi.umich.edu/u/provos/honeyd/arpd-0.2.tar.gz)
- Agora já é possível compilar o Honeyd.
3. Configuração
O ambiente que eu usei para fazer a configuração do meu honeypot foi usando um OpenBSD com o Honeyd instalado através dos ports, assim a localização dos arquivos mostrada aqui é a localização padrão no OpenBSD. Se você estiver usando algum outro sistema, utilize o find ou o locate para procurar pelo nome dos diretórios mostrados aqui.
O arquivo de configuração principal é o /etc/honeyd.conf. Nele você irá definir as máquinas que serão emuladas, quais serão os IP's, os serviços, etc. O arquivo nmap.prints tem os fingerprints de todos os sistemas operacionais que podem ser emulados pelo Honeyd (sempre mantenha esse arquivo atualizado com a última versão disponibilizada pelo time do NMap para garantir que seu honeypot continuará enganando o NMap e outros scanners). No OpenBSD, o nmap.prints fica localizado em /usr/local/share/honeyd/nmap.prints. O Honeyd usa scripts (Perl e Shell script) para emular os serviços que você quer no seu honeypot. Esses scripts ficam localizados em /usr/local/share/honeyd/scripts. Você também pode desenvolver ou baixar esses scripts de outros sites na Internet, um exemplo é o site http://www.honeyd.org/contrib.php. Existem também várias ferramentas muito úteis para o Honeyd, como essas: http://www.honeyd.org/tools.php.
Agora que você já tem um conhecimento básico para "se virar" utilizando o Honeyd, vamos partir para a configuração.
Aqui, vou te mostrar como criar uma máquina Windows XP Professional SP1 e um Linux 2.4.16. Com essas máquinas você já vai conseguir capturar coisas interessantes.
Abra o arquivo /etc/honeyd.conf para criarmos os hosts. Ele já vem com alguns modelos de host, comente todas as linhas desses exemplos mas não comente o profile "default".
Vamos criar uma máquina Windows XP Professional SP1 que estará infectada com o backdoor MyDoom. Para isso, adicione as linhas abaixo no seu honeyd.conf:
create windowsxp-mydoom set windowsxp-mydoom personality "Microsoft Windows XP Professional SP1" set windowsxp-mydoom uptime 2314219 set windowsxp-mydoom default tcp action reset set windowsxp-mydoom default udp action reset set windowsxp-mydoom default icmp action open set windowsxp-mydoom uid 32767 gid 32767 add windowsxp-mydoom tcp port 1080 "perl scripts/mydoom.pl -l /root/logs-honeypot/mydoom/mydoom.log" add windowsxp-mydoom tcp port 3127 "perl scripts/mydoom.pl -l /root/logs-honeypot/mydoom/mydoom.log" add windowsxp-mydoom tcp port 3128 "perl scripts/mydoom.pl -l /root/logs-honeypot/mydoom/mydoom.log" add windowsxp-mydoom tcp port 10080 "perl scripts/mydoom.pl -l /root/logs-honeypot/mydoom/mydoom.log" bind 192.168.0.1
Pronto, a máquina já está criada e associada ao IP 192.168.0.1. Segue uma explicação dos parâmetros:
- create windowsxp-mydoom: define que criaremos o host windowsxp-mydoom
- set windowsxp-mydoom personality "Microsoft Windows XP Professional SP1": define a personalidade a ser usada para esse host
- set windowsxp-mydoom uptime 2314219: define qual vai ser o uptime da máquina
- set windowsxp-mydoom default tcp action reset & set windowsxp-mydoom default udp action reset & set windowsxp-mydoom default icmp action open: definem a ação padrão das portas TCP, UDP e ICMP.
- set windowsxp-mydoom uid 32767 gid 32767: define qual será o UID e o GID a ser usado para esse script
- add windowsxp-mydoom tcp port 1080 "scripts/mydoom.pl -l /root/logs-honeypot/mydoom/mydoom.log": é aqui que definimos que o Honeyd deverá simular o MyDoom na porta 1080 (o mesmo acontece nas outras 3 linhas). 1080 é a porta que vai escutar por tráfego, "scripts/mydoom.pl..." define que script ficará sendo executado naquela porta. No caso desse script (mydoom.pl), é interessante que se defina o log que ele vai gerar com o tráfego que recebe. Para isso utilizamos a opção -l e o caminho para o log (o caminho obviamente já deve existir).
- bind 192.168.0.1: define que esta máquina atenderá as requisições de IP que forem destinadas a 192.168.0.1
Como você pode ver, é extremamente fácil definir os hosts no Honeyd. Como outro exeplo, vou criar um servidor de email Linux utilizando kernel 2.4:
create linux set linux personality "Linux 2.4.16 - 2.4.18" set linux default tcp action reset set linux default udp action reset set linux uptime 3284460 add linux tcp port 110 "sh scripts/pop3.sh" add linux tcp port 25 "sh scripts/smtp.sh" add linux tcp port 22 "sh scripts/test.sh $ipsrc $dport" bind 192.168.0.2 linux
No geral, esta configuração é muito parecida com a máquina Windows. O que difere bastante são os scripts utilizados para emular serviços:
- pop3.sh: emula um serviço POP3 na porta 110
- smtp.sh: emula um serviço de SMTP na porta 25
- teste.sh $ipsrc $dport: emula o SSH, logando o IP de origem (de quem se conectou ao script) e em qual porta.
Para qualquer outra máquina que você quiser criar, é só seguir essa mesma lógica que demonstrei nos exemplos. Só preste bastante atenção para não configurar por engano o IIS numa máquina Linux, isso faria o atacante desconfiar (faria qualquer um desconfiar :)). Para você verificar quais sistemas operacionais você vai poder emular usando o Honeyd, é só executar o seguinte comando:
# grep "^Fingerprint" nmap.prints | less
A lista é bem grande, por isso fica melhor para você escolher se redirecionar a saída desse comando para um arquivo.
4. Configurando o firewall
A configuração do firewall no honeypot é importante pois se você não configurar sua máquina para aceitar conexões para os IP's que definiu para os hosts virtuais (lembre-se que esses endereços devem ser reais na sua rede e não podem ser usados por nenhuma outra máquina), seu Honeyd não funcionará.
Garantir a segurança do honeypot é muito importante, por isso preste bastante atenção no que está fazendo aqui.
5. Inicializando o Honeyd
Antes de inicializar o Honeyd e partir para a ação, tenha certeza de que você vai ter algum tráfego sendo redirecionado para o seu honeypot. Para fazer isso, você pode usar o arpd para o seu honeypot responder pelos endereços desocupados da sua rede (o que pode fazer um servidor DHCP travar). Do modo que mostrei na configuração acima, só será logado o tráfego que realmente for direcionado para o honeypot.
Para você utilizar o ARPd, você só precisa especificar a rede que ele vai ouvir. Quando ele ouvir alguma requisição ARP passando pela rede, ele irá checar se alguém tem o IP, se ninguém tiver, ele responderá como se fosse o IP requisitado. Para iniciar o ARPd:
# arpd < rede a ser monitorada >
Por exemplo,
# arpd 192.168.0.0/24
Quando você usa o ARPd, o profile de host que irá responder é o "default" (lembre-se, para usar o ARPd você não pode usar a cláusula "bind" para o host que você criar no honeyd.conf). Esse profile já vem criado no honeyd.conf quando você instala o Honeyd. Se você criar outras profiles e definir um IP para elas utilizando a cláusula "bind" no honeyd.conf, o Honeyd irá responder com o profile default para todos os IP's da rede menos para o IP que você configurou para o host utilizando o "bind". Simples não?
Com tudo o que foi explicado e resolvido, podemos iniciar o Honeyd:
# honeyd -p nmap.prints -f /etc/honeyd.conf 192.168.0.0/24
Assim, os seus hosts virtuais que têm IP definido, responderão normalmente e o profile default que não tem um IP definido, responderá por todos os endereços que não são utilizados na sua rede.
6. Ferramentas complementares
O Honeyd tem algumas ferramentas complementares que aumentam a funcionalidade dele. Um bom exemplo desse tipo de ferramenta é o Honeydsum.
Ele é um analisador de Logs desenvolvido pelo time brasileiro da Honeynet-Alliance. Com ele você pode filtrar os logs do Honeyd procurando por endereços IP, portas, protocolos ou redes além de poder relacionar os eventos logados em vários honeypots diferentes. Veja mais aqui: http://www.honeynet.org.br/tools/.
O Honeycomb também é outra ferramenta extremamente útil. Com ela você consegue gerar assinaturas para software de detecção de intrusão como o Snort. É especialmente útil para criar assinaturas de worms. Foi este software que criou as assinaturas para o Slammer e Code Red. Você pode encontrá-lo neste link http://www.cl.cam.ac.uk/~cpk25/honeycomb/.
Dois sites com ferramentas para o Honeyd são http://www.honeyd.org/tools.php e http://www.honeynet.org.br/tools/. Com certeza você encontrará mais ferramentas em outros sites da Internet, é só procurar no Google.
7. Conclusão
O Honeyd não é uma ferramenta complexa, mas deve ser implantada na rede da forma correta para que consiga ajudar de forma efetiva o administrador a monitorar tráfego malicioso e tomar providências. Claro que o Honeyd sozinho não vai ser de grande ajuda. Você precisa utilizar outras ferramentas para complementar o trabalho dele. Um exemplo é o Snort, um detector de intrusos. Utilizando os 2 em conjunto, você irá ter uma solução para monitoramento de tráfego extremamente eficiente sem gastar quase nada.
Se você tiver alguma sugestão ou dúvida em relação a este artigo, mande um email para <pedro (a) pedroaugusto eti br>.
Fonte: http://www.dicas-l.com.br/print/20070322.html
Compactados auto-extratores com bash script e tar
Compactados auto-extratores com bash script e tar
Colaboração: Marcelo Criscuolo
Recentemente me deparei com o problema de criar um arquivo compactado que fosse capaz de se "auto-descompactar" e realizar algumas outras "tarefinhas burocráticas". Lembrei-me então que o instalador do J2SDK da Sun para Linux é um shell script e resolvi descobrir como ele era feito. A solução é bem elegante e simples de ser implementada, trata-se de criar um arquivo composto por um shell script no início e o arquivo compactado (binário) no final.
Suponhamos que você deseja compactar todo o diretório basedados que contém scripts SQL e enviá-lo para alguém de maneira que seja necessário apenas um comando como ./atualizar-base.sh para o arquivo seja descompactado e a base seja atualizada com base nos arquivos contidos no diretório.
Para começar, o velho tar resolve a primeira parte do problema:
tar cvzf basedados.tar.gz basedados/``
Agora precisamos do script que vai fazer o "trabalho sujo", o atualizar-base-codigo.sh:
#!/bin/bash # extraindo o arquivo tail -n +XX $0 > basedados.tar.gz # linha IMPORTANTE # Descompactando o arquivo extraído tar xzf basedados.tar.gz # Arquivo descompactado, hora de rodar os scripts for i in basedados/*; do echo "Rodando o script $i" # Aqui você poderia rodar os scripts. Por exemplo, # se a base da dados fosse Postgres você poderia # fazer: psql -U usuario base -c "i $i" , para # rodar todos os scripts do diretório done exit 0 # outra linha IMPORTANTE
É hora de fazer o nosso trabalho sujo agora:
Vamos contar as linhas do arquivo:
wc -l atualizar-base-codigo.sh``
Preste atenção às linhas marcadas com IMPORTANTE.
Nesse caso o wc retorna 18, re-edite o arquivo e substitua o XX da primeira linha marcada como importante por 19 (18+1), salve o arquivo sem adicionar mais nenhuma linha. Vamos juntar tudo agora:
cat atualizar-base-codigo.sh basedados.tar.gz > atualizar-base.sh``
Pronto! Concatenamos um arquivo texto e um binário!
O tail extrai as linhas finais de um arquivo, mas quando o número de linhas é precedido pelo sinal + ele extrai todo o final do arquivo, daquela linha em diante (veja man tail), é esse o papel do -n +19.
No nosso exemplo, o tail vai extrair o final do próprio shell script (a variável $0 é expandida para o nome do arquivo atual) a partir da linha 19, que corresponde ao arquivo basedados.tar.gz contenado a ele anteriormente.
Por o último, o > basedados.tar.gz é responsável por escrever a saída do tail num arquivo ao invés de escrever na tela.
O arquivo é descompactado com o tar na linha seguinte e o seu conteúdo é processado pelo for.
Finalmente, na segunda linha marcada com IMPORTANTE, tem-se o exit 0; esse comando serve para dizer ao bash que pare de interpretar o script antes de atingir os dados binários.
Um aviso importante: não edite mais o arquivo gerado pelo cat pois se o editor colocar um EOF no final o seu arquivo compactado será corrompido. É por isso que se usa o arquivo atualizar-base-codigo.sh para fazer a edição.
Outra coisa legal que dá pra fazer com isso é gerar patches auto-aplicáveis. Ao invés de concatenar o arquivo com um compactado você concatena com a saída do diff (o patch). Neste caso o exit 0 também é essencial, pela mesma razão citada anteriormente, mas agora o arquivo gerado pode ser editado, já que um EOF a mais ou a menos não faz diferença para o patch. ;-)
Fonte: http://www.dicas-l.com.br/print/20050916.html
Enviando dados por ftp
Enviando dados por ftp
Colaboração: Francisco A Silva
Um uso interessante do ftp é a possibilidade de enviar dados para uma maquina remota como backup ou enviar dados para serem processados por um sistema de EDI. Abaixo apresento um script simples que resolve este problema. Vale lembrar que o usuario deve existir na maquina remota.
#!/bin/bash # ############################################ # # # # # autor: FRANCISCO A SILVA # # # data : 25/03/2004 # # # este script tem a finalidade de fazer # # # diariamente o backup do servidor de # # # e-mail para o servidor de backup # # ############################################ HOST='192.168.1.11' # identificacao do servidor destino USER='gunman' # usuario remoto no servidor destino PASSWD='gunmanmail' # senha usuario remoto FILE1='gunmanmail.tar' # definicao do arquivo 1 FILE2='gunmanhome.tar' # definicao do arquivo 2 FILE3='gunman-etc.tar' FILE4='gunman-dns.tar' tar -cvzf /home/tmp/$FILE1 /var/mail/* # criacao do arquivo 1 tar -cvzf /home/tmp/$FILE2 /home/* # criacao do arquivo 2 tar -cvzf /home/tmp/$FILE3 /etc/* # criacao do arquivo 3 tar -cvzf /home/tmp/$FILE4 /var/named/* # criacao do arquivo 4 ftp -n $HOST <<END_SCRIPT # abre sessao ftp user $USER $PASSWD # loga o usuario lcd /home/tmp/ # muda de diretorio local bin # alterna para o modo binario put $FILE1 # enviar arquivo1 put $FILE2 # enviar arquivo2 put $FILE3 # enviar arquivo3 put $FILE4 # enviar arquivo4 END_SCRIPT # finaliza o script rm /home/tmp/$FILE1 # remove arquivos rm /home/tmp/$FILE2 rm /home/tmp/$FILE3 rm /home/tmp/$FILE4 exit 0 # sai do script
Uma entrada no crontab para automatizar a rotina ficaria assim (considerando que o script esteja em /usr/bin/ftpenvia.sh com direitos de execucão):
# Rotina de backup 04 4 * * * /usr/bin/ftpenvia.sh
Fonte: http://www.dicas-l.com.br/print/20060227.html
Impressão remota via web
Impressão remota via web
Colaboração: Arnaldo Estevão
Para quem tiver um aplicativo rodando em um servidor Apache, escrito em CGI/perl ou PHP, e desejar imprimir em uma impressora matricial remota de nota fiscal por exemplo, a solucão que desenvolvi pode ser usada tanto em Linux, quanto em Windows e é totalmente livre.
Importante considerar que a maquina cliente nao precisa manter nenhuma porta aberta, o sistema é capaz de atravessar firewall e roteadores sem necessidade de estabelecer uma conexão ponto a ponto, assim eu posso colocar o servidor de impressão remota em qualquer maquina de uma subrede local, atras de um roteador de adsl sem ip fixo, um adsl doméstico por exemplo.
Neste exemplo foi usado Slackware 11.0
1. Criando os diretorios necessarios no servidor WEB
mkdir /var/spool/webpserver chown nobody.nobody /var/spool/webpserver
Agora digite ou copie o arquivo webpserver.cgi no diretorio /var/www/cgi-bin
No nosso exemplo vamos usar uma fila chamada notafiscal
mkdir /var/spool/webpserver/notafiscal chown nobody.nobody /var/spool/webpserver/notafiscal
para imprimir um arquivo basta copiar para dentro da fila ex:
cp /etc/meuarquivo /var/spool/webpserver/notafiscal
Isso pode ser feito de dentro so PHP ou do script CGI gerando o arquivo com o conteudo a ser impresso e depois copiando para o diretorio da fila correspondente
2. webpserver.cgi
#!/usr/bin/perl use CGI qw/:standard/; print header; $fila=param('fila'); $nfiles = 0 ; $t0 = time ; while ( ( $nfiles == 0 ) and (time - $t0 < 30) and time >= $t0 ) { @files = </var/spool/webpserver/$fila/*> ; $nfiles = $#files + 1 ; sleep 1 ; } while (</var/spool/webpserver/$fila/*>){ $file = $_; $txt=`cat $file`; print $txt ; system("rm $file") ; }
3. webpserver.bat (cliente windows)
este arquivo deve ser chamado no autoexec.bat ou por um atalho no menu inciar substitua seusite.com.br pelo ip ou pelo nome do seu servidor WEB
@echo off echo Servidor de impressao mkdir c:fila > nul: :inicio c:filawget -O c:filat.txt http://seusite.com.br/cgi-bin/webpserver.cgi?fila=nostafiscal find "0" c:filat.txt if errorlevel 1 goto inicio Echo Imprimindo ----------------------------------------------------- type c:filat.txt copy c:filat.txt lpt1 goto inicio
4. rc.webpserver (cliente linux)
Coloque este arquivo em /etc/rc.d e depois de o atributo de executável para ele chmod +x /etc/rc.d/rc.webpserver e faça uma chamada para ele no rc.local acrescentando a linha /etc/rc.d/rc.webpserver &
#!/usr/bin/perl while ( 1 eq 1) { print "Servidor de impressaon"; system("wget -O /tmp/t.txt http://seusite.com.br/cgi-bin/webpserver.cgi?fila=notafiscal"); $txt = `/tmp/cat t.txt`; if (not index($txt,"0") <= 0 ) { print "Imprimindo"; print $txt ; system("cat /tmp/t.txt > /dev/lp0"); } }
Fonte: http://www.dicas-l.com.br/print/20061214.html
Numeração de linhas com o comando cat
Numeração de linhas com o comando cat
Colaboração: Rubens Queiroz de Almeida
Se você quiser numerar as linhas de um arquivo, o comando cat pode fazer isto para você. O comando
cat -n teste
irá exibir na tela todas as linhas do arquivo teste precedidas por uma numeração. Caso você queira salvar o arquivo com a numeração, basta redirecionar a saída do comando para um outro arquivo:
cat -n teste > teste01
Fonte: http://www.dicas-l.com.br/print/19990514.html
Conceitos sobre Tipos, Utilização e Gerenciamento de Backups
Conceitos sobre Tipos, Utilização e Gerenciamento de Backups
Colaboração: Renato José Rudnicki
Neste artigo, pretendo explicar um pouco sobre o que é um backup, quais os tipos, mídias usuadas e alguns conceitos importantes. Hoje é impossível pensar em uma empresa que não tenha backup, independente de se for pequena média ou grande. Em um próximo artigo, falarei sobre que tipos de backup tem um melhor custo/benefício dependendo do ambiente local.
1. Visão geral sobre Backup
O utilitário Backup ajuda a proteger os dados de perdas acidentais se ocorrerem falhas de hardware ou de mídia de armazenamento no sistema. Por exemplo, você pode usar o utilitário Backup para criar uma cópia dos dados que estão no disco rígido e arquivá-los em outro dispositivo de armazenamento. A mídia de armazenamento de backup pode ser uma unidade lógica, como um disco rígido, um dispositivo de armazenamento separado, como um disco removível, ou uma biblioteca inteira de discos ou fitas organizados e controlados por alterador robótico. Se os dados originais do disco rígido forem apagados ou substituídos acidentalmente ou se ficarem inacessíveis devido a um defeito do disco rígido, você poderá restaurar facilmente os dados usando a cópia arquivada.
2. Tipos de Backups
Se você perguntar a alguém que não é familiarizado com backups, a maioria pensará que um backup é somente uma cópia idêntica de todos os dados do computador. Em outras palavras, se um backup foi criado na noite de terça-feira, e nada mudou no computador durante o dia todo na quarta-feira, o backup criado na noite de quarta seria idêntico àquele criado na terça. Apesar de ser possível configurar backups desta maneira, é mais provável que você não o faça. Para entender mais sobre este assunto, devemos primeiro entender os tipos diferentes de backup que podem ser criados. Estes são:
- Backups completos
- Backups incrementais
- Backups diferenciais
3. Backups Completos
Este tipo consiste no backup de todos os arquivos para a mídia de backup. Conforme mencionado anteriormente, se os dados sendo copiados nunca mudam, cada backup completo será igual aos outros. Esta similaridade ocorre devido o fato que um backup completo não verifica se o arquivo foi alterado desde o último backup; copia tudo indiscriminadamente para a mídia de backup, tendo modificações ou não. Esta é a razão pela qual os backups completos não são feitos o tempo todo Todos os arquivos seriam gravados na mídia de backup. Isto significa que uma grande parte da mídia de backup é usada mesmo que nada tenha sido alterado. Fazer backup de 100 gigabytes de dados todas as noites quando talvez 10 gigabytes de dados foram alterados não é uma boa prática; por este motivo os backups incrementais foram criados.
4. Backups Incrementais
Ao contrário dos backups completos, os backups incrementais primeiro verificam se o horário de alteração de um arquivo é mais recente que o horário de seu último backup. Se não for, o arquivo não foi modificado desde o último backup e pode ser ignorado desta vez. Por outro lado, se a data de modificação é mais recente que a data do último backup, o arquivo foi modificado e deve ter seu backup feito. Os backups incrementais são usados em conjunto com um backup completo frequente (ex.: um backup completo semanal, com incrementais diários).
A vantagem principal em usar backups incrementais é que rodam mais rápido que os backups completos. A principal desvantagem dos backups incrementais é que para restaurar um determinado arquivo, pode ser necessário procurar em um ou mais backups incrementais até encontrar o arquivo. Para restaurar um sistema de arquivo completo, é necessário restaurar o último backup completo e todos os backups incrementais subsequentes. Numa tentativa de diminuir a necessidade de procurar em todos os backups incrementais, foi implementada uma tática ligeiramente diferente. Esta é conhecida como backup diferencial.
5. Backups Diferenciais
Backups diferenciais são similares aos backups incrementais pois ambos podem fazer backup somente de arquivos modificados. No entanto, os backups diferenciais são acumulativos, em outras palavras, no caso de um backup diferencial, uma vez que um arquivo foi modificado, este continua a ser incluso em todos os backups diferenciais (obviamente, até o próximo backup completo). Isto significa que cada backup diferencial contém todos os arquivos modificados desde o último backup completo, possibilitando executar uma restauração completa somente com o último backup completo e o último backup diferencial. Assim como a estratégia utilizada nos backups incrementais, os backups diferenciais normalmente seguem a mesma tática: um único backup completo periódico seguido de backups diferenciais mais frequentes. O efeito de usar backups diferenciais desta maneira é que estes tendem a crescer um pouco ao longo do tempo (assumindo que arquivos diferentes foram modificados entre os backups completos). Isto posiciona os backups diferenciais em algum ponto entre os backups incrementais e os completos em termos de velocidade e utilização da mídia de backup, enquanto geralmente oferecem restaurações completas e de arquivos mais rápidas (devido o menor número de backups onde procurar e restaurar). Dadas estas características, os backups diferenciais merecem uma consideração cuidadosa
6. ALGUMAS VANTAGENS E DESVANTAGENS
6.1. BACKUP COMPLETO
VANTAGENS: Os arquivos são mais fáceis de localizar porque estão na mídia de backup atual. Requer apenas uma mídia ou um conjunto de mídia para a recuperação dos arquivos.
DESVANTAGENS: É demorado. Se os arquivos forem alterados com pouca freqüência, os backups serão quase idênticos.
6.2. BACKUP INCREMENTAL
VANTAGENS: Requer a menor quantidade de armazenamento de dados. Fornece os backups mais rápidos.
DESVANTAGENS: A restauração completa do sistema pode levar mais tempo do que se for usado o backup normal ou diferencial.
6.3. BACKUP DIFERENCIAL
VANTAGENS: A recuperação exige a mídia apenas dos últimos backups normal e diferencial. Fornece backups mais rápidos do que um backup normal.
DESVANTAGENS: A restauração completa do sistema pode levar mais tempo do que se for usado o backup normal. Se ocorrerem muitas alterações nos dados, os backups podem levar mais tempo do que backups do tipo incremental.
7. Midias de Backup
7.1. Fita
A fita foi o primeiro meio de armazenamento de dados removível amplamente utilizado. Tem os benefícios de custo baixo e uma capacidade razoavelmente boa de armazenamento. Entretanto, a fita tem algumas desvantagens. Ela está sujeita ao desgaste e o acesso aos dados na fita é sequencial por natureza. Estes fatores significam que é necessário manter o registro do uso das fitas (aposentá-las ao atingirem o fim de suas vidas úteis) e também que a procura por um arquivo específico nas fitas pode ser uma tarefa longa.
Por outro lado, a fita é uma das mídias de armazenamento em massa mais baratas e carrega uma longa reputação de confiabilidade. Isto significa que criar uma biblioteca de fitas de tamanho razoável não abocanha uma parcela grande de seu orçamento, e você pode confiar no seu uso atual e futuro.
As unidades de fita são uma opção interessante apenas para quem precisa armazenar uma grande quantidade de dados, pois o custo por megabyte das mídias é bem mais baixo que o dos HDs e outras mídias. O problema é que o custo do equipamento é relativamente alto e as fitas não são muito confiáveis, o que acaba obrigando o operador a fazer sempre pelo menos duas cópias para ter um nível maior de segurança. Para quem tem um pequeno negócio ou para usuários domésticos elas definitivamente não valem à pena.
7.2. Disco
Nos últimos anos, os drives de disco nunca seriam usados como um meio de backup. No entanto, os preços de armazenamento caíram a um ponto que, em alguns casos, usar drives de disco para armazenamento de backup faz sentido. A razão principal para usar drives de disco como um meio de backup é a velocidade. Não há um meio de armazenamento em massa mais rápido. A velocidade pode ser um fator crítico quando a janela de backup do seu centro de dados é curta e a quantidade de dados a serem copiados é grande.
8. Tornando seus backups eficientes
- Etiquete claramente seus backups. Inclua o nome da máquina, a unidade, a data do backup e o número do disco ou fita. Uma etiqueta pode ser parecida com esta: BACKUP de Admin C: 15/07/99 #4/6
- Mantenha seus backups em lugar seguro, fresco e seco. É melhor manter backup importante fora do local do micro, de forma que, se o seu escritório pegar fogo, seus backups não se queimarão. Se não você puder armazená-los fora do prédio do escritório por alguma razão, pelo menos mantenha-os em um andar separado, para que eles possam manter-se a salvo do local de desastres.
- Não faça backups do que você não precisa, eles apenas o confundirão mais tarde. Se a sua empresa formatar o disco rígido de alguém e começar tudo do zero, desfaça-se dos backups uma vez que você tenha determinado que nada importante estava na unidade.
- Teste seus backups periodicamente para assegurar-se de que eles funcionam.Calor, umidade e campos eletromagéticos podem fazer com que seus dados se deteriorem. Em geral, discos e pessoas sentem-se bem nas mesmas temperaturas: se você não se sente à vontade depois de ficar algumas horas numa sala, seus backups também não se sentirão.
- Não mantenha backups por anos e espere que eles permaneçam intactos sem ajuda. As cargas positivas e negativas em seus discos tendem a neutralizar umas às outras, e um disco deixado na prateleira voltará lentamente a ter uma superfície virgem, da mesma maneira que se você tivesse escrito na areia de uma praia, a escrita irá lentamente enfraquecer a menos que você as regrave diariamente. Você pode dar vida nova a suas fitas copiando seus backups para um meio recentemente formatado e a seguir reformatar a fita antiga. As fitas são geralmente projetadas para durar 2 a 3 anos.
9. Armazenamento de Backups
O que acontece após completar os backups? A resposta óbvia é que os backups devem ser armazenados. Entretanto, não é tão óbvio o que deve ser armazenado e onde. Para responder a estas questões, devemos considerar primeiro sob quais circunstâncias os backups devem ser usados. Há três situações principais:
- Pequenos e rápidos pedidos de restauração dos usuários
- Grandes restaurações para recuperar de um desastre
- Armazenamento em arquivos, pouco provável de ser usado novamente
Infelizmente, há diferenças irreconciliáveis entre os números 1 e 2. Quando um usuário apaga um arquivo acidentalmente, ele pretende recuperá-lo imediatamente. Isto siginifca que a mídia de backup não pode estar há mais de dois passos distante do sistema para o qual os dados devem ser restaurados. No caso de um desastre que precisa de uma restauração completa de um ou mais computadores do seu centro de dados, se o desastre foi de natureza física, o que quer que tenha destruído seus computadores, também destruiria os backups localizados próximos dos computadores. Isto seria uma situação terrível.
O armazenamento em arquivos é menos controverso. Já que a chance de ser utilizado para qualquer propósito é baixa, não haveria problema se a mídia de backup estivesse localizada há quilômetros de distância do centro de dados. As táticas para resolver estas diferenças variam de acordo com as necessidades da empresa em questão. Uma tática possível é armazenar o backup de diversos dias na empresa; estes backups são então levados para um local de armazenamento mais seguro fora da empresa quando os backups diários mais novos forem criados.
Uma outra tática seria manter dois conjuntos diferentes de mídia:
- Um conjunto no centro de dados estritamente para pedidos imediatos de restauração
- Um conjunto fora da empresa para armazenamento externo e recuperação de desastres
Obviamente, ter dois conjuntos significa ter a necessidade de rodar todos os backups duas vezes para fazer uma cópia dos backups. Isto pode ser feito, mas backups duplos podem levar muito tempo e copiar requer diversos drives de backup para processar (e provavelmente um sistema dedicado a executar as cópias).
O desafio do administrador de sistemas é encontrar um equilíbrio que atenda adequadamente às necessidades de todos, e também assegurar que os backups estejam disponíveis para a pior das situações.
+Questões de Restauração+
Enquanto os backups são uma ocorrência diária, as restaurações normalmente representam um evento menos frequente. No entanto, as restaurações são inevitáveis; elas serão necessárias, portanto é melhor estar preparado. É importante atentar para os vários cenários de restauração detalhados ao longo desta seção e determinar maneiras para testar sua habilidade em resolvê-los. E tenha em mente que o mais dfiícil de testar também é o mais crítico.
10. Restaurando do Zero
"Restaurar do zero" significa restaurar um backup de sistema completo em um computador com absolutamente nenhum dado de nenhum tipo sem sistema operacional, sem aplicações; nada. Em geral, há duas táticas básicas para restaurações do zero:
Reinstalar, seguido de restauração
Aqui o sistema operacional base é instalado como se um computador novo estivesse sendo configurado. Após instalar e configurar o sistema operacional, os drives de disco restantes podem ser particionados e formatados, e todos os backups restaurados pela mídia de backup.
Discos de recuperação do sistema Um disco de recuperação do sistema é uma mídia iniciável (bootable) de algum tipo (geralmente um CD) que contém um ambiente de sistema mínimo, capaz de executar as tarefas mais básicas de administração de sistemas. O ambiente de recuperação contém os utilitários necessários para particionar e formatar os drives de disco, os drives de dispositivo necessários para acessar o dispositivo de backup e o software necessário para restaurar os dados pela mídia de backup.
11. Testando Backups
Todos os tipos de backup devem ser testados periodicamente para garantir que os dados podem ser lidos através deles. É fato que, às vezes, os backups executados são por algum motivo ilegíveis. O pior é que muitas vezes isto só é percebido quando os dados foram perdidos e devem ser restaurados pelo backup. As razões para isto ocorrer podem variar desde alterações no alinhamento do cabeçote do drive de fita, software de backup mal-configurado a um erro do operador. Independente da causa, sem o teste periódico você não pode garantir que está gerando backups através dos quais poderá restaurar dados no futuro.
Fonte: http://www.dicas-l.com.br/print/20070427.html
Steganografia - Veja além do que os olhos permitem
Steganografia - Veja além do que os olhos permitem
Colaboração: Renato Rudnicki
Esta dica tem objetivo acadêmico. Não me responsábilizo pelo seu uso de maneira incorreta. Steganografia é uma tecnica de criptografia que permite "esconder" informações em um arquivo gráfico ou de audio. Hoje em dia, há cerca de 3% de imagens na internet que contém algo oculto em sua imagem. Há vários programas que utilizam esta tecnica. Aqui irei falar do JPHide e o JPSeek. JPHIDE e JPSEEK são os programas que permitem que você esconda um arquivo em uma imagem do visual do JPEG. Há uns lotes das versões dos programas similares disponíveis na Internet, mas JPHIDE e JPSEEK são especiais. O objetivo de projeto não era simplesmente esconder um arquivo mas fazer isto de tal maneira que é impossível provar que arquivo contém alguma mensagem escondida. Dado uma imagem visual típica, uma taxa baixa da inserção (sob 5%) e a ausência de um arquivo original, não é possível concluir com nenhuma certeza de valor que a imagem contém dados introduzidos. Enquanto a porcentagem da inserção aumenta a natureza estatística dos coeficientes do JPEG difere do "normal" até ao ponto em que levanta a suspeita. Acima de 15% os efeitos começam a tornar-se visíveis ao olho nú. Naturalmente algumas imagens são muito melhores do que outras quando usando com uma informação escondida.
Isto está disponível como uma versão de Linux e windows para interessados testarem essa técnica. Porém a maior parte dos arquivos está em extensão tgz (pacotes slackware) que podem ser encontrados em http://www.software-mirror.com/linuxpackages/Slackware-10.0/Console/jphs/
Arquivos de computadores (em imagens neste caso) contêm áreas não utilizadas ou insignificantas de dados. Steganografia faz exame da vantagem destas áreas, substituindo-as com dados escondidos. Steganografia pode também ser usado para criar marcas d'agua digitais como marcas registradas encaixadas.
Para esconder uma informação em um arquivo jpg, usa-se a seguinte sinta-se:
./jphide /local_da_imagem/imagem.jpg /local_da_imagem/imagem_renomeada.jpg /local/arquivo_com_mensagem_a_"esconder"
nesta parte, ele irá pedir para que você insira uma senha na nova imagem. É obrigatório a digitação de uma senha.
Para "visualisar" informações contidas no arquivo anterior, usa-se o seguinte comando:
./jpseek /local_onde_esta_o_arquivo/arquivo.jpg /local_onde_desimcriptara_o_arquivo/arquivo.jpg
ao digitar este comando, ele pedirá uma senha, que deve ser a senha que foi inserida pelo jphide.
Essa tecnica ainda é um assunto relativamente novo e pouco conhecido, não havendo ainda muito material disponível na internte.
Qualquer dúvida estou a disposição pelo email: <renato people (a) gmail com>
Fórum Debian
Colaboração: Fernando M. Morgenstern <<fernando (a) forumdebian com br>>
O Debian sempre baseou seu suporte em listas de discussão, porém elas acabam não sendo muito acessíveis, principalmente para iniciantes que procuram uma 'solução rápida' para o problema. O Fórum Debian vem como uma forma de suprir esse espaço aberto tendo um visual leve e intuitivo para que cada vez mais pessoas descubram o maravilhoso Debian.
Fonte: http://www.dicas-l.com.br/print/20060624.html
Dump em um arquivo remoto
Dump em um arquivo remoto
Colaboração: Rubens Queiroz de Almeida
Complementando a dica de ontem, pode ser que você possua espaço, mas o espaço disponível está em uma máquina remota.
Neste caso certifique-se que a máquina que irá receber o arquivo de backup confia na primeira (arquivo .rhosts).
Em seguida,emita o comando abaixo, fazendo as modificações necessárias:
# dump 0fb - 126 [filesystem] | rsh [máquina remota] '(cd [diretório destino];dd of=[arquivo destino] os=126b)'
Por exemplo:
# dump 0fb - 126 / | rsh obelix '(cd /work;dd of=root.bck os=126b)'
Fonte: http://www.dicas-l.com.br/print/19980224.html
/var/yp/securenets (correção)
/var/yp/securenets (correção)
Colaboração: Rubens Queiroz de Almeida
Desculpem-me, mas na dica de hoje eu cometi um (pequeno) erro. Na sintaxe do arquivo /var/yp/securenets, o endereço da máscara de rede vem primeiro e em seguida vem o endereço da rede.
Tomei a liberdade de enviar a dica novamente para voces, com as devidas correções e acrescentei um pedaço do FAQ do AIX que trata do assunto.
O engano me foi apontado por "Carlos A. F. Brefe" <<brefe (a) bdt org br>>, a quem gostaria de agradecer.
Obrigado a todos,
Rubens
Não é novidade para ninguém que os serviços NIS oferecem sérios perigos à segurança de um sistema. Uma destas razões é que qualquer pessoa na Internet pode puxar qualquer mapa do NIS que desejar.
Um mapa bastante visado é o mapa de usuários (passwd). Mesmo que o seu sistema possua shadow passwords, ou seja, as passwords são gravadas em um arquivo diferente do /etc/passwd, o mapa do NIS combina os dois arquivos, tornando a expor as senhas.
% cat /etc/passwd | grep queiroz queiroz:!:1020:1000:Rubens Queiroz de Almeida:/home/queiroz:/bin/ksh.
Já o comando
% ypcat passwd|grep queiroz queiroz:XzvA/VzEP0yB.:1020:1000:Rubens Queiroz - SUPSOF:/home/queiroz:/bin/ksh
Ou seja, a segurança criada pelas shadow passwords é anulada pelo NIS.
Uma maneira de se reduzir os riscos é especificar quais máquinas podem realizar a transferência dos mapas de NIS. Isto pode ser feito criando-se um arquivo denominado "securenets" e localizado no diretório /var/yp do servidor NIS.
Este arquivo contém linhas do tipo
/var/yp/securenets
255.255.255.0 200.200.20.0 255.255.255.0 200.200.21.0
Cada linha consiste do endereço de uma máscara de rede (netmask) seguida do endereço da rede.Uma vez criado este arquivo apenas computadores que se enquadrem nestas restrições poderão fazer transmissão de mapas NIS do servidor (master ou slave) em questão.
A seguir anexo uma parte do FAQ do AIX que descreve as securenets e esclarece alguns pontos interessantes tais como maneiras de se identificar de onde partem tentativas de transferência (possivelmente ilegais) de mapas.
Subject: 1.614: NIS security Ole.H.Nielsen@fysik.dtu.dk (Ole Holm Nielsen) SUMMARY: AIX 3.2.4 and above includes support for a more secure setup of the ypserv NIS daemon. You can prevent any random host on the entire Internet from reading your NIS maps, as is possible with the default AIX setup. The details: ------------ After starting the ypserv daemon, I noticed in the syslog the following line: Jan 17 12:01:18 zeise syslog: /usr/etc/ypserv: no /var/yp/securenets file This indicates that ypserv is looking for the mentioned configuration file, but did not find <I>, and hence will deliver the NIS maps to anyone on the net who can guess the NIS domainname. I installed the /var/yp/securenets file and restarted ypserv, and <I> works ! Any illegal attempt to read NIS maps will result in the following getting logged to syslog (example): Jan 18 13:37:27 zeise syslog: ypserv: access denied for 129.142.6.79 How to enable this NIS security option: Install the /var/yp/securenets file, for example: # /var/yp/securenets file # # The format of this file is one of more lines of # netmask netaddr # Both netmask and netaddr must be dotted quads. # # Note that for a machine with two Ethernet interfaces (i.e. a gateway # machine), the IP addresses of both have to be in /var/yp/securenets. # # for example: #255.255.255.0 128.185.124.00 # Loopback interface 255.255.255.255 127.0.0.1 Uncommenting the last line would limit access to hosts on the 128.185.124.* net, only. The loopback interface must be included, as shown above. To log violations, have a /etc/syslog.conf file containing the proper events. We use this line: *.err;kern.debug;auth.notice;user.none /var/adm/messages Caveat emptor: This works for us, and you will have to verify <I> at your own installation. Don't complain to us if you have troubles. I do not know what PTF level our AIX 3.2.4 is at. Our ypserv daemon looks like this: zeise> strings /usr/lib/netsvc/yp/ypserv | head -2 @(#)16 1.12 com/cmd/usr.etc/yp/ypserv.c, cmdnfs, nfs325, 9334325a 5/4/93 19:44:41 If your AIX doesn't have securenets support, ask your support centre for the PTF which includes APAR IX32328. That seems to have included the securenets support.
Fonte: http://www.dicas-l.com.br/print/19970814.html
Migracao sistemas de arquivos EXT3 para RAID-X
Migracao sistemas de arquivos EXT3 para RAID-X
Colaboracao: Jairo Willian Pereira - jairo(at)progonos(dot)com
Passo 00: Material Necessario
- Live-CD de reparacao bootavel c/ raidtools (ex. Knoppix 3.x)
- PC auxiliar para a replicacao dos dados e reconstrucao dos arrays
- HD adicional
- raidtools 0.9 (ou posterior) instalado na maquina "em migracao"
Passo 01: Introducao
Dispositivos RAID sao combinacoes de particoes em arrays de algum tipo previamente definido. Significa "Redundant Array of Inexpensive Disks" e foram inicialmente implementados e definidos por pesquisadores da Universidade de Berkeley, Califórnia. Atualmente existem onze onze tipos de RAID (0, 1, 2, 3, 4, 5, 6, 7, 10, 53 e 0+1), sendo os mais comuns:
RAID0 - Stripping Disc. Funciona transformando diversos discos em uma unica unidade. Prove maior velocidade de acesso em funcao de segmentar os dados entre os discos envolvidos no processo. O fator "seguranca" eh prejudicado, nao fornecendo qualquer tipo de redundancia. Minimo de 2 particoes.
RAID1 - Mirror Disc. Trabalha com sistema de espelhamento, onde a informacao gravada em um disco eh duplicada no disco parceiro. Se comparado ao RAID0, perde no quesito velocidade, mas fornece seguranca adicional a partir do clone. Nesse sistema, pode haver utilizacao de discos "Spare" aumentando proporcionalmente a seguranca do sistema. O espaco disponivel e uma das desvantagens, visto que trabalha com duplicacao da informacao. Minimo de 2 particoes.
RAID5 - Parity Disc. Similar ao RAID-0, mas implementa paridade de dados através do funcao logica XOR. Assim, consegue uma camada de seguranca adicional, usando um dos discos como disco de paridade (o RAID4 eh similar, mas grava a informacao de paridade no mesmo disco). Minimo de 3 discos.
Passo 02: Backup das Particoes de Dados
Para maior seguranca durante processo de migracao, eh altamente recomendado o backup do disco origem, seja em midia removivel ou outro dispositivo de armazenamento em massa. Eh altamente recomendado que o usuario leia mesmo que parcialmente a manpage das utilitarios envolvidos nesse processo.
Passo 03: Replicacao dos Dados e Reconstrucao dos Arrays
Como inicialmente voce precisara de mais um disco para o processo de RAID, recomendo que particione e formate o novo disco exatemente igual ao disco origem. Faca um clone do disco origem (leia original, ou o disco principal) para o disco de destino, remove o disco original e execute as operacoes seguintes no disco de destino/clonado. Somente apos o RAID estar completamente em pe, enisra o disco original (que tambem deve ter uma copia reserva) e junte-o ao RAID.
Efetuar o boot do Live-CD de reparacao (Knoppix 3.x). Nesta configuracao, os disposistivos devem ser reconhecidos pelo sistema da seguinte forma:
/dev/hda - CD-ROM /dev/hde - Disco IDE-1 (Promise) - Original /dev/hdg - Disco IDe-2 (promise) - Clone
Essa copia pode ser efetuada particao a particao utilizando o tar.
# mount /dev/hdex /mnt/hdex # mount /dev/hdgx /mnt/hdgx # (cd /mnt/hdex; tar cpvls --atime-preserve --same-owner -f - .) | (cd /mnt/hdgx; tar xf -)
Recomendo que faca apenas o particionamento, visto que essa "nova particao sera posteriormente formatada". A ideia da copia eh interessante apenas para ter uma "garantia extra" enquanto o processo nao eh finalizado. Se preferir fazer a copia do disco por inteiro, podera utilizar tambem o dd.
# dd if=/dev/hde of=/dev/hdg bs=1024
Finalizado o processo, os discos ja estao particionados e operacionais. Removeremos o disco original, colocaremos o disco clonado na posicao do original, faremos um novo reboot com o Live-CD e alteraremos a definicao do tipo para cada particao participante do RAID. Veremos como inicialmente encontram-se as atuais particoes do disco CLONADO.
# fdisk -l /dev/hde Disk /dev/hde: 255 heads, 63 sectors, 9729 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hde1 1 1913 15366141 83 Linux /dev/hde2 1914 3188 10241437+ 83 Linux /dev/hde3 3189 3316 1028160 83 Linux /dev/hde4 3317 9729 51512422+ 5 Extended /dev/hde5 3317 3447 1052226 82 Linux swap /dev/hde6 3448 4340 7172991 83 Linux
Efetuando as alteracoes, o fdisk devera apresentar:
# fdisk -l /dev/hde Disk /dev/hde: 255 heads, 63 sectors, 9729 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hde1 1 1913 15366141 fd Linux raid autodetect /dev/hde2 1914 3188 10241437+ fd Linux raid autodetect /dev/hde3 3189 3316 1028160 fd Linux raid autodetect /dev/hde4 3317 9729 51512422+ 5 Extended /dev/hde5 3317 3447 1052226 82 Linux swap /dev/hde6 3448 4340 7172991 fd Linux raid autodetect
A snn informacoes sobre os dispositivos RAID, ficam armazenadas em /etc/raidtab. O arquivo eh o mesmo utilizado para qualquer tipo de RAID, alterando apenas opcoes especificas para cada tipo. Nesse exemplo (RAID1), nao ha presenca de "spare-disk" e tenho o indicador de falha de disco comentado. Vamos contruir o arquivo (esse arquivo devera ser gerado no disco de original, visto que posteriormente sera copiado para o HD destino).
#Partition 1 - /home raiddev /dev/md0 raid-level 1 nr-raid-disks 2 persistent-superblock 1 chunk-size 64k nr-spare-disks 0 device /dev/hde1 # failed-disk 0 raid-disk 0 device /dev/hdg1 raid-disk 1 #Partition 2 - /var raiddev /dev/md1 raid-level 1 nr-raid-disks 2 persistent-superblock 1 chunk-size 64k nr-spare-disks 0 device /dev/hde2 raid-disk 0 device /dev/hdg2 raid-disk 1 # Partiion 3 - /other raiddev /dev/mdX raid-level 1 nr-raid-disks 2 persistent-superblock 1 nr-spare-disks 0 device /dev/hdeY raid-disk 0 device /dev/hdgY raid-disk 1
Esse arquivo so vai entrar em funcionamento, quando as aplicacoes RAID (raidtools) estiverem operacionais, os dispositivos RAID completamente inicializados e adicionados alem de /etc/fstab estar apontado para os novos dispositivos (/dev/mdx). Esse processo sera posteriormente apresentado.
Para melhor ilustrar a disposicao dos arrays, no caso do arquivo anteriormente apresentado, temos:
md0 - formado por hde1 e hdg1 (/home) md1 - formado por hde2 e hdg2 (/var)
E assim sucessivamente para as demais particoes. Vale mencionar, que a particao de SWAP nao foi adicionada para participar do RAID. Um truque interessante esta em definir no arquivo /etc/fstab ambas as particoes de SWAP (hde5 e hdg5) com a mesma prioridade (pri=3).
Apos todas as definicoes, efetuaremos a construcao em background dos arrays. Para cada dispositivo raid (mdX), executar:
# mkraid /dev/mdX
Todo progresso da criacao dos arrays podera ser visulizada atraves do arquivo /proc/mdstat e poderao ser imediatamente utilizados apos a insercao do comando (nao ha necessidade de esperar a finalizacao). Caso deseje acompanha-lo, constantemente:
# while true; do clear; cat /proc/mdstat; sleep 5; done
Feito a inicializacao dos dispositivos RAID, refaremos a formatacao das particoes do disco (esse passo eh destrutivo e necessitara das informacoes do Backup oriundas do disco origem). Para cada dispositivo raid (mdX):
# mkfs -j -m0 -L <label> /dev/mdX
(onde <label> sera o nome da particao destino, e.g. /home, /var, etc...)
# fsck -f /dev/mdX
Finalizado esse processo, devemos montar os sistemas de arquivos backupeados e tranferi-los para a nova particao. Idealmente devemos criar para cada particao, uma diretorio dentro do respectivo destino (velho para disco backup e novo para disco RAID).
# cd /mnt; mkdir velho novo # cd /mnt/velho; # cd /mnt/novo;
Para cada particao, executaremos:
# mount -t ext3 /dev/hdVelho /mnt/velho/[home|root|var|...] # mount -t ext3 /dev/mdNovo /mnt/novo/[home|root|var|...]
Executando a copia dos dados das particoes antigas para as novas particoes.
# (cd /mnt/velho/xxx; tar cpvls --atime-preserve --same-owner -f - .) | (cd /mnt/novo/xxx; tar xf -)
Apos conferido a perfeita copia dos discos, remover os discos de backup, e rebootar a maquina. Obs: muita atencao com a posicao dos discos na controladora IDE. Outro detalhe, diz respeito a sobreposicao de arquivos. Lembre-se que voce devera ter as copias dos arquivos editados atualizadas no disco de origem!
Finalizado a copia, chegou a hora das alteracoes dos arquivos previamente editados. Boot a maquina com o Live-CD e monte a particao onde se encontra o diretorio root.
Edite os arquivos de configuracao para refletir as alteracoes na nomenclatura do disco no sistema, caso haja alguma mudanca (hde -> hdc ou outra alteracao).
Em sistemas Linux, a definicao & distribuicao do sistema de arquivos fica armazenado em /etc/fstab. O arquivo apresentado, inicialmente ainda esta usando o esquema de particoes antigo.
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> /dev/hde1 /home ext3 defaults 0 2 /dev/hde2 /var ext3 defaults 0 2 /dev/hde3 / ext3 errors=remount-ro 0 1 /dev/hde5 none swap sw,pri=3 0 0 /dev/hdg5 none swap sw,pri=3 0 0 /dev/hde6 /usr ext3 defaults 0 2 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto user,noauto 0 0 /dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
A nova versao devera comportar sua nova estrutura de dispositivos RAID, ficando:
# /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> /dev/md0 /home ext3 defaults 0 2 /dev/md1 /var ext3 defaults 0 2 /dev/md2 / ext3 errors=remount-ro 0 1 /dev/hde5 none swap sw,pri=3 0 0 /dev/hdg5 none swap sw,pri=3 0 0 /dev/md3 /usr ext3 defaults 0 2 proc /proc proc defaults 0 0 /dev/fd0 /floppy auto user,noauto 0 0 /dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
Feito as alteracoes, os arquivos do BootLoader deverao ser atualizados para refletir as modificacoes. Nesse exemplo (usando Grub), o arquivo grub.conf foi modificado para apontar para as identificaoes RAID.
kernel /boot/vmlinuz-2.4.20-13.7 ro root=/dev/md2 hda=ide-scsi
Obs: O Lilo oferece opcoes mais interessantes para lidar com boot alternativo em dispositivos RAID em caso de falhas. Segue exemplo de uma bem interessante. Consulte a manpage do programa para informacoes sobre compatibilidade e outros recursos.
boot=/dev/md2 raid-extra-boot="/dev/hde,/dev/hdg"
Passo 04: Ajustes Finais
Nesse ponto, reinstalar o grub, alterando antes para ambiente chroot apontando para a nova instalacao.
# chroot /mnt/novo /bin/bash # grub ... grub> root (hd0,0) grub> setup (hd0) grub> quit
Bootar o servidor e verificar se todo o sistema monta da maneira desejada.
Passo 05: Leitura Complementar & Links Interessantes
- Boot + Root + Raid + Lilo : Software Raid mini-HOWTO http://www.faqs.org/docs/Linux-mini/Boot+Root+Raid+LILO.html
- Root RAID HOWTO cookbook http://www.linux.org/docs/ldp/howto/Root-RAID-HOWTO.html
- Linux ATA RAID HOWTO http://www.tldp.org/HOWTO/ATA-RAID-HOWTO/index.html
- The Software-RAID HOWTO http://www.tldp.org/HOWTO/Software-RAID-HOWTO.html
Fonte: http://www.dicas-l.com.br/print/20041017.html
Freeradius Autenticando usuários em base de dados no MySQL
Freeradius Autenticando usuários em base de dados no MySQL
Colaboração: Jean Carlos Oliveira Guandalini
Você precisa de um servidor MySQL funcionando corretamente. Eu usei um Slackware 9.1 para fazer essa instalação.
Vamos lá!
Faça o Download da versão estável do freeradius de http://www.freeradius.org/getting.html Quando fiz esse tutorial a versão estável era: 1.0.1
# wget ftp://ftp.freeradius.org/pub/radius/freeradius-1.0.1.tar.gz
Agora vamos descompactar o arquivo que baixamos
# tar zxvf freeradius-1.0.1.tar.gz
Entre no diretório criado do freeradius
# cd freeradius-1.0.1
Vamos compilar e instalar o programa
# ./configure --prefix=/usr --with-logdir=/var/log --with-radacctdir=/var/log/radacct --with-raddbdir=/etc/raddb # make # make install
Agora vamos decidir qual porta usar para o radius
# vi /etc/services
Você deve achar umas linhas assim:
#radius 1645/udp #RADIUS authentication protocol (old) #radacct 1646/udp #RADIUS accounting protocol (old)
ou
radius 1812/udp #RADIUS authentication protocol (IANA sanctioned) radacct 1813/udp #RADIUS accounting protocol (IANA sanctioned)
Descomente a linha que você irá usar para o radius, no meu caso usei as portas 1812 e 1813. Lembre-se que precisa ser duas portas. E não se deve deixar as 4 linhas descomentadas. Essas portas serão configuradas nos equipamentos que vão acessar o servidor de radius.
Faça um teste para ver se o radius está instalado corretamente:
# /usr/sbin/radiusd -X
Se o resultado desse comando terminar com as linhas abaixo está tudo OK:
Listening on authentication *:1812 Listening on accounting *:1813 Listening on proxy *:1814 Ready to process requests.
Lembrando que as portas vão depender de qual você estiver usando no /etc/services de CRTL+C para terminar o radiusd
Os arquivos de configuração foram instalados em /etc/raddb, lá estão todos os arquivos necessários que iremos precisar para deixar o radius funcionando de acordo com o que é preciso.
Agora iremos criar o esquema do banco de dados que o radius vai utilizar para autenticação Se seu mysql não estiver rodando, inicie-o Entre na pasta onde está descompactado o source do freeradius e depois na pasta a seguir:
# cd src/modules/rlm_sql/drivers/rlm_sql_mysql
Edite /etc/raddb/radiusd.conf e deixe conforme o exemplo abaixo para que a autenticação no mysql funcinoe corretamente:
authorise { preprocess chap mschap #counter #attr_filter #eap suffix sql #files #etc_smbpasswd } authenticate { authtype PAP { pap } authtype CHAP { chap } authtype MS-CHAP{ mschap } #pam #unix #authtype LDAP { # ldap #} } preacct { preprocess suffix #files } accounting { acct_unique detail #counter unix sql radutmp #sradutmp } session { radutmp }
Crie o banco de dados:
# mysql -u root -p > CREATE DATABASE radius
E Agora jogue o arquivo db_mysql.sql para o MySQL
# mysql -u root -p senhadorootnomysql radius < db_mysql.sql
Se tudo correr OK, a base de dados está completa e vazia.
Precisamos popular nosso banco de dados, para que funcione as conexões. Logue no mysql:
# mysql -u root -p > use radius;
Nossa base de teste será que criaremos um grupo de usuários chamado discados com dois usuários teste1 e teste2, vamos supor que esses usuários se conectam em um RAS e depois é jogado para o radius de nosso servidor.
Primero vamos criar os usuários:
> INSERT INTO ``usergroup``(``id``, ``UserName``, ``GroupName``) VALUES ('', 'usuario1', 'discado'); > INSERT INTO ``usergroup``(``id``, ``UserName``, ``GroupName``) VALUES ('', 'usuario2', 'discado');
Acima criamos dois usuários no grupo discado.
Agora criaremos as senhas para esses usuários:
> INSERT INTO ``radcheck``(``id``, ``UserName``, ``Attribute``, ``op``, ``Value``) VALUES('', 'usuario1', 'Password', '==', 'user1'); > INSERT INTO ``radcheck``(``id``, ``UserName``, ``Attribute``, ``op``, ``Value``) VALUES('', 'usuario2', 'Password', '==', 'user2');
usuario1 ficou com a senha user1. usuario2 ficou com a senha user2.
Vamos atribuir o tipo de Autenticação Local:
> INSERT INTO ``radgroupcheck``(``id``,``GroupName``,``Attribute``,``Op``, ``Value``) VALUES('','discado', 'Auth-Type', ':=', 'Local');
Criando as propriedades das conexões:
> INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Framed-Compression', ':=', 'Van-Jacobsen-TCP-IP', ''); > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Framed-Protocol', ':=', 'PPP', ''); > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Service-Type', ':=', 'Framed-User', ''); > INSERT INTO ``radgroupreply``(``id``,``GroupName``, ``Attribute``, ``Op``, ``Value``, ``Prio``) VALUES('', 'discado', 'Framed-MTU', ':=', '1500', '');
Precisamos agora configurar o arquivo dos clientes do radius, que pode ser nosso "RAS" imaginário. Mas poderia ser qualquer aparelho que iria mandar a autenticação para nosso radius.
Edite o arquivo /etc/raddb/clients.conf: # vi /etc/raddb/clients.conf
Vamos ao final do arquivo, poderemos verificar que no arquivo inteiro, tem vários exemplos de configuração. Colocaremos assim:
client 192.168.0.1 { secret = senhateste shortname = teletubies nastype = other }
Coloque o ip de sua máquina(procure não colocar o ip do localhost, pois já tem uma configuração no clients.conf do 127.0.0.1 se não tiver outro ip, muda configuração do 127.0.0.1 no clients.conf), coloca um secret que será a comunicação com o cliente do radius e o servidor e o tipo de equipamento que está sendo cliente, no nosso caso como iremos testar de nossa máquina mesmo, vamos colocar other, mas poderia ser um portslave, cisco, tc, max40xx... e por aí vai. Olhando o arquivo você vai ver que tem muito mais configurações para fazer nesse quesito de clientes, mas não irei me aprofundar nisso.
Ok, configuração básica feita, podemos testar para ver se está tudo funcionando. Digite:
# radiusd
Isso fará com que o radius inicie. veja se o radius está rodando:
# ps aux radiusd
Se não estiver tente dar uma olhada nos logs ver o que pode ter saído errado, e qualquer coisa refaça todo o tutorial.
Vamos fazer nosso teste de autenticação.
# radtest usuário1 user1 192.168.0.1:1812 0 senhateste
Esse comando tem a seguinte sintaxe: radtest nomeusuario senhausuario ipdoserverradius:porta portadeconexao secretdoradius
Sending Access-Request of id 25 to 192.168.0.1:1812 User-Name = "usuario1" User-Password = "user1" NAS-IP-Address = 192.168.0.1 NAS-Port = 0 rad_recv: Access-Accept packet from host 192.168.0.1:1812, id=25, length=44 Service-Type = Framed-User Framed-Protocol = PPP Framed-Compression = Van-Jacobson-TCP-IP Framed-MTU = 1500
Se a saida de seu comando for parecida com a acima, provavelmente seu radius está funcionando corretamente.
Este tutorial foi o mais básico possivel, procurando mostrar somente as configurações mínimas para um funcionamento, em breve irei fazer uma continuação deste, com mais explicações sobre recursos e features do freeradius.
Fonte: http://www.dicas-l.com.br/print/20041125.html
Realizando backups em HD com Amanda
Realizando backups em HD com Amanda
Colaboração: Daniel Lobato Duclós
Todo administrador de sistemas sabe que o backup é uma parte vital da segurança e garantir sua realização e integridade é crítico no seu cotidiano.
Existem muitas alternativas de backups destinadas a todos os tamanhos de rede e bolso, e o Amanda é sempre citado como uma alternativa livre e gratuita.
Porém o Amanda é comumente utilizado para realizar backups em fita, o que nem é sempre econômico, já que hoje em dia HDs são muito baratos e certamente mais práticos para uma pequena empresa utilizar.
É perfeitamente possível ter um amanda realizando backups no disco rígido, e como realizar isso é a que nos propomos neste artigo.
Do que você irá precisar
Escolha uma máquina para ser o servidor de arquivos. Este tutorial considera que se utilizará como sistema operacional desse servidor o Debian GNU/Linux atualizado, porém pode perfeitamente servir de base para que a mesma tarefa seja realizada em outras distribuições.
É muito interessante que esta máquina tenha bastante espaço em disco e se possível um HD dedicado somente ao backup.
Essa máquina deve estar conectada à rede das outras máquinas que terão seus dados salvos.
Estratégia de backups e definições
Iremos criar no HD 14 fitas "virtuais", que serão diretórios no HD. O Amanda considera que será rodado uma vez por dia.
O amanda pode realizar backups completos (full) e incrementais. Você pode decidir a freqüência e a retenção (por quanto tempo ficarão armazenados) desses backups.
Nesse artigo escolhemos realizar um backup completo uma vez por semana e incrementais seis vezes por semana, criando um ciclo semanal.
A retenção é feita por duas semanas, com uma fita virtual por backup.
Esse parâmetros podem ser alterados no /etc/amanda/DailySet1/amanda.conf, na seção:
dumpcycle 7 days tapecycle 14
Se quiser realizar dois backups completos em uma semana, por exemplo, altere para:
dumpcycle 3 days tapecycle 14
As fitas virtuais ficarão em /backups e o usuário com que o amanda irá rodar é o padrão do Debian, "backup". Este usuário já existe na Debian, porém pode variar em outras distribuições.
Resta agora decidir o tamanho que cada fita virtual terá. Nesse exemplo escolhemos 10 GB por fita, o que dá um espaço alocado de 140 GB para backups.
Instalação e Configuração: Servidor
No servidor instale o amanda. É muito importante que seu Debian esteja com a versão atualizada do sistema, pois a versão do amanda que está na Stable não suporta backup para disco rígido. A versão 2.4.4p3-2 foi utilizada neste tutorial:
apt-get install amanda-server
Após feita a instalação, vamos configurá-lo:
cd /etc/amanda/DailySet1/
Salve uma cópia do arquivo original, se quiser:
cp /etc/amanda/DailySet1/amanda.conf<,-ori>
Agora edite o arquivo /etc/amanda/DailySet1/amanda.conf, apague seu conteúdo e coloque o seguinte, lembrando que o que vem depois do sinal # é considerado comentário e será ignorado pelo Amanda::
org "DailySet1" # Nome descritivo para as mensagens mailto "sysadmin@dominio.com" # Email de quem irá receber os logs dumpuser "backup" # Usuário dono dos backups inparallel 1 # Procesos em paralelo netusage 10 # Uso máximo de banda em Kbps dumpcycle 7 days # Número de dias de um ciclo completo tapecycle 14 # Número de "fitas" runtapes 1 # Quantas fitas usar por ciclo tpchanger "chg-multi" # Script controlador de fitas changerfile "/etc/amanda/DailySet1/changer.conf" # Configuração das fitas tapetype HARD-DISK # Tipo de armazenamento labelstr "^HISS[0-9][0-9]*$" # Expressão regular das etiquetas das fitas infofile "/var/lib/amanda/DailySet1/curinfo" # Diretório de datos logfile "/var/log/amanda/DailySet1/log" # Diretório de log indexdir "/var/lib/amanda/DailySet1/index" # Diretório de índice amrecover_changer "chg-multi" # Seleciona as fitas automaitcamente no restore # definição de arquivamento com dump define dumptype hard-disk-dump { comment "Backup no HD - usando dump" holdingdisk no index yes options compress-fast, index, exclude-list "/etc/amanda/exclude.gtar" priority high } # Definição do armazenamento com tar define tapetype HARD-DISK { comment "HD" length 10000 mbytes # 10 GB de espaço } # Definição de armazenamento com 'tar' define dumptype hard-disk-tar { program "GNUTAR" hard-disk-dump comment "Backup para disco - usando tar" }
Edite o arquivo '/etc/amanda/DailySet1/changer.conf' para definir as características das "fitas" e coloque o seguinte:
multieject 0 gravity 0 needeject 0 ejectdelay 0 statefile /var/lib/amanda/DailySet1/changer-status firstslot 1 lastslot 14 slot 1 file:/backups/tape01 slot 2 file:/backups/tape02 slot 3 file:/backups/tape03 slot 4 file:/backups/tape04 slot 5 file:/backups/tape05 slot 6 file:/backups/tape06 slot 7 file:/backups/tape07 slot 8 file:/backups/tape08 slot 9 file:/backups/tape09 slot 10 file:/backups/tape10 slot 11 file:/backups/tape11 slot 12 file:/backups/tape12 slot 13 file:/backups/tape13 slot 14 file:/backups/tape14
Agora a vez é do '/etc/amanda/DailySet1/disklist', que irá definir quais máquinas terão quais diretórios armazenados:
# O nome da máquina deve ser o que está no DNS (ou no /etc/hosts) cliente.dominio.com /home hard-disk-tar cliente.dominio.com /var hard-disk-tar cliente.dominio.com /etc hard-disk-tar cliente2.dominio.com /home hard-disk-tar cliente2.dominio.com /usr/local hard-disk-tar
Os nomes das máquinas clientes devem estar definidas no seu /etc/hosts ou no seu DNS.
A seguir iremos criar os diretórios das fitas virtuais:
mkdir /backups
Então, os sub-diretórios:
mkdir -p /backups/tape01/data mkdir -p /backups/tape02/data [...] mkdir -p /backups/tape14/data
Acerte a permissão de modo que o usuário de backup possa escrever nesses diretórios::
chown -R backup:backup /backups
Vamos editar o agendador de tarefas (cron) para realizar os backups às 5:00 da manhã. Edite o '/etc/crontab' e acrescente a seguinte linha:
00 5 * * * backup /usr/sbin/amdump DailySet1
Edite o '/etc/amandahosts' para permitir o acesso do usuário que irá realizar a restauração de arquivos, no caso o root. Acrescente essas linhas:
#servidor usuário servidor root
É necessário iniciar os serviços de rede do Amanda, para que o backup e os restores possam ser feitos. Isso é definido através do super-servidor inet ou seu substituto, o xinet. Iremos mostrar como configurar os dois. Primeiro o inetd. Descomente ou insira as seguintes linhas no seu '/etc/inetd.conf' :
amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad amandaidx stream tcp nowait backup /usr/sbin/tcpd /usr/lib/amanda/amindexd amidxtape stream tcp nowait backup /usr/sbin/tcpd /usr/lib/amanda/amidxtaped
Reincie o inetd::
/etc/init.d/inetd restart
Caso possua xinetd, inclua no arquivo '/etc/xinetd.conf'::
service amanda { socket_type = dgram protocol = udp wait = yes user = backup server = /usr/lib/amanda/amandad } service amandaidx { socket_type = stream protocol = tcp wait = no user = backup server = /usr/lib/amanda/amindexd } service amidxtape { socket_type = stream protocol = tcp wait = no user = backup server = /usr/lib/amanda/amidxtaped }
Os próximos comandos serão dados como o usuário backup:
su - backup
Crie o arquivo de lista de tapes, que será posteriormente preenchido pelo Amanda:
touch /etc/amanda/DailySet1/tapelist
Agora vamos etiquetar as fitas virtuais, para uso do Amanda:
/usr/sbin/amlabel DailySet1 HISS01 slot 1 /usr/sbin/amlabel DailySet1 HISS02 slot 2 /usr/sbin/amlabel DailySet1 HISS03 slot 3 [...] /usr/sbin/amlabel DailySet1 HISS14 slot 14
Instalação e Configuração: Clientes
A configuração no servidor está completa. Agora iremos para um cliente Linux, que pode ser o desktop de alguém ou seu Servidor Web, por exemplo. Caso esse cliente também esteja rodando Debian:
apt-get install amanda-client
Ou instale o cliente do amanda da sua distribuição.
Agora, edite o '/etc/amandahosts':
# nome da maquina usuario servidor.dominio.com backup
Note que o nome do servidor deve estar definido no /etc/hosts do cliente ou no seu DNS interno. O mais fácil é definir no '/etc/hosts', nesse formato:
192.168.1.110 servidor.dominio.com servidor
Estamos quase lá. É preciso que o seu cliente esteja escutando na rede para que, quando o servidor se conectar, ele consiga transferir os dados. Como explicado anteriormente, isso pode ser feito via inet ou xinet. Vamos ver os dois casos.
No Debian, quando se instala o amanda-server ele insere a seguinte linha no seu '/etc/inetd.conf' :
amanda dgram udp wait backup /usr/sbin/tcpd /usr/lib/amanda/amandad
Se não estiver lá, insira manualmente a linha. Em qualquer dos casos reinicie o inetd.conf::
/etc/init.d/inetd.conf restart
Caso você utilize o xinetd porém, basta editar o '/etc/xinetd.conf' e colocar assim:
service amanda { socket_type = dgram protocol = udp wait = yes user = backup server = /usr/lib/amanda/amandad }
Reinicie o xinetd:
/etc/init.d/xinetd restart
E a configuração está pronta!
Restaure os backups!
O seu backup foi realizado com sucesso às 5:00 da manhã e tudo está certo. É hora de aprender a restaurar os backups enquanto tudo está tranquilo e ninguém esta desesperado gritando com você pelos seus dados preciosos.
Existe algumas maneiras de fazer isso. Uma é utilizando o 'amrecover', como root. Essa opção é a que iremos utilizar, por ser a mais poderosa.
Na máquina servidora, como root, crie um diretório de restore:
mkdir /restore cd /restore
Agora, chame o programa de recuperação:
amrecover
Dê o comando que determina a data que você quer restaurar, no formato AAAA-MM-DD, onde AAAA é o ano com quatro dígitos, MM é o mês com dois dígitos e DD é o dia com dois dígitos:
amrecover> setdate 2004-11-06 200 Working date set to 2004-11-06.
Aqui você determina de qual cliente você quer restaurar o backup:
amrecover> sethost cliente 200 Dump host set to cliente.
A seguir você determina de qual "disco" você irá restaurar o backup. Se você especificou para ser feito o backup do diretório '/home' do cliente ponha '/home'. Mesmo que você vá restaurar somente um diretório ou somente um arquivo. Veja abaixo como extrair somente um arquivo do diretório '/home/daniduc' :
amrecover> setdisk /home 200 Disk set to /home.
Aqui você navega até o diretório::
amrecover> cd daniduc /home/daniduc
O próximo passo é adicionar o arquivo a ser restaurado. Lembre-se que você pode usar coringas, como o * para adicionar todos os arquivos, ou pode adicionar um diretório:
amrecover> add .bash_history Added /daniduc/.bash_history
Continue adicionando diretórios e arquivos, conforme o necessário.
Aqui você pede para o Amanda selecionar a fita virtual automaticamente:
amrecover> settape chg-multi Using tape "chg-multi" from server localhost.
E finalmente, só resta extrair os arquivos:
amrecover> extract Extracting files using tape drive chg-multi on host localhost. The following tapes are needed: HISS06 Restoring files into directory /restore Continue [?/Y/n]? y Extracting files using tape drive chg-multi on host localhost. Load tape HISS06 now Continue [?/Y/n/s/t]? y ./daniduc/.bash_history amrecover> exit
Pronto, foi feita a restauração do arquivo dentro do diretório /restore! Sua empresa já pode dormir tranqüila, sabendo que possui backups eficientes a um custo extremamente acessível.
Fonte: http://www.dicas-l.com.br/print/20041213.html
Utilizando apt-get atrás de um servidor Proxy (Squid)
Utilizando apt-get atrás de um servidor Proxy (Squid)
Colaboração: Roberto Rodrigues da Silva
O "apt-get" é uma ferramenta de gerenciamento de pacotes para Sistemas Debian e sistemas baseados no Debian.
Nesta dica irei demostrar como configurar o apt-get atrás de um servidor Proxy SQUID Transparente ou com Autenticação para utilização dessa famosa ferramenta de manipulação de pacotes.
Obs.: Neste e em outros documentos que eu escrevi a formatação do texto possui os seguintes significados:
- O "#" significa que o comando dever ser executado como usuário "root".
- O "$" significa que o comando deve ser executado como usuário sem privilégios.
Configurando "apt-get" atrás de um Proxy Transparente
Primeiro edite o arquivo de variáveis de ambiente com o comando abaixo:
# vi /etc/environment
Obs.: No exemplo eu utilizei o editor vi, mas pode ser qualquer outro editor de texto simples.
E inclua o seguinte conteúdo no arquivo "environment":
http_proxy="http://192.168.1.254:3128" ftp_proxy="http://192.168.1.254:3128" Acquire { HTTP::Proxy 192.168.1.254:3128; FTP::Proxy 192.168.1.254:3128; }; alias wget="wget -Y on"
Obs.: No exemplo acima eu configurei o proxy para o protocolo HTTP e FTP. Você também deve informar o endereço e a porta do seu Servidor Proxy (SQUID), no exemplo foi utilizado o IP: 192.168.1.254 e a Porta: 3128, altere para o IP e Porta do seu servidor de proxy e salve o arquivo.
Agora vamos editar o arquivo de configuração do APT-GET:
# vi /etc/apt/apt.conf
E adicione as seguintes linhas:
Acquire{ HTTP::proxy "http://192.168.1.254:3128"; FTP::proxy "http://192.168.1.254:3128"; }
Obs.: Novamente altere as informações de IP e Porta para do seu servidor de proxy e salve o arquivo.
Agora vamos alterar o arquivo /etc/profile
# echo "export http_proxy ftp_proxy" >> /etc/profile
Pronto !
Configurando "apt-get" atrás de um Proxy com Autenticação
Para "apt-get" para Proxy com Autenticação é necessário incluir o usuário e senha, como EXEMPLO irei utilizar o usuario "roberto" e a senha "123mudar".
Primeiro edite o arquivo de variáveis de ambiente com o comando abaixo:
# vi /etc/environment
E inclua o seguinte conteúdo no arquivo "environment":
http_proxy="http://roberto:123mudar@192.168.1.254:3128" ftp_proxy="http://roberto:123mudar@192.168.1.254:3128" Acquire { HTTP::Proxy roberto:123mudar@192.168.1.254:3128; FTP::Proxy roberto:123mudar@192.168.1.254:3128; }; alias wget="wget --proxy-user=roberto --proxy-passwd=senha"
Obs.: Não esqueça de alterar o IP: 192.168.1.254, Porta: 3128, Usuario: roberto e Senha: 123mudar para as informações corretas do seu servidor de proxy e o salve o arquivo.
Fonte: http://www.dicas-l.com.br/print/20061027.html
Bloqueando anexos no qmailtoaster com MIME
Bloqueando anexos no qmailtoaster com MIME
Colaboração: Saulo Fabrin
Umas das maneiras de bloquear arquivos em anexo no qmail é utilizando o padrão MIME(codificador de arquivos) através do badmimetypes/badmimetypes.cdb .
Para bloquear arquivos com extensão .exe ou .xls por exemplo é necessário saber qual a codificação correspondente em MIME para inserir no arquivo badmimet ypes.
Conteúdo do arquivo badmimetypes (/var/qmail/control/)
#MIME : TVpQAAIAA - bloqueia arquivos com extensão .exe : 0M8R4KGxG - bloqueia arquivos com extensão .xls
De acordo com algumas documentações do qmail para realizar este trabalho seria necessário enviar email(com arquivo em anexo .exe ou .xls) para uma determinada conta e utilizar um editor para abrir a mensagem e retirar dela a codificação MIME, mas existe uma maneira mais fácil de obter estas informações como veremos a seguir:
MIME
: Obtendo codificação para bloquear .exe : # perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' : < nome-arquivo.exe | head -1 | cut -c1-9 : TVpQAAIAA : Obtendo codificação para bloquear .xls : # perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' : < nome-arquivo.xls | head -1 | cut -c1-9 : 0M8R4KGxG : Outra codificação para .exe : # perl -MMIME::Base64 -0777 -ne 'print encode_base64($_)' : < nome-arquivo.exe | head -1 | cut -c1-9 : TVqQAAMAA
O badmimetypes necessita dos nove primeiros caracteres para realizar os bloqueios, por este motivo foi utilizado o "head -1 | cut -c1-9"
Atualizando
Vamos atualizar o badmimetypes.cdb com os códigos gerados para que os bloqueios entre em vigor
: echo "TVpQAAIAA" >> /var/qmail/control/badmimetypes : echo "0M8R4KGxG" >> /var/qmail/control/badmimetypes : echo "TVqQAAMAA" >> /var/qmail/control/badmimetypes /var/qmail/bin/qmail-badmimetypes
Após isto basta realizar testes de envio com arquivos .exe e .xls e verificar se os mesmos são bloqueados com sucesso. A codificação MIME também pode ser utilizada para bloquear vírus, basta executar o mesmo procedimento com o arquivo infectado e atualizar o badmimetypes.cdb
Fonte: http://www.dicas-l.com.br/print/20060307.html
Nova versão do Agata Report
Nova versão do Agata Report
Gostaria de enviar a vocês o anúncio da nova versão do Agata Report, desenvolvido por Pablo Dall'Oglio, da equipe da Univates.
Nós usamos o Agata Report aqui na Unicamp e eu realmente não tenho palavras para descrever como é útil, em diversos aspectos.
Para saber mais, continue lendo :-)
UNIVATES, 22 de Outubro de 2002.
Saiu a versão final do Agata Report - Gerador de Relatórios.
http://agata.codigolivre.org.br
Estas características vem sido trabalhadas desde o início da versão 3.
- Suporte à temas (skins) de gtk.themes.org;
- Importação de arquivo DBF para Base SQL;
- Gerenciador de projetos;
- Manual do usuário em português e Inglês;
- Novas cláusulas;
- Testado e preparado para DB2;
- Instalação facilitada para windows também;
A nova versão 4.0 já está sendo projetada, com novos recursos visuais.
Mas o que é o Agata Report ?
Agata Report é um gerador de relatórios, desenvolvida em PHP-GTK. Permite a edição e obtenção de pesquisas SQL de bases de Dados como arquivos texto ou PostScript.
Ele conecta na Base de Dados, lista suas tabelas, campos, e permite fazer ligações entre as tabelas, restrições, ordenações, aplicar funções e realizar a consulta ao final. Ele Gera o resultado para arquivo PostScript ou TXT.
- Atualmente, O Agata tem suporte ao Inglês, Português, Italiano, Francês, Alemão e Suéco;
- O Agata conecta em PostgreSQL, MySQL, Oracle, SyBase, MsSql e FrontBase, Informix and InterBase. Mas o Agata foi suficientemente testado apenas com PostgreSQL, Informix, MsSql, InterBase, MySQL e DB2;
Agata Report tem algumas ferramentas úteis:
- Agata EIS é uma ferramenta para geração de gráficos. Permite ao usuário definir uma série de instruções SQL para obter informações do Banco de Dados. Estas informações (colunas numéricas) serão desenhadas como gráficos de linhas, colunas ou pizza. O usuário também poderá exportar os dados no formato CSV, para usá-los em outra planilha eletrônica como gnumeric ou kspread.
- Merge tool permite escrever qualquer documento (p.e. uma carta) e inserir qualquer variável apartir da pesquisa SQL. Você pode definir SubPesquisas dentro do documento, também. Há vários símbolos, linhas e fontes que você pode usar. No final, o resultado será um arquivo PostScript;
- Label tool é um (mini Merge Tool) que é útil para gerar etiquetas de endereçamento. Você pode definir o formato inserindo os campos onde você quiser. As Etiquetas serão geradas em uma página A4 com 2 colunas (Arquivo PostScript);
- Dia tool é uma ferramenta para gerar diagramas. Através desta opção você pode gerar um Diagrama (Formato DIA) com todas as tabelas envolvidas na consulta. A Dia tool não desenha as linhas entre as tabelas no diagrama ainda.
+--------------------------------------------------+ | _ Pablo Dall'Oglio (pablo@php.net) | | °v° Univates - IT Department +55 51 3714-7040 | | /(_) Life is a jorney, not a destination... | | ^ ^ Linux User n.223253, Lajeado, RS - Brasil | +--------------------------------------------------+ : Programmer, pilot, wine taster and a half musician
Fonte: http://www.dicas-l.com.br/print/20021028.html
Emulando Video Game no Linux
Emulando Video Game no Linux
Colaboração: Eder Miranda
Recentemente falei sobre jogos nativos para Linux. Hoje falarei um pouco sobre emuladores de Video Games para Linux. Emuladores de Video Games são bem populares para Windows, não se ouve falar muito de emuladores para Linux. Pois bem, hoje darei algumas dicas de bons emuladores de Video Games para Linux. Mostrarei cinco emuladores para cinco Video Games diferentes:
- Super Nintendo;
- Game Boy Séries (GB, GBC, GBA, ...);
- Nintendo 64;
- Mega Drive, SegaCD e Sega32X;
- Playstation One.
IMPORTANTE
Antes de instalar qualquer um dos emuladores de dica certifique-se que em sua distribuição Linux estaja instalado o a biblioteca gráfica SDL (Simple Direct Layer - Camada de Acesso Direto), ele funciona mais ou menos como o Directx do Windows, caro que tem a diferença de ser onpen source.
Para baixá-la a bibliote SDL, vá em http://www.libsdl.org ou procure um pacote relativo à tua distro. Se for RPM, tente procurar em http://www.rpmfind.net.
Além dos emuladores instalados é necessário ter a rom do jogo na máquina, só assim é possível jogar.
Super Nintendo (Zsnes)
Este emulador é sucesso em emulação de jogos de Super Nintendo (Snes). Iniciamente desenvolvido para emular o Snes no Windows, possui também uma ótima versão para Linux, que não deixa a desejar.
- Baixe o pacote de instalação no site http://www.zsnes.com/index.php?page=files.
- Execute os seguintes comandos:
$ tar -xzvf zsnes...tar.gz $ cd zsnes../src $ ./configure $ make $ make install
- Para executar o programa é usar o comando zsnes. Se achar necessário crie um atalho para facilitar o acesso.
Observações
- Na minha instalação foi necessário instalar o nasm. Então caso haja algum problema na instalação, é só instalar a dependência que o configurador está pedindo.
- Em Pcs com placas de som onboard é interessante colocar o som em 44000 Khz. Pois com 22000 Khz percebece um pequeno chiado.
- Se você tem joystick, ele pode ser facilmente configurado e com uma boa jogabilidade.
Game Boy Séries (VBA)
O VisualBoyAdvance (VBA) é um Emulador de Game Boy Advance Game Boy, Super Game Boy e Game Boy Color. Atualmente é o emulador mais popular de GBA, contendo diversas funções, desde a gravação de demos e sons até o uso de filters gráficos para deixar o visual dos jogos ainda melhor. Para instalar siga as instruções:
- Baixe o software em http://prdownloads.sourceforge.net/vba/VisualBoyAdvance-src-1.7.2.tar.gz.
- Execute os seguintes comandos:
$ tar - xzvf VisualBoyAdvance-src-1.7.2.tar.gz $ cd VisualBoyAdvance-1.7.2 $ ./configure $ make $ make install
Pronto o emulador já está instalado! Para executa-lo, use o seguinte comando:
/usr/local/bin/VisualBoyAdvance <nome rom>.
Observações
- Na instalação do VBA, também foi necessário instalar o nasm.
- Usando o comando /usr/local/bin/VisualBoyAdvance, é possível saber todos as opções que esse emular oferece!
Nintendo 64 (Mupen64)
O Mupen64 um emular novo para o Nintendo64. Ele é o emulador mais fácil e mais rápido de se instalar.
- Baixe o arquivo em http://mupen64.emulation64.com/down.htm
- Para instalá-lo basta descompactar o arquivo, para isso use o seguinte comando:
$ tar xvfj mupen64....tar.br2
Pronto, o Mupen64 está instalado!!
Para executar o Mupen64 entre no diretório em que ele foi descompactado e digite o comando ./mupen64
Observações
- A interface do Mupen64 é bem intuitiva, é só entrar em config e você terá todas as opções necessárias para deixá-lo rodando legal, não tem secredo.
- Nesse endereço http://mupen64.emulation64.com/shots.htm você encontra uns screenshots dos jogos no Windows, mas testei Mario 64 e Castlevania, os dois funcionaram sem problemas no Linux.
Mega Drive e SegaCD (gens)
O gens é um dos melhores emuladores de MegaDrive, SegaCD e Sega32X existente. Uma de suas maiores vantagens é ler arquivos zipados, o que garante uma maior economia de espaço no HD, já que as ROMs não precisam ser descompactadas.
Siga os passos:
- Baixe o Gens for Linux em http://prdownloads.sourceforge.net/gens/gens-rc2.tar.gz
- Execute os seguintes comandos:
$ tar - xzvf gens...tar.gz $ cd gens.../ $ ./configure $ make $ make install
- O arquivo executável pode ser encontrado em /home/<usuario>/gens-linux/gens/gens, crie um link no /usr/local/bin:
$ ln -s /home/<usuario>/gens-linux/gens/gens /usr/local/bin/gens
Pronto, você já pode executar o comando gens e iniciar o emulador.
Observações
Alguns screenshots dos jogos suportados pelo Gens pode ser visto em http://gens.consolemul.com/screenshots.shtml. A maioria está rodando na versão do Windows, mas eles funcionam normalmente no Linux.
PlayStation (Epsxe)
Esse emulador para PlayStation tem uma versão nativa para o Linux. A versão mais recente é a 1.6.0. A configuração do Epsxe é a mais "chata". Siga os passo:
- Baixe o emulador no site do projeto, http://www.epsxe.com/download.php.
- Em seguinda baixe a bios em http://www.filemirrors.com/search.src?type=begins&file=scph (Pegue o arquivo scph1001.zip).
- O epsxe tem vários plugins, pegue um pacote com aproximadamente 4MB com mais de 90 plugins, no site http://www.aldostools.com/psemu/plugins.zip
Pronto!!
A instalação do Epsxe é muito fácil:
- Descompacte o arquivo epsxe160lin.zip
- Em seguida, pegue o arquivo da bios e copie dentro do diretório do epsxe/bios.
- Finalmente descompacte o arquivos dos plugins no diretório plugins da pasta do emulador. Instalação completa!!
Para executar o epsxe entre no diretório em que ele foi descompactado e digite o comando ./epsxe.
Observações
- Esse emulador possui muitos plugins, se você tiver uma placa de vídeo boa, dê preferência aos plugins OpenGL.
- Leia o artigo do Carlos Morimoto em http://www.guiadohardware.info/artigos/258/, tem um tutorial bem legal com imagens e os plugins mais utilizados. Vale à pena dar uma olhada.
- Não existe Roms de PlayStation, para rodar os jogos é necessário ter o CD do jogo a mão.
Pretendo fazer outros tutoriais para emuladores de outros video games. Aguardem.
Fonte: http://www.dicas-l.com.br/print/20060311.html
Linux: Tipos de Arquivos
Linux - Tipos de Arquivos
Em sistemas Linux, encontramos diversos tipos de arquivos, geralmente identificados por suas terminações:
Arquivos compactados com o programa compress .Z Arquivos criados com o comando `tar' (tape archive) .tar Arquivos compactados com o programa gzip .gz Arquivos criados com o comando `tar' e compactados com o programa `gzip' .tgz Arquivos texto .txt Arquivos html .html/.htm Arquivos PostScript .ps Arquivos de áudio .au/.wav Arquivos de imagens .xpm/.jpg/.gif/.png Arquivos de Distribuição de Software (Red Hat Package Manager) .rpm Arquivos de configuração .conf Código fonte de programas C .c Arquivos de Cabeçalho .h Código Objeto .o Programas Perl .pl Programas TCL .tcl Código Compartilhado .so
Esta é a convenção, que nem sempre é usada. Pode-se perfeitamente criar um arquivo texto que não tenha a terminação .txt. O comando `file' nos permite identificar a que categoria um arquivo pertence. Vejamos alguns exemplos:
$ file /etc/passwd n* /etc/passwd: ASCII text networks: empty nscd.conf: ASCII text nsswitch.conf: English text ntp: directory ntp.conf: English text
O comando `file' baseia suas decisões consultando o arquivo `/usr/share/magic', onde estão registradas as características dos principais tipos de arquivos do sistema. Para maiores informações consultar a documentação do arquivo `magic'.
Fonte: http://www.dicas-l.com.br/print/20000309.html
Emulação de Ambiente DOS em Linux
Emulação de Ambiente DOS em Linux
Colaboração: Rubens Queiroz de Almeida
Uma das muitas aplicações disponíveis no ambiente Linux, ou Unix em geral, é o DOSEMU. Este programa permite que se rodem programas DOS sob Linux.
No Linux da Conectiva, Guarani, você pode optar pela instalação da versão 0.98 (dosemu-0.98.1-3cl.i386.rpm). Esta versão, na minha instalação, não funcionou o acesso ao floppy. Todo o resto funcionou perfeitamente.
Eu fui então ao site do DOSEMU, que fica em http://www.dosemu.org/. Neste site, eu peguei a versão experimental, ou do desenvolvedor (developer). Para esta versão não estavam disponíveis os binários no formato RPM, para o RedHat Linux, como o da Conectiva. Eu peguei então o arquivo fonte, em ftp://ftp.dosemu.org/pub/dosemu/Development/dosemu-0.99.11.tgz e compilei. A compilação se deu sem problema algum e pouco tempo depois estava fazendo os testes. Nesta versão tudo funcionou perfeitamente, até mesmo o acesso ao floppy.
Eu fiz testes com várias versões do DOS. Funcionou com todas, até mesmo com o Windows 98. Por Windows 98 não entenda o ambiente gráfico mas sim o DOS. Tanto o Windows95 quanto 98, oferecem a possibilidade de não ativarem o ambiente gráfico. Para isto, edite, com cuidado (se possível faça um backup), o arquivo msdos.sys. Neste arquivo modifique as linhas:
Logo=1 BootGUI=1
para
Logo=0 BootGUI=0
Desta forma o ambiente gráfico não será automaticamente invocado quando do startup da máquina. Isto tudo estou levando em consideração uma máquina que possua Windows e Linux. No arquivo de configuração do DOSEMU, em /etc/dosemu.conf, altere a definição $_hdimage para apontar para a sua partição Windows. Desta forma, ao se invocar o DOSEMU, ele utilizará os arquivos do próprio DOS ou Windows. Existem diversas opções para configuração do DOSEMU. É possível até mesmo se rodar o Windows 3.1 ou 3.0 sob o DOSEMU, embora os autores façam fortes recomendações para que isto não seja feito.
Caso você não possua o DOS, você pode obtê-lo gratuitamente no site da empresa Caldera, que também comercializa uma distribuição do Linux, OpenLinux. O endereço onde se encontra o DR-DOS é http://www.calderathin.com/products/drdos/download.html A versão do Windows 3.1 que funciona com o DOSEMU é aquela distribuída, muitos anos atrás, juntamente com o OS/2, chamada os2win31.zip. É bom lembrar que para usar este software você precisa de uma licença de uso tanto do OS/2 quanto do Windows3.1. Existem ainda algumas versões disponíveis deste arquivo na Internet. Um search no Altavista deve retornar alguns endereços onde este arquivo se encontra. Para quem quiser saber mais sobre a utilização do Windows 3.1 sob DOSEMU, ler o documento http://ftp.unicamp.br/pub/systems/Linux/system/emulators/dosemu/Win3.1_Dosemu.HOWTO.gz
Enfim, o DOSEMU é fartamente documentado e parece ser uma aplicação bastante confiável. Se você estiver planejando a migração de seu ambiente Microsoft para Linux e ainda precisar rodar aplicativos antigos baseados em DOS, esta pode ser uma solução viável e bastante econômica, tudo o que você vai empregar será o seu tempo. Todos os softwares são gratuitos.
Fonte: http://www.dicas-l.com.br/print/19990604.html





Últimos comentários