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
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
Pipes em bash
Pipes em bash
Colaboração: Rodrigo Bernardo Pimentel <<rbp (a) sp conectiva com br>>
As ferramentas de Unix surgiram com o conceito de "seja simples, faça bem o que tem a fazer, saiba conversar com outras aplicações". Bem, parte dessa última premissa é realizada com o uso de "pipes". "pipes" (utilizados com o caracter '|') conectam a saída de uma programa à entrada de outro. Ou seja, funcionam como um "tubo" ou "cano" mesmo.
Por exemplo: o comando "cat" joga na saída padrão o conteúdo de um arquivo. O comando "cut" mostra só uma parte especificada do texto que lhe é passado como entrada padrão. Assim, para conseguirmos uma lista de usuários do sistema, podemos fazer
[rbp@muppets ~]$ cat /etc/passwd | cut -d : -f 1 =
O comando "cat /etc/passwd" jogaria na tela todas as linhas do arquivo /etc/passwd.
O comando "cut -d : -f 1" divide cada linha da entrada utilizando o ":" (dois pontos) como separador e pega o primeiro campo (com "-d :" e "-f 1" respectivamente). Assim, em uma linha do /etc/passwd normal, os campos seriam
rbp:x:500:500:Rodrigo Bernardo Pimentel:/home/rbp:/bin/bash 1 2 3 4 5 6 7
Ou seja, o primeiro campo é o login.
Assim, o pipe usa a saída do primeiro comando para fornecer uma entrada para o segundo, e o resultado é o campo de login de cada linha do /etc/passwd.
Outro exemplo, envolvendo mais pipes (ou seja, você pode usar mais de um pipe de uma vez):
[rbp@muppets ~]$ w | grep '^rbp ' | wc -l = 7 [rbp@muppets ~]$ =
O comando "w" lista os usuários conectados na máquina. O comando "grep '^rbp '" pega essa lista e mostra só as que começem com "rbp " (para não pegarmos substrings como 'rbpsdgf'). Finalmente, o comando "wc -l" conta essas linhas. Assim, sei que, no momento, o usuário rbp tem 7 shells abertos na máquina (dia fraco... ;) .
Fonte: http://www.dicas-l.com.br/print/20000906.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
Formatação de Texto
Formatação de Texto
Eu gosto de escrever adotando uma largura de linha de no máximo 60 caracteres. Acho que fica mais fácil de ler e bem mais agradável.
Da mesma forma, quando recebo correspondência de alguém, faço a mesma coisa, organizo o texto em 60 colunas.
Sistemas GNU/Linux oferecem um recurso excelente para realizar esta tarefa, o comando fmt.
O comando fmt pode ser invocado para fazer esta formatação tanto diretamente como a partir de um editor de texto como o vi (meu favorito :-)
Para invocá-lo a partir do vi, entre em modo de comando, pressionando a tecla <ESC> e digite:
:%!fmt -w 60
O caractere % indica que a formatação deve ser aplicada a todo o texto. O caractere ! invoca um comando externo ao editor. O que se segue, fmt -w 60, indica que as linhas devem ser formatadas com largura máxima de 60 caracteres. Isto nem sempre é possível, pois o fmt não realiza separação silábica.
Para utilizar o comando fmt diretamente:
fmt -w 60 arquivo.txt > novoarquivo.txt
Fonte: http://www.dicas-l.com.br/print/20030424.html
Semana do Júlio Neves: Substituição de Processos
Semana do Júlio Neves - Substituição de Processos
Colaboração: Júlio Neves
Ontem aqui apareceu uma dica sobre named pipes, hoje vou mostrar que o Shell também usa os named pipes de uma maneira bastante singular, que é a substituição de processos (process substitution). Uma substituição de processos ocorre quando você põe um < ou um > grudado na frente do parêntese da esquerda. Teclando-se o comando:
$ cat <(ls -l)
Resultará no comando ls -l executado em um subshell como é normal, porém redirecionará a saída para um named pipe temporário, que o Shell cria, nomeia e depois remove. Então o cat terá um nome de arquivo válido para ler (que será este named pipe e cujo dispositivo lógico associado é /dev/fd/63), e teremos a mesma saída que a gerada pela listagem do ls -l, porém dando um ou mais passos que o usual.
Como poderemos constatar isso? Fácil... Veja o comando a seguir:
$ ls -l >(cat) l-wx------ 1 jneves jneves 64 Aug 27 12:26 /dev/fd/63 -> pipe:[7050]
É... Realmente é um named pipe.
Você deve estar pensando que isto é uma maluquice de nerd, né? Então suponha que você tenha 2 diretórios: dir e dir.bkp e deseja saber se os dois estão iguais (aquela velha dúvida: será que meu backup está atualizado?). Basta comparar os dados dos arquivos dos diretórios com o comando cmp, fazendo:
$ cmp <(cat dir/*) <(cat dir.bkp/*) || echo backup furado
ou, melhor ainda:
$ cmp <(cat dir/*) <(cat dir.bkp/*) >/dev/null || echo backup furado
Este é um exemplo meramente didático, mas são tantos os comandos que produzem mais de uma linha de saída, que serve como guia para outros. Eu quero gerar uma listagem dos meus arquivos, numerando-os e ao final dar o total de arquivos do diretório corrente:
while read arq do ((i++)) # assim nao eh necessario inicializar i echo "$i: $arq" done < <(ls) echo "No diretorio corrente (``pwd``) existem $i arquivos"
Tá legal, eu sei que existem outras formas de executar a mesma tarefa. Mas tente fazer usando while, sem usar substituição de processos que você verá que este método é muito melhor.
Até amanhã...
Duvidas? <julio neves (a) gmail com>
Deseja fazer curso de Programação em Shell? <julio neves (a) tecnohall com br>
Conheça também o livro de Programação Shell de Júlio Neves
Fonte: http://www.dicas-l.com.br/print/20050222.html
Testando segurança de um servidor Apache2
Testando segurança de um servidor Apache2
Colaboração: André Jaccon
Neste tutorial iremos mostra como utilizar o Nikto, um scanner para Web Server escrito em Perl, no qual pode ser utilizado para detectar vulnerabilidades em servidores Web Apache.
Considerações Iniciais
Os testes realizados foram efetuados no seguinte ambiente
- Distribuição Debian Gnu/Linux 3.1 R2
- Kernel 2.6.17
- Apache 2.0.59
- Perl 5.8.4
Baixando os pacotes necessários
O Nikto pode ser baixado no site http://www.cirt.net/nikto/ o link direto para download do script é http://www.cirt.net/nikto/nikto-current.tar.gz
Iniciando a configuração.
É muito simples a utilização do script após ter baixo para o seu computador o script descompacte em uma pasta utilizando o seguinte comando:
tar -zxvf nikto-current.tar.gz
Em meu caso será criado a pasta com o script nikto-1.35 que é a versão atual do script quando escrevi este artigo.
Fazendo Update da base de dados
Para fazer update com atualizações da base de dados do Nikto utilize os comandos abaixo:
perl ./nikto.pl -update
Rodando o scanner
Para rodar o scanner basta executar o comando abaixo
perl ./nikto.pl -allcgi -h localhost
Flags importantes
Algumas flags de comando importantes que podemos citar estão descriminadas abaixo com suas respectivas funcionalidades:
- -h: especifica o host a ser scanneado
- -allcgi: executa todos os scripts internos do nikto para scanner o host desejado
- -cookies: imprime os cookies encontrados
- -evasion+: técnica de invasão ids
- -findonly: encontra apenas portas https, não executa o scanner completamente
- -format: salva arquivo no formato (use -o) : htm, csv or txt
- -generic: força um scanner completo padrão
- -host+: host alvo o mesmo que -h
- -id+: usa autênticação no host no formato userid:password
- -nolookup: pula a resolução de nomes
- -output+: escreve a saida do comando para arquivo
- -port+: utilizado para indicar a porta do httpd (padrão 80)
- -ssl: força scan em modo ssl
- -timeout: tempo de timeout do servidor (padrão 10 segundos)
- -useproxy: usa proxy configurados no config.txt
- -version: imprime a versão dos plugins do banco de dados
- -vhost+: virtual host ( para cabeçalho do host )
- -verbose: Apresenta a saída conforme o scan está rodando
Abaixo está a descrição das técninicas de invasão de IDS:1 Random URI encoding (non-UTF8) 2 Directory self-reference (/./) 3 Premature URL ending 4 Prepend long random string 5 Fake parameter 6 TAB as request spacer 7 Random case sensitivity 8 Use Windows directory separator () 9 Session splicing
Técnicas de mutação:1 Test all files with all root directories 2 Guess for password file names 3 Enumerate user names via Apache (/~user type requests) 4 Enumerate user names via cgiwrap (/cgi-bin/cgiwrap/~user type requests)
English for Reading and Listening
Aprenda inglês de uma forma divertida com piadas, citações e textos.
Vocabulário comentado e áudio em MP3
Seu vizinho está se aproveitando da sua conexão wireless? Divirta-se.
Fonte: Notícias Linux
Pode ser divertido o fato de seus vizinhos estarem se aproveitando da sua conexão wireless (aberta). Quando isso acontece você tem duas opções: encriptar sua rede ou divertir-se. Caso escolha a segunda opção, um bom exemplo é mostrado no endereço a seguir (com screenshots). Seguindo alguns passos, conseguirás deixar seu vizinho louco, girando imagens dos sites que acessa (usando proxy transparente e mogrify), borrando imagens ou simplemente redirecionando o tráfego a uma página qualquer (com iptables).
http://www.ex-parrot.com/~pete/upside-down-ternet.html
Fonte: http://barrapunto.com/articles/06/07/27/200212.shtml
Comente: http://www.noticiaslinux.com.br/nl1154053132.html#comentarios
Fonte: http://www.dicas-l.com.br/print/20060805.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
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
Implemente e Configure o seu Linux com IPTABLES
Implemente e Configure o seu Linux com IPTABLES
Colaboração: William da Rocha Lima <<wrochal (a) linuxit com br>>
Revisão 1.2 - 23/06/2003
Nos sabemos que nos dias de hoje é essencial o firewall, em servidores corporativos como servidores de web, e-mail e gateways, devido a demanda de hackers e lammers. Mas sabemos que assim mesmo não basta montar um firewall e por em mente que nunca vai ser invadido, lembra-se de que é primordial verificar os Updates, Advisores, Bug e falhas de sistema. Tenha em mente além de configurar um sistema de firewall, também administratar por Logs e IDS, e que tenha administratar os Logs para verificar possíveis erros e de uma forma fácil e ágil, e IDS para verificar a Dequitação de Intrusos. Quando falamos em sistemas operacional linux como firewall você encontra ferramentas capazes e eficaz para efetuar esta função. E o melhor de tudo como que o Linux é free,você pode pegar o linux na empresa de seu amigo e instalar na sua empresa sem problemas.
Softwares de Firewall para o Linux
O linux por ser um software livre, onde uma comunidade de desenvolvedores contribuem quase que diariamente para seu desenvolvimento e melhorias. Quando se fala em desenvolvimento e melhorias do Kernel se tem um preocupação com firewalls e segurança.
Conheça os Firewalls conforme a versão do kernel
- Ipfwadm - O IP Firewall Administration, ou simplesmente ipfwadmin foi a ferramenta padrão para construção de regras de firewall, para o Kernel anterior à versão 2.2.0. Dizem que o Ipfwadm era extremamente complexo.
- Ipchains - O ipchains foi a solução, ou melhor, a atualização, feita para o kernel 2.2 do ipfwadm. A idéia do ipchains foi ter o poder do ipfwadm, mas com uma simplicidade e facilidade no que diz respeito à criação de regras. Além de prover sua facilidades, é criar uma compatibilidade com o ipfwadm através do utilitário ipfwadm-wrapper.
- Iptables e o Netfilter - A nova geração de ferramentas de firewall para o Kernel 2.4 do Linux. Além de possuir as facilidade do ipchains, e implementar a facilidade do NAT e filtragem de pacotes mais flexíveis que o IPchains. Para saber mais informações do Iptables acessem http://www.netfilter.org/
O que precisamos saber?
Na configuração do Firewall com o iptables, é preciso saber quais são as regras a serem utilizadas para rodar o Firewall:
Regras do Firewall
- INPUT: È utilizada quando o destino final é a própria máquina firewall.
- OUTPUT: Qualquer pacote gerado pela máquina firewall e que deva sair para a rede será tratado pela regra OUTPUT.
- FORWARD: Qualquer pacote que atravessa o firewall, de uma máquina e direcionado à outra, será tratado pela chain FORWARD.
Basicamente o IPTABLES tem as seguintes políticas: - DROP - Nega pacote e não manda um pacote de volta para o emitente.
- ACCEPT - Aceita o pacote
- REJECT - Nega pacote e manda um pacote de volta do tipo host-unreachable (Host Inalcançável)
==Comandos Principais do IPtables==
- -A - Este comando acrescenta uma regra às existentes no sistema, ou seja, permite atualizar regras já existentes na estrutura do firewall.
- -I - Este comando insere uma nova regra dentro das existentes no firewall.
- -D - Este comando exclui uma regra específica no firewall.
- -P - Este comando define a regra padrão do firewall.
- -L - Este comando lista as regras existentes no firewall.
- -F - Este comando ZERA todas as regras criadas no Firewall (o chamado flush).
- -h - Este comando mostrará o help, ajuda de comando.
- -R - Este comando substitui um regra no firewall.
- -C - Este comando basicamente checa as regras.
- -Z - Este comando zera uma regra específica.
- -N - Este comando cria uma nova regra com um nome.
- -X - Este comando exclui uma regra específica por seu nome.
Os parâmetros padrão do iptables são os seguintes:
- -p! (protocolo) - define qual o protocolo TCP/IP deverá ser tratado. São eles: TCP, UDP e ICMP
- -s! (origem)/ -d! (destino) - Define qual o endereço de origem (-S) e de destino (-D) que a regra atuará. Este comando possui dois argumentos: endereço/máscara e porta. Ex.: -S 10.0.0.1/24 80,.
- -i! (interface) - define o nome da interface de rede onde trafegará os pacotes de entrada e saída do firewall. Muito utilizado em mascaramento e técnicas de NAT. Exemplo: -W eth1.
- -j! (ir para) - Serve para redirecionar uma ação desde que as regras sejam similares.
- -f!(fragmento) - Trata datagrama fragmentados.
Os comandos e os parâmetros são exatamente iguais aos do ipchains, sem tirar nem pôr.
Extensões
Novidade do iptables que facilita as regras.
-sport[!] [port:port] -dport[!] [port:port]
Normalmente estas extensões são utilizadas com o comando -m do iptables. Trata-se de um direcionamento de porta(s) origem (-sport), para porta(s) destino (-dport). Pode-se inclusive definir um número padrão de portas para o acesso (port:port). Este comando pode ser utilizado tanto para portas TCP ou UDP.
-mac-source[!] endereço
especifica qual a placa de rede, através de seu endereço MAC, que irá transmitir pacotes através do firewall, limitado pela política do mesmo.
-icmp-type[1] tipo
Especifica quais os tipos de pacotes ICMP pode passar ou não pelo firewall, São eles:
Mensagem Tipo Código Echo-request 8 0 Echo-reply 3 0 Source-quench 4 0 Time-exceed 11 0 Destination-unreachable 3 0 Network-unreachable 3 0 Host-unreachable 3 1 Protocol-unreachable 3 2 Port-unreachable 3 3
Com isto podemos bloquear alguns ataques do tipo ping flood, bloquear ping e etc
[!] -- syn - especifica o uso dos bits ACK e FIN em requisições SYN TCP.
Especificamente, a opção -m state' aceita uma opção adicional--state', que é uma lista de estados de ativação separados por vírgula. (a flag '!' não indica a ativação desses estados). Esses estados são:
NEW Um pacote que cria uma nova conexão.
ESTABLISHED Um pacote que pertence a uma conexão existente (isto é, um pacote de resposta).
RELATED Um pacote que está relacionado com (mas não faz parte de) uma conexão existente, como um ICMP error, ou (com o módulo FTP inserido),um pacote que estabelecido por uma conexão de dados ftp.
INVALID Um pacote que não poderia ser identificado por alguma razão: isto inclui execução fora da memória e erros de ICMP que não correspondam a nenhuma conexão existente. Geralmente estes pacotes devem ser barrados (drop).
Exemplos do Firewall
#iptables -A INPUT -p icmp -j DROP
Esta regra nega todos os pacotes ICMP vindos do servidor, em que se encontra o firewall.
#iptables -D INPUT -p icmp -j DROP
Esta regra exclui a regra criar acima.
#iptables -A INPUT -s 192.168.1.0/24 -j DROP
Esta regra acima faz com que todos os pacotes vindo de qualquer endereço da classe de ip 192.168.1.1 á 192.168.1.255 nega os pacotes.
#iptables -A OUTPUT -p icmp -d ! 192.168.1.0/24 -j ACCEPT
Esta regra acima faz com que todos os pacotes vindo de qualquer endereço da classe de ip 192.168.1.1 á 192.168.1.255 aceita os pacotes.
#echo 1 > /proc/sys/net/ipv4/ip_forward
Habilitando o recurso de IP forwarding
Configurando o Firewall contra ataque
Proteção contra Syn-floods
# iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
Port scanners ocultos
# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit
1/s -j ACCEPT
Ping da morte
# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Proteção Contra IP Spoofing
# iptables -A INPUT -s 10.0.0.0/8 -i Interface da NET -j DROP
# iptables -A INPUT -s 172.16.0.0/16 -i Interface da NET -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -i Interface da NET -j DROP
Obs.: Interface da NET pode ser ppp0, ethX e etc.
Log a portas proibidas e alguns backdoors
Porta FTP
# iptables -A INPUT -p tcp --dport 21 -j LOG --log-prefix "Serviço: FTP"
Porta Wincrash
# iptables -A INPUT -p tcp --dport 5042 -j LOG --log-prefix "Serviço: Wincrash"
Portas BackOrifice
# iptables -A INPUT -p tcp --dport 12345 -j LOG --log-prefix "Serviço: BackOrifice"
# iptables -A INPUT -p tcp --dport 123456 -j LOG --log-prefix "Serviço: BackOrifice"
Redirecionamento de Portas (Usado em DMZ)
Redirecionar Porta SMTP
# iptables -t nat -A PREROUTING -i ethx -p tcp --dport 25 -j DNAT --to 192.168.1.1
Redirecionar Porta POP
# iptables -t nat -A PREROUTING -i ethx -p tcp --dport 110 -j DNAT --to 192.168.1.1
OBS.:Sendo que ethx é sua interface de entrada da WAN.
Bloqueando Kazaa Lite
Para ativar o módulo String match support (EXPERIMENTAL) tem que aplicar o patch e logo depois compilar o kernel.
# iptables -m string --string "X-Kazaa-Username:" -j DROP
# iptables -m string --string "X-Kazaa-Network:" -j DROP
# iptables -m string --string "X-Kazaa-IP:" -j DROP
# iptables -m string --string "X-Kazaa-SupernodeIP:" -j DROP
Bloqueando cmd.exe
Neste caso você tenha atrás do seu firewall linux um servidor de web IIS da microsoft, e deseja evitar que worms com código arbitrários que usam o comando cmd.exe:
Bloqueando em Silêncio
# iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe"
Bloqueando e reportando por uma hora
# iptables -I INPUT -j LOG -p tcp -s 0.0.0.0/0 -m string --string "cmd.exe" -m limit --limit 1/hour
Scripts Cases Ruleset 1 Ruleset 2 Ruleset 3 Ruleset 4 Ruleset 5 Ruleset 6
Referência:
- Netfilter - http://www.iptables.org/documentation/pomlist/pom-extra.html#string
- Linux Guru - http://articles.linuxguru.net/view/120
- Securityfocus - http://www.securityfocus.com/infocus/1531
Fonte: http://www.dicas-l.com.br/print/20030705.html
Atribuição de Valores a Variáveis em Shell Scripts
Atribuição de Valores a Variáveis em Shell Scripts
Colaboração: Rubens Queiroz de Almeida
Variáveis são sequências de letras, digitos ou underscores, começando com uma letra ou underscore "_".
A atribuição de valor a uma variável irá depender da shell sendo utilizada. Na Bourne shell e compatíveis (sh), atribui-se o valor a uma variável da seguinte forma:
DATE=6jun60
À variável DATE foi atribuído o valor 6jun60.
Outra característica extremamente útil é atribuir o valor de comandos a variáveis. Por exemplo, suponhamos que queiramos que a variável DATE assuma o valor da data corrente, no formato mmddyy:
DATE=""date +%m%d%y""
O comando date, como especificado acima, irá retornar o valor 052797, onde 05 indica o mês de maio, 27 o dia do mês e 97 o dia do ano.
Importante notar as aspas invertidas "`". Ao se delimitar um comando por aspas invertidas você está indicando que está interessado no resultado do comando, que por sua vez será atribuído à variável.
Por exemplo, se desejassemos enviar uma mensagem a todos os usuários de determinado computador:
#!/bin/sh for user in ""awk -F: '' /etc/passwd"" do mail -s "Aviso Importante" $user < mensagem.importante echo $user done
O shell script acima, irá obter, com o auxílio do programa awk, uma listagem de todos os usuários da máquina, enviando em seguida uma mensagem a todos eles. À variável $user serão atribuídos tantos valores quantos os retornados pelo comando
awk -F: '' /etc/passwd
Observar que, no shell script, o comando está delimitado por aspas invertidas (`). Como os campos no arquivo /etc/passwd são delimitados por ":", faz-se necessário a especificação da diretiva "-F:" para que o comando awk possa selecionar corretamente a identificação do usuário ($1, ou o primeiro campo). Na linha onde se envia a mensagem o caracter "<" indica que a mensagem a ser enviada encontra-se dentro do arquivo "mensagem.importante". O título da mensagem é informado através da diretiva "-s" seguida pelo valor "Aviso Importante". O comando "echo $user" é apenas informativo e serve para monitorar o progresso da execução do comando.
Dica Humorística
HOW TO IDENTIFY YOUR SYSTEM ADMINISTRATOR:
Situation: Low Disk Space
TECHNICAL THUG: Writes a suite of scripts to monitor disk usage, maintain a database of historic disk usage, predict future disk usage via least squares regression analysis, identify users who are more than a standard deviation over the mean, and send mail to the offending parties. Places script in cron. Disk usage does not change, since disk-hogs, by nature, either ignore script-generated mail, or file it away in triplicate.
ADMINISTRATIVE FASCIST: Puts disk usage policy in motd. Uses disk quotas. Allows no exceptions, thus crippling development work. Locks accounts that go over quota.
MANIAC:
# cd /home # rm -rf ""du -s * | sort -rn | head -1 | awk ''"";
IDIOT:
# cd /home # cat ""du -s * | sort -rn | head -1 | awk '< printf "%s/*n", $2>'"" | compress
Fonte: http://www.dicas-l.com.br/print/19970529.html
Roteamento avançado - Linux - utilizando IPROUTE e IPTABLES - Load Balance
Roteamento avançado - Linux - utilizando IPROUTE e IPTABLES - Load Balance
Colaboração: Fabricio Ferreira - GUZZY
Certo tempo atrás, escrevi um script usando IPROUTE2 e IPTABLES que desenvolvi na ocasião, já que havia a necessidade de utilizar 2 links de Internet distintos. Desta vez, reescrevi com muito mais detalhes mostrando exatamente como funciona cada passo.
Lembrando que, este script foi desenvolvido no SLACKWARE, mas acredito que funcione em qualquer outra distribuição LINUX com Kernel 2.4.x e superiores, com algumas poucas modificações.
Quanto aos links, vamos chamá-los de LINK1 e LINK2...
Imagine que você queira que determinado protocolo use o LINK1 e outro protocolo use o LINK2.
Um exemplo fácil seria dizer que mensagens de E-mail SMTP e POP (portas 110 e 25) utilizam o LINK1, enquanto o tráfego de internet (portas 80, 21, 53, 443...) utiliza o LINK2. Isto permitiria que usuários fizessem downloads pesados sem comprometer o tráfego de mensagens, ou ainda, enviar e receber mensagens de E-mail grandes sem interferir na velocidade dos usuários que navegam na Internet.
Um outro exemplo para quem tem Vlans em suas redes seria dizer que a REDE 192.160.0.X utiliza o Link1, enquanto a REDE 192.170.0.X utiliza o LINK2.
Basicamente, o processo funciona marcando pacotes que entram e saem do FIREWALL onde o script será implementado com o Comando IPTABLES usando Mark, um artifício que faz com que o Firewall monte uma tabela dinâmica de todos os pacotes que passam por ele. Imagine que você tenha um Firewall com 4 Interfaces, assim vamos chamá-las de: ETH0, ETH1, ETH2 e ETH3, onde ETH0 está conectada à sua LAN interna, a ETH1 conectada em uma DMZ, e as interfaces ETH3 e ETH4 conectadas a 2 Links distintos.
Se um pacote entrou pela interface ETH0 e saiu pela interface ETH3, é necessário que ele retorne para o mesmo lugar de onde veio. Eis o motivo de marcar os pacotes; caso contrário, eles se utilizarão do DEFAULT GATEWAY do Firewall, que pode não ser o mesmo que você deseja.
Entendendo isto, podemos seguir adiante com nosso script.
Abaixo descrevo detalhadamente como fazer cada configuração no Script para que você tenha sucesso na implementação.
Entendam que os IP´s aqui utilizados são fictícios, bem como seus Defaut Gateways. Você deverá trocá-los pelos IP´S da sua rede conforme a necessidade!
Eis um exemplo de um script pronto em um Firewall com 3 Interfaces apenas.
A primeira - ETH0, é a interface conectada à rede interna. A Interface ETH1 é a interface ligada ao LINK1, e por último, a interface ETH2, ligada ao LINK2.
Vejamos:
############################################################################## # Nesta parte denominamos variáveis para as interfaces como segue. # Denominamos que o nome LAN seja referente à Interface ETH0 que no nosso # script é a da rede interna. Verifique no seu Firewall qual é a interface # correta. IF_LAN='eth0' # Aqui denominamos as variáveis dos LINKS 1 e 2, e os chamamos de LINK1 e LINK2 # É claro que você poderá chamá-los do que quiser. Exemplo: ADSL1 e ADSL2, # mas não esqueça de alterar as variáveis no restante do script. IF_LINK1='eth1' IF_LINK2='eth2' # Aqui colocamos os Gateways dos Links de Internet. # Geralmente, os Default Gateways dos Links são os IP´S dos roteadores de # Internet. GW_LINK1='200.70.0.1' GW_LINK2='200.80.0.1' # Nesta parte, utilizamos o comando IPTABLES para mascarar os IP s, ou seja, # fazemos um NAT (Network Address Translation) para que os pacotes que venham da # Interface ETH0 com IP s da rede interna, ou mesmo pacotes gerados dentro do # próprio Firewall, possam sair para a Internet com endereços trocados, usando # os IP s das interfaces ligadas aos Links de Internet. # O MASQUERADE ao final do comando faz exatamente isto. # Caso contrário, utilizaria ACCEPT, mas aí os pacotes sairiam para a Internet # com IP s da rede interna e jamais retornariam ao Firewall. iptables -t nat -A POSTROUTING -o $IF_LINK1 -j MASQUERADE iptables -t nat -A POSTROUTING -o $IF_LINK2 -j MASQUERADE # Aqui começamos a marcar os pacotes diferenciando-os pela porta utilizada. # Observe que escolhemos os pacotes com destino às portas 80 (HTTP) 443 (HTTPS) # 25 (SMTP) 110 (POP) # Todo pacote que passar pelo Firewall com estas particularidades receberão # uma marca , uma espécie de carimbo. Pacotes destinados à porta 80 # recebem carimbo de número 2, pacotes com destino à porta 25 # recebem carimbo número 3. # Desta forma, podemos diferenciá-los para que mais à frente no script tenhamos # controle do que saiu/entrou e por onde saiu/entrou. iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 80 -j MARK --set-mark 2 iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 443 -j MARK --set-mark 2 iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 25 -j MARK --set-mark 3 iptables -t mangle -A PREROUTING -i $IF_LAN -p tcp --dport 110 -j MARK --set-mark 3 # A diferença entre o PREROUTING e o OUTPUT é que, PREROUTING abrange os # pacotes que foram originados fora do FIREWALL, por exemplo Interface ETH0 # ($IF_LAN), enquanto OUTPUT são os pacotes originados no Firewall, ou seja, na # própria console. iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 2 iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2 iptables -t mangle -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 3 iptables -t mangle -A OUTPUT -p tcp --dport 110 -j MARK --set-mark 3 # Aqui montamos as tabelas dinâmicas a partir das marcas (carimbos) que fizemos # lá em cima no nosso script. # Pacotes que foram marcados com 2 vão para a tabela table 20 e os marcados # com 3, vão para a tabela table 21 , com a mesma prioridade. Perceba o PRIO 20 # após os comandos. ip rule add fwmark 2 table 20 prio 20 ip rule add fwmark 3 table 21 prio 20 # se quisermos condicionar esta marcação de outra forma, podemos utilizar o # comando das seguintes formas: # Este condiciona que todos os pacotes que vierem da rede 192.160.0.0 vão para # a tabela 20. # O comando está comentado. Caso queira utilizá-lo, apenas retire o sinal de "#" # da frente. # ip rule add from 192.160.0.0/24 table 20 # Este outro condiciona os pacotes da rede 192.170.0.0 a irem para a tabela 21 # O comando está comentado. Caso queira utilizá-lo, apenas retire o sinal de # "#" da frente do comando. # ip rule add from 192.170.0.0/24 table 21 # Agora sim daremos rumo aos pacotes que foram marcados e cadastrados na tabela # dinâmica. # Veja que os pacotes que foram enviados para a tabela 20 têm como DEFAULT # GATEWAY o LINK1. Sendo assim, os pacotes serão enviados para o LINK1 na # Interface ETH1 com o IP 200.70.0.1. # Já os pacotes da tabela 21 serão enviados para o LINK2 na Interface ETH1, com # o IP 200.80.0.1 ip route add default via $GW_LINK1 dev $IF_LINK1 table 20 ip route add default via $GW_LINK2 dev $IF_LINK2 table 21 # Este último comando limpa a tabela, caso ela já tenha sido utilizada # anteriormente, ou apenas para termos certeza de que quando você resetar as # regras todas, o Firewall não guarde nenhum tipo de informação na # memória (cache). Daí o nome FLUSH CACHE. ip route flush cache
Você pode utilizar parte do script, se necessário. Por exemplo, se quiser apenas rotear pacotes pela origem, utilize:
ip rule add from 192.160.0.0/24 table 20
ou
ip rule add from 192.160.0.0/24 table 21
Conforme o Link que deseja utilizar. Onde 192.160.0.0/24 é a origem. Neste exemplo, a rede em questão tem a máscara 255.255.255.0 (/24)
Desta forma, não há necessidade de marcar pacotes e você poderá deletar as linhas do script.
Fabrício Ferreira GUZZY Especialista em Segurança Digital MCP Microsoft Certified Professional Linux Specialist
Fonte: http://www.dicas-l.com.br/print/20070327.html
O comando xargs
O comando xargs
Colaboração: Rubens Queiroz de Almeida
Os resultados obtidos pelo comando find podem ser redirecionados para o comando xargs para que sejam tomadas ações específicas (remoção, mudança de atributos, listagem, etc) sobre estes arquivos.
O comando xargs atua sobre o resultado a ele fornecido pelo standard input e constrói um comando baseado nesta entrada e em seus próprios argumentos da linha de comando.
Por exemplo:
% ls | xargs rm -f
Este comando irá remover todos os arquivos do diretório corrente. A diferença entre o comando acima e os comandos
% rm -f `ls`
e
% rm -f *
é que após a shell realizar a expansão dos nomes gerados através do "rm -f *" ou "rm -f ls" o tamanho da linha de comandos pode causar um erro. O comando xargs gera linhas de comando de tamanho compatível com as limitações do sistema e executa o comando solicitado tantas vezes quantas forem necessárias para completar a tarefa.
Fonte: http://www.dicas-l.com.br/print/19970820.html
O Comando man
O Comando man
Colaboração: Eduardo Maçan <<macan (a) unicamp br>>
Uma característica bastante interessante do comando man é a flag -t. Esta flag faz com que o comando man redirecione a saída gerada para um formatador que por sua vez irá criar um arquivo postscript.
% man -t tcpdump > tcpdump.ps
Em sistemas FreeBSD e Linux, o formatador utilizado é o groff, que normalmente faz parte da instalação básica destes sistemas. Os arquivos postscript resultantes são bastante mais agradáveis de se ler e podem ser visualizados com o comando gs (ghostscript) ou mesmo impressos em uma impressora postscript.
E não precisa nem dizer, 90% da informação está nas man pages. E o melhor conselho para quem está começando a trabalhar com Unix é RTFM :-)
Fonte: http://www.dicas-l.com.br/print/19980316.html
Usando o NetCAT
Usando o NetCAT
Colaboração: André Jaccon
O NetCat é um utilitário que lê e escreve através de conexões de rede usando protocolos TCP e UDP.
1. Considerações Iniciais
Plataforma usada:
- Debian 3.0 (Woody) / Kernel 2.4.30
- NetCat "NC" - 1.20-27
O NetCat pode ser instalado através da ferramenta Apt-Get no Debian usando o Mirror:
deb http://mirrors.kernel.org/debian/ testing main deb-src http://mirrors.kernel.org/debian/ testing main
Após adicionar os mirrors em seu /etc/apt/sources.list atualize o bd do Apt e instale o NC com os comandos abaixo:
apt-get update ; apt-get install netcat
2. Exemplos de uso do NetCat
- Com o NetCat você poderá testar se suas configurações do servidor de SMTP estão disponibilizando Relay's adequadamente ou não, veja o exemplo abaixo:
#netcat proveedor.internet.es 25 helo holahola mail from:<nobody@linux.org> rcpt to:<mailteste@seuservidor.com> 250 Recipient <destinatario@maquina.com> Ok data 354 Ok Send data ending with <CRLF>.<CRLF> Subject: prova X-Mailer: by-hand cutremail X'-D .
Caso a mensagem com código 354 apareça isso quer dizer que seu servidor está possibilitando Relay indevidamente, para finalizar tecle "." para fechar a conexão com o servidor. - Visualizando e-mails através do protocol POP
O NetCat é uma ótima ferramenta para executar teste de recebimento de e-mail's sem a necessidade de um software de e-mail cliente, veja o exemplo abaixo:#netcat seuservidor 110 +OK Bem vindo ao servidor POP3 de MailServer user sincronicx +OK password required for user carcoco pass delpassword list 1 2451 2 123433 3 323 dele 2 quit +OK goodbye
Com o exemplo de comando acima conectamos em seuservidor através da porta 110 POP, e entramos com usuário e senha para listar os 3 e-mail que estavam na caixa, logo após com o comando "dele 2" deletamos o e-mail de número 2 no Inbox. para finalizar saimos do servidor com o comando "quit" - Verificar informações sobre o servidor web de um determinando provedor
#netcat www.linux.org 80 get . /
- Criar um sistema de comunicação Shell entre máquina remotas
Para criar um sistema de comunicação equivalente ao comando wall use o comando na máquina 1:#nc -l -p 12345
onde a flag -p é a porta de comunicação que abriremos em nossa máquina 1.
Na máquina 2 entre com o comando:#netcat ip-ou-nome-de-maquina1 12345
Com isso será aberta um canal de comunicação através da porta 12345 no qual você poderá usar para mensagens instantaneas ou ainda transferência de arquivas. - Transferir arquivos entre máquinas:
Digamos que você precisa transferir um arquivo entre uma máquina e outra porém você não possui nenhum serviço client/servidor disponivél para transferência entre as máquinas, você pode usar o NC para transferir estes arquivos exemplo:
Digamos que a máquina 1 possui o arquivo teste.txt no qual deverá transferir para a máquina 2, para isso use o comando na máquina 1:#netcat -l -p 4000 < teste.txt
Na máquina 2 entre com o comando:#netcat maquina1 4000 > teste.txt
Ao final da transferência tecle CTRL+D para finalizar. verifique o diretório corrente.
Estas foram algumas das muitas funções possiveis com o NC, para saber mais sobre o NetCat consulte os Man Pages ou Info.
Fonte: http://www.dicas-l.com.br/print/20060718.html
Configuração de serviço FTP anônimo em sistemas Solaris
Configuração de serviço FTP anônimo em sistemas Solaris
Colaboração: Rubens Queiroz de Almeida
A configuração do serviço ftp anônimo em sistemas Solaris está amplamente documentada na man page do daemon ftpd.
Dentro desta página, além da descrição normal do programa ftpd, existe também uma shell script que realiza todas as tarefas necessárias para que o serviço funcione.
Eu vou fornecer aqui o caminho das pedras, para os apressados.
Primeiramente é necessário que se crie o usuário ftp e o grupo ao qual este usuário pertencerá. Para isto pode-se usar o comando vipw e acrescentar, ao arquivo /etc/passwd, uma linha do tipo
ftp:x:30000:30000:Anonymous FTP:/pub:/bin/false
e ao arquivo /etc/shadow uma linha como
ftp:NP:6445::::::
Ou então criar o usuário com o comando useradd:
useradd -c "Anonymous FTP User" -d /pub -g ftp -u 3001 -s /bin/false ftp
Em seguida executar a shell anonftp, retirada das man pages. Eu tomei a liberdade de modificar o último comando desta shell script. Este comando alterava a permissão do diretório home do usuário ftp para 777, o que não é em absoluto recomendável. Eu alterei o comando para
chmod 755 $/pub
Para executar esta shell script, salve-a com o nome que desejar e em seguida execute-a fornecendo (opcionalmente) como argumento o nome do diretório onde será instalado o serviço ftp anônimo. Caso este valor não seja fornecido será assumido o valor do diretório home do usuário ftp tal como definido no arquivo /etc/passwd.
anonftp
#!/bin/sh # script to setup anonymous ftp area # # handle the optional command line argument case $# in # the default location for the anon ftp comes from the passwd file 0) ftphome="""grep '^ftp:' /etc/passwd | cut -d: -f6""" ;; 1) if [ "$1" = "start" ]; then ftphome="""grep '^ftp:' /etc/passwd | cut -d: -f6""" else ftphome=$1 fi ;; *) echo "Usage: $0 [anon-ftp-root]" exit 1 ;; esac if [ -z "$" ]; then echo "$0: ftphome must be non-null" exit 2 fi # This script assumes that ftphome is neither / nor /usr so ... if [ "$
Fonte: http://www.dicas-l.com.br/print/19970913.html
O comando **bc**
O comando **bc**
Sistemas *nix em geral possuem um utilitário chamado bc que pode ser empregado para realizar diversos tipos de cálculos. Vejamos alguns exemplos:
$ bc bc 1.06 Copyright 1991-1994, 1997, 1998, 2000 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 2.4567*3 7.3701 2^9 512 2+3+5 10 2-3-5 -6 scale=2 7/5 1.40 scale=9 7/5 1.400000000 10/3 3.333333333
Mas qual a vantagem do comando bc em relação a ferramentas gráficas como kcalc do KDE? Basicamente, rapidez e facilidade de uso. Levam muito menos tempo para carregar e digitar os números também é feito com muito mais facilidade. Bem-vindos ao modo texto :-)
Por falar em modo texto, não deixem de ler os artigos do Aurélio Marinho Jargas sobre o assunto. A Dicas-L tem um espelho no endereço http://www.dicas-l.com.br/artigos/ Vejam a Coluna do Aurélio.
Fonte: http://www.dicas-l.com.br/print/20030728.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
Linux: Historico de Comandos
Linux - Historico de Comandos
Colaboração: Jorge Kinoshita [<jkinoshi (a) pcs usp br>]
Para se recuperar um comando antigo pode-se usar o ^R (Control R) dentro do bash. Basta digitar ^R e comecar a teclar uma string que faca parte do comando que se quer recuperar. Exemplo:
Estou no bash, digitei ^R e agora estou digitando 'ca':
(reverse-i-search)`ca': telnet carcara 23
Se o comando que aparece eh o que se procura basta teclar enter; e seguindo o exemplo, é dado o comando telnet.
Caso contrario, existem duas possibilidades: continuar digitando o comando para aprimorar a busca ou digitar outro ^R para pegar um comando mais antigo ainda dentro do historico.
Fonte: http://www.dicas-l.com.br/print/20000404.html
Opções da linha de comando para o programa netscape
Opções da linha de comando para o programa netscape
Colaboração: Rubens Queiroz de Almeida
Além das opções da linha de comando descritas na dica anterior, o netscape oferece também a possibilidade de se enviar instruções para uma cópia do netscape já em execução.
O comando abaixo, por exemplo
% netscape -remote 'openURL(http://ftp.unicamp.br)'
irá instruir o netscape já em execução em seu ambiente de trabalho a abrir a home page do servidor de ftp anônimo da Unicamp.
Outra opção
% netscape -remote 'addBookmark(http://ftp.unicamp.br)'
Além destes dois exemplos, são também suportadas várias outras diretivas. Nas diretivas abaixo, sempre que não se especificar o documento destino, o netscape irá exibir uma janela de diálogo para tomar então a ação desejada.
openURL (URL) - Abre uma janela diretamente no documento especificado openURL ( ) openURL (URL) - Abre uma janela diretamente no documento especificado openURL (URL, new-window) - Abre uma nova janela no documento especificado openFile (File) - Abre o arquivo especificado diretamente openFile ( ) saveAs (Output-File) saveAs ( ) saveAs (Output-File, Type) - Salva o documento presente no formato especificado (HTML, texto ou postscript) mailto (a, b, c) - Coloca os endereços a, b e c no campo To: mailto ( ) addBookmark ( ) - adiciona o documento corrente à lista de bookmarks addBookmark (URL) - adiciona o documento especificado à lista de bookmarks addBookmark (URL, Title)
Estes recursos são implementados utilizando recursos do programa XWindows, de maneira que não é necessário que o comando seja executado na mesma máquina onde o programa netwcape esteja em execução. Para maiores informações, consultar a documentação disponibilizada pela Netscape em http://home.netscape.com/newsref/std/x-remote.html.
Fonte: http://www.dicas-l.com.br/print/19970722.html
Consulta à Base de Softwares Instalados em Sistemas Linux
Consulta à Base de Softwares Instalados em Sistemas Linux
A grande maioria dos sistemas GNU/Linux utiliza como gerenciador de softwares o pacote RPM, sigla de Red Hat Package Manager.
O pacote RPM possui uma grande variedade de opções. As mais usadas são a instalação (diretiva -i) e remoção (diretiva -e).
Para instalar um software basta obter o pacote no formato rpm e emitir, como root, o comando
rpm -i software.rpm
Frequentemente precisamos também remover softwares de nosso sistema. O problema é que, embora conheçamos o nome dos pacotes, não sabemos sua grafia exata e não sabemos exatamente que valores fornecer ao comando rpm.
O programa staroffice é um deles. O pacote é grafado como StarOffice. Para consultar a base de dados do rpm temos algumas alternativas. A primeira
rpm -qa | grep -i staroffice
A diretiva "-i" fornecida ao comando grep indica que eu quero capturar ocorrências da palavra "staroffice", não importa sua grafia. Desta forma as palavras "StarOffice", Staroffice", etc. atendem ao argumento de busca.
Podemos então remover o software, utilizando o resultado do comando acima:
rpm -e StarOffice
A propósito, a diretiva "-e" significa "exclude".
Para encerrar, eu já escrevi um artigo bem mais completo sobre o pacote RPM, que pode ser acessado a partir da URL http://www.revista.unicamp.br/navegacao/index3.html Nesta página podem ser encontrados, além do artigo mencionado, chamado "Gerenciamento de Software com RPM", vários outros artigos sobre o sistema Linux.
Fonte: http://www.dicas-l.com.br/print/20001011.html
Servidores Debian com horario de verão sempre Atualizado.
Servidores Debian com horario de verão sempre Atualizado.
Colaboração: Everson de Oliveira
Uma das tarefas mais importantes de qualquer administrador de servidores é manter seus equipamentos com o horário correto. Isto dá confiabilidade às informações do log, bem como facilita a tarefa de localizar eventos no sistema.
O serviço de sincronismo de hora, ntp, pode ser instalado em qualquer equipamento, transformando nosso servidor em um ponto de atualização onde outros equipamentos podem se atualizar, mas muitas vezes apenas queremos que nosso servidor se atualize a partir de um serviço confiável na Intenet. Para esta tarefa existe o pacote ntpdate que pode ser instalado via aptitude ou similar:
aptitude install ntpdate
A simples instalação do pacote faz que o comando ntpdate seja executado a cada boot, sincronizando horário com pool.ntp.org. O servidor consultado fica cadastrado no arquivo /etc/default/ntpdate e se você quiser pode alterar para o servidor oficial da RNP: ntp.cais.rnp.br, que é o órgão oficial de divulgação dos horários de verão no Brasil.
Por falar em horário de verão, para manter seu Debian sempre em dia, sabendo quando inicia e quando termina o horário de verão a cada ano, existe um pacote específico para isto, o tz-brazil. Para poder utilizá-lo, de forma correta é conveniente que sua instalação esteja indicando o "time zone" correto. O indicado é América/São_paulo ou na saída do comando date "BRT".
O comando tzconfig é o responsável pela definição do timezone correto. Rode o comando date e caso sua saída não tenha a identicação BRT, altere o timezone executando o comando tzconfig:
Sun Mar 26 22:51:14 BRT 2006
A instalação do pacote tz-brasil cria uma tarefa agendada que atualiza a tabela de horários de verão em intervalos regulares. Se você tem o ntpdate rodando em seu equipamento, isto fará com que seu servidor altere corretamente o horário no início e no término do horário de verão.
Fonte: http://www.dicas-l.com.br/print/20060411.html
Instalando impressoras multifuncionais HP no Fedora usando HPLIP
Instalando impressoras multifuncionais HP no Fedora usando HPLIP
Colaboração: Eder Miranda
Recentemente, foi adquirida por um de nossos departamentos uma impressora multifuncional (all-in-one) HP modelo HP Laserjet 3030, os usuários necessitavam que a mesma disponibilizassem os serviços de cópiadora, impressora e scaner. A função de copiadora era implementada na propria máquina, e a função de impressora configurei através do Cups.
O problema foi instalar o scanner, pois o Sane só reconhecia modelos de aparelhos monofuncionais (só scanners).
Procurando no site da HP, encontrei o ferramenta para instalação de impressoras multifuncionais, seu nome é HPLIP.
Abaixo descrevo como configurar e instalar a ferramenta na distribuição Red Hat/Fedora C3.
Obs.: O HPLIP é dependente dos seguinte pacotes:
- cups-devel
- python-devel
- PyQt
- sip (só para o Fedora C3)
- net-snmp-devel
- libjpeg-devel
Instalando dependencia de pacotes:
- Abra o console.
- Faça login como administrador.
- Digite o comando abixo para instalar o cups-devel:
# yum install cups-devel
- Digite o comando abixo para instalar o python-devel:
# yum install python-devel
- Digite o comando abixo para instalar o PyQt:
# yum install PyQt
- Para Fedora C3, digite o comando para instalar o sip:
# yum install sip
- Digite o comando abixo para instalar o net-snmp-devel:
# yum install net-snmp-devel
- E por último instale o pacote lipjpeg-devel.
# yum install libjpeg-devel
Depois de instaladas as dependencias de pacotes, faça o download do HPLIP no seguinte endereço (http://sourceforge.net/project/showfiles.php?group_id=16846). Role a página até encontrar os links do HPLIP e baixe a versão mais atual (hplip-0.9.##.tar.gz). Estarei usando a versão hplip-0.9.4.
Instalando o HPLIP
Depois do download terminado, siga os seguintes passos:
- Abra o console.
- Faça login como administrador.
- Vá até o diretório onde o HPLIP foi salvo:
# cd //caminho do arquivo//
- Extraia os arquivos do HPLIP usando:
# tar xvfz [hplip versão.tar.gz]
Os arquivos extraidos ficaram numa pasta chamada hplip versão (por exemplo: hplip-0.9.4). - Entre no diretório:
# cd //nome pasta//
- Entre com os comando para configurar e instalação o drive no computador:
#./configure --prefix=/usr # make # make install
- Após instalado, reinicie os serviços de impressão:
# /etc/init.d/hplip restart # /etc/init.d/cups restart
Após o HPLIP ser instalado resta configurar a impressora.
Configurando a impressora USB
- Usando o cabo USB conecte a impressora ao computador.
- Abra o console.
- Faça login como administrador.
- Abra seu brower e digite o seguinte endereço: http://localhost:631.
- Na barra de menus, clique Printers.
- Clique em Add Printer.
- Entre com o usuário e senha de administrador.
- Na página Add New Printer, siga as instruções:
- No campo Name, digite o nome da impressora (por exemplo: lj3030). Nota: Esse nome não pode conter espaços.
- No campo Location, digite a descrição do local da impressora.
- No campo Description, digite uma descrição para impressora.
- Clique em Continue.
- Na página Device for nome_impressora, escolha o seguinte device:
hp:/usb/[printer name, serial number]
Por exemplo, "hp:/usb/hp_laserjet_3030?serial=MY31R1K02179".
- Clique em Continue.
- Na página Model/Driver for nome_impressora, escola a opção HP e clique em Continue.
- Na página seguinte, escolha o modelo correspondente da impressora, e clique em Continue.
- Imprimindo uma página de teste:
- Abra o HP Device Manager, dependendo o ambiente gráfico usado faça:
GNOME: Clique no Menu de aplicativos, vá em Accessories, e clique em HP Device Manager.
KDE Clique no Menu de aplicativos, vá em Utilities, e clique em HP Device Manager.
Nota: Você pode abrir o HP Device Manager usando o seguinte comando:#hp-toolbox.
Abrirá a janela do HP Device Manager.
- Clique no icone da impressora no lado esquedo, depois em print...
- Clique em Information, e no botão Print test page.
Também é possível instalar uma impressora da rede usando HPLIP, para essas e outras informações site o site de suporte da HP (http://hpinkjet.sourceforge.net/install.php).
Para quem não usa o Fedora nesse endereço também tem um tutorial detalhando de como instalar e configurar o HPLIP em outras distribuições como: Mandrake, Suse, Debian.
Fonte: http://www.dicas-l.com.br/print/20060101.html
Recuperando partições danificadas
Recuperando partições danificadas
Assim como no Windows, você nunca deve desligar o micro no botão ao rodar qualquer distribuição Linux.
Mas, acidentes acontecem. A energia elétrica acaba de vez em quando, alguns dos drivers de softmodems podem fazer o micro travar (estes drivers são proprietários, por isso não é possível corrigir bugs, como em outras partes do sistema; você depende unicamente da boa vontade do fabricante) e assim por diante.
Durante o boot, o sistema verifica as partições em busca de problemas, tentando resolver qualquer inconsistência no sistema de arquivos causado por um desligamento incorreto. Você pode perder alguns arquivos que ainda não tivesse sido salvos no HD, mas a idéia é que a verificação coloque todo o resto em ordem.
Para partições em ReiserFS é usado o reiserfsck, para partições em Ext2 ou Ext3 é usado o fsck e para partições em XFS é usado o xfs_repair.
Mas, em alguns casos, o dano pode ser grande o suficiente para que não seja possível repará-lo automaticamente, fazendo com que o sistema simplesmente deixe de dar boot.
Não há motivo para pânico. Você pode dar boot pelo CD do Kurumin e usá-lo para reparar as partições danificadas.
Abra um terminal e vire root (su), lembre-se que ao rodar o Kurumin pelo CD você pode definir a senha de root usando o comando "sudo passwd". A partição a ser reparada precisa estar desmontada. Vou usar como exemplo a partição /dev/hda1.
Se for uma partição Ext2 ou Ext3, use o comando:
# fsck /dev/hda1
Ele vai começar a apontar os erros e perguntar se cada um deve ser corrigido. Normalmente você pode ir apenas respondendo "y" para tudo, mas caso existam dados realmente importantes na partição é melhor prestar mais atenção. Arquivos danificados ou fragmentos de arquivos que puderam ser recuperados vão para a pasta "lost+found" no diretório raiz da partição.
Numa partição ReiserFS, comece com o comando:
# reiserfsck --check /dev/hda1
Ele exibe um aviso:
Do you want to run this program?[N/Yes] (note need to type Yes if you do):
Ou seja, você precisa digitar "Yes" para continuar, caso apenas dê Enter ele aborta a operação.
Ele vai verificar toda a estrutura do sistema de arquivos e indicar os erros encontrados. O próximo passo é usar a opção "--fix-fixable":
# reiserfsck --fix-fixable /dev/hda1
Este segundo comando efetivamente corrige todos os erros simples, que possam ser corrigidos sem colocar em risco as demais estruturas do sistema de arquivos. Em 90% dos casos isto é suficiente.
Caso seja encontrado algum erro grave, ele vai abortar a operação. Estes erros mais graves podem ser corrigidos com o comando:
# reiserfsck --rebuild-tree /dev/hda1
Este comando vai reconstruir do zero todas as estruturas do sistema de arquivos, vasculhando todos os arquivos armazenados. Esta operação pode demorar bastante, de acordo com o tamanho e quantidade de arquivos na partição. Nunca interrompa a reconstrução, caso contrário você não vai conseguir acessar nada dentro da partição até que recomece e realmente termine a operação.
O --rebuild-tree vai realmente corrigir qualquer tipo de erro no sistema de arquivos. Ele só não vai resolver o problema caso realmente existe algum problema físico, como por exemplo um grande número de setores defeituosos no HD.
Finalmente, caso você esteja usando uma partição formatada em XFS, comece com o:
# xfs_check /dev/hda1
Ele vai indicar os problemas encontrados. Para realmente corrigi-los, rode o:
# xfs_repair /dev/hda1
Assim como no caso do reiserfsck, todo o processo é automático. Ao contrário do ext2, tanto o reiserfs quanto o XFS são sistemas de arquivos muito complexos, por isso qualquer intervenção manual só aumentaria a possibilidade de destruir tudo.
Mas, ambos incluem algumas opções avançadas, que podem ser especificadas no comando. Você pode dar uma olhada dentro dos manuais: "man reiserfsck" ou "man xfs_repair".
Gostou da dica? Conheça outros trabalhos do autor
- Livro Impresso: Linux Ferramentas Técnicas Carlos E. Morimoto. 256 páginas, R$ 27.
- Agenda de cursos presenciais em SP e RS
Fonte: http://www.dicas-l.com.br/print/20050621.html
Permitindo a usuários Windows-ADS a logar em uma máquina Linux
Permitindo a usuários Windows-ADS a logar em uma máquina Linux
Colaboração: Henrique Cicuto Machado
Os procedimentos abaixo descritos forem testados e estão atualmente em operação em máquinas rodando a distribuição Linux Fedora Core 3 em uma rede Active Directory Windows 2000.
No final do documento existem algumas observações extras sobre algumas seções.
Introdução
Apesar da grande maioria das empresas que adotaram, em qualquer aspecto, o uso do Linux atualmente se utilizarem de servidores Linux e estações Windows (senão uma rede completamente Linux), existem aquelas (a minha, por exemplo) que resolveram adotar máquinas Linux dentro de uma rede Windows.
Esse foi meu primeiro grande projeto trabalhando com Linux, e digo que ter que fazer isso sozinho não foi nada fácil. Então resolvi escrever esse pequeno tutorial sobre como implementar esse tipo de solução. Espero que possa ajudar alguém.
Instalação
A instalação é bem simples, sendo necessários apenas os seguintes pacotes:
- Suíte SAMBA (samba, samba-common, samba-client)
- PAM (Pluggable Authentication Modules)
- Kerberos (krb5-libs e krb5-workstation)
Configuração
Agora vamos iniciar a configuração dos arquivos. Segue abaixo uma breve legenda para os exemplos:
- DC01 = É o meu controlador de domínio da rede Windows. IP: 192.168.0.2
- WS01 = É a minha estação de trabalho Linux
- KDOMAIN.SP = É o meu domínio Windows
- Admin = É o meu usuário Administrador da rede Windows
1) Kerberos (krb5.conf): Altere as seções 'realms' e 'domain_realms' para ficarem similares as abaixo.
[realms] KDOMAIN.SP = { kdc = 192.168.0.2 default_domain = kdomain.sp } [domain_realms] .kdomain.sp = KDOMAIN.SP kdomain.sp = KDOMAIN.SP
Cheque a configuração obtendo um ticket do Kerberos. Execute numa linha de comando:
kinit Admin@KDOMAIN.SP Password for Admin@KDOMAIN.SP:
Entre com a senha e pressione Enter. Se não aparecer nenhuma mensagem quer dizer que funcionou. Cheque o ticket com o comando 'klist'. A saída deve ser algo mais ou menos como abaixo:
Ticket cache: FILE:/tmp/krb5cc_10000_YwFfS0 Default principal: Admin@KDOMAIN.SP Valid starting Expires Service principal 08/23/05 09:30:00 08/23/05 19:30:04 krbtgt/KDOMAIN.SP@KDOMAIN.SP renew until 08/24/05 09:30:00 Kerberos 4 ticket cache: /tmp/tkt10000 klist: You have no tickets cached
2) SAMBA (smb.conf): A configuração do SAMBA pode variar muito de rede para rede, mas as opções necessárias estão listadas aqui.
[global] netbios name = WS01 server string = WS01 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 realm = KDOMAIN.SP workgroup = KDOMAIN security = ads password server = * encrypt passwords = yes winbind separator = + winbind use default domain = yes winbind use default domain = yes winbind enum users = yes winbind enum groups = yes idmap uid = 10000-60000 idmap gid = 10000-60000 template shell = /bin/bash template homedir = /home/%U
Agora execute o comando 'net' para adicionar a máquina Linux como parte da rede Windows:
net ads join
A saída do comando será algo como assim:
[2005/08/23 09:51:33, 0] libads/ldap.c:ads_add_machine_acct(1405) Using short domain name -- KDOMAIN Joined 'WS01' to realm 'KDOMAIN.SP'
Agora suba os daemons do SAMBA (smbd e nmbd) e do Winbind (winbindd). Cheque a comunicação do Winbind através dos comandos 'wbinfo -u', 'wbinfo -g' e 'wbinfo -t'. O primeiro deverá listar os usuários do Windows, o segundo os grupos e o terceiro deverá devolver a mensagem 'checking the trust secret via RPC calls succeeded'.
3) PAM: No diretório do pam, nós iremos alterar o system-auth. Uma observação importante aqui: No Fedora, esse arquivo afeta o login pelos terminais texto e pelo KDM. Apesar de ter tentando, eu admito que não consegui fazer essa alteração para fazê-la funcionar no GDM ou no XDM. Abaixo é uma cópia do meu system-auth. Outra observação importante: Quando eu fui configurar esse arquivo, percebi que havia sido criado, automaticamente, um system-auth-winbind. Caso ele exista, basta renomeá-lo para system-auth.
auth sufficient /lib/security/pam_winbind.so auth required /lib/security/$ISA/pam_env.so auth sufficient /lib/security/$ISA/pam_unix.so likeauth nullok auth required /lib/security/$ISA/pam_deny.so account sufficient /lib/security/pam_winbind.so account required /lib/security/$ISA/pam_unix.so account sufficient /lib/security/$ISA/pam_succeed_if.so uid < 100 quiet account required /lib/security/$ISA/pam_permit.so password requisite /lib/security/$ISA/pam_cracklib.so retry=3 password sufficient /lib/security/$ISA/pam_unix.so nullok use_authtok md5shadow password sufficient /lib/security/pam_winbind.so use_authtok password required /lib/security/$ISA/pam_deny.so session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0022 session required /lib/security/$ISA/pam_limits.so session required /lib/security/$ISA/pam_unix.so
4) Nsswitch (/etc/nsswitch.conf): Apenas acrescente nas linhas 'passwd', 'shadow' e 'group' a entrada para o winbind:
passwd: files winbind shadow: files winbind group: files winbind
Agora é só correr para o abraço. Tente efetuar o login com seu usuário da rede Windows.
Observações:
- Caso opte por compilar os pacotes a partir do source, não esqueça de ativar, no SAMBA, os suportes a 'ldap, 'ads', 'pam', 'krb5' e 'winbind' (smbmount também é recomendável).
- É possível que, ao tentar obter o ticket do Kerberos ou ao adicionar a máquina no domínio, surja um erro sobre 'Clock skew too great'. Isso se refere a diferença muito grande de horário entre o Controlador de Dominio e a estação Linux. Acerte o relógio e o calendário caso isso ocorra.
- Por favor, quaisquer dúvidas ou criticas me falem. Meu e-mail é <henrique cicuto (a) gmail com>.
Fonte: http://www.dicas-l.com.br/print/20051117.html
Fatiamento de arquivos para transferência em links de baixa qualidade
Fatiamento de arquivos para transferência em links de baixa qualidade
Colaboração: Roberto Baronas
A transferência de grande quantidade de dados entre servidores UNIX distantes, servidos por links de telecomunicação de baixa qualidade às vezes é um problema que nos causa grandes dissabores, principalmente devido às frequentes interrupções que possam ocorrer.
No meu caso, uma solução caseira que resolveu em definitivo o problema de transferência de quatro arquivos de +-600Mb entre o Brasil e a Bolívia, num link de baixa velocidade foi a seguinte:
Usei o comando split conforme mostrado abaixo, para fatiar os arquivos de 600Mb em aproximadamente oito arquivos de 80Mb cada:
split -b 80m o92dk1.tar dk1
Esse comando, pegou o arquivo o92dk1.tar com aproximadamente 600Mb de tamanho e o quebrou em fatias com o tamanho máximo de 80Mb, no caso, oito fatias, prefixadas pelo string dk1.
O resultado do que ocorreu pode ser visto abaixo:
-rw-r--r-- 1 oracle dba 649144320 Feb 3 15:17 o92dk1.tar -rw-r--r-- 1 root sys 83886080 Feb 15 16:52 dk1aa -rw-r--r-- 1 root sys 83886080 Feb 15 16:52 dk1ab -rw-r--r-- 1 root sys 83886080 Feb 15 16:52 dk1ac -rw-r--r-- 1 root sys 83886080 Feb 15 16:52 dk1ad -rw-r--r-- 1 root sys 83886080 Feb 15 16:52 dk1ae -rw-r--r-- 1 root sys 83886080 Feb 15 16:53 dk1af -rw-r--r-- 1 root sys 83886080 Feb 15 16:53 dk1ag -rw-r--r-- 1 root sys 61941760 Feb 15 16:53 dk1ah
A restauração pôde ser feita via comando cat, da seguinte forma:
cat dk1aa dk1ab dk1ac dk1ad dk1ae dk1aaf dk1ag dk1ah > novo_arquivo
Assim, pudemos, transmitir as fatias, e em caso de queda de link, perderiamos somente a fatia que estava sendo transmitido no momento da queda. As fatias já transferidas estavam salvas.
Para testar a integridade dos arquivos, bastou utilizar o comando cksum no arquivo original o92dk1.tar e no arquivo de destino arquivo_novo. Os números do resultado devem ser os mesmos para ambos os arquivos. Abaixo temos um exemplo:
cksum o92dk1.tar 97395000 649144320 o92dk1.tar cksum arquivo_novo 97395000 649144320 arquivo_novo
O valor verificador encontrado foi o número 97395000 para os dois arquivos, o que provou a integridade dos mesmos.
Finalmente, temos um exemplo do script que foi utilizado no servidor de destino para efetuar a transferência dos arquivos:
ftp -n -i -v arcturus.ho.u2236.unilever.com << eod >>zz_ftp.log 2>&1 user usuario senha pwd lcd /diretorio_de_origem cd /diretorio_de_Destino get dk1aa get dk1ab get dk1ac get dk1ad get dk1ae get dk1af get dk1ag get dk1ah eod
Sistema Operacional utilizado: HP-UX 11i ou 11.11
Bem, espero que esse procedimento lhes possa ser útil. No meu caso, ajudou, e muito...
Roberto Baronas
Fonte: http://www.dicas-l.com.br/print/20050322.html
O comando sort (1)
O comando sort (1)
Colaboração: Rubens Queiroz de Almeida
O comando sort, também oferece inúmeras facilidades interessantes. Tomemos o arquivo abaixo como exemplo:
arq1
1:2:3:4:5:6 1:1:3:4:5:6 1:4:3:4:5:6 1:2:3:4:5:6 1:0:3:4:5:6 1:2:3:4:5:6 1:7:3:4:5:6 1:2:3:4:5:6 1:0:3:4:5:6 1:9:3:4:5:6
O comando abaixo
% sort -t: +1 -n arq1
irá gerar a seguinte saída
| v 1:0:3:4:5:6 1:0:3:4:5:6 1:1:3:4:5:6 1:2:3:4:5:6 1:2:3:4:5:6 1:2:3:4:5:6 1:2:3:4:5:6 1:4:3:4:5:6 1:7:3:4:5:6
Observar que o segundo campo, indicado pela seta, está ordenado numericamente em ordem crescente. Os campos deste arquivo são separados por ":". O tipo de separador é indicado pela flag "-t:". Em seguida à flag "-t" poderíamos indicar qualquer tipo de separador. O campo a ser ordenado é indicado pela flag "+1". Para o comando sort a contagem dos campos inicia-se por 0, desta forma, o valor "+1" irá indicar na realidade o segundo campo do arquivo. A ordenação também pode ser feita numericamente, do maior para o menor valor:
% sort -t: +1 -nr arq1 | v 1:9:3:4:5:6 1:7:3:4:5:6 1:4:3:4:5:6 1:2:3:4:5:6 1:2:3:4:5:6 1:2:3:4:5:6 1:2:3:4:5:6 1:1:3:4:5:6 1:0:3:4:5:6 1:0:3:4:5:6
Dica Humorística :-)
Troutman's Laws of Computer Programming
1. Any running program is obsolete. 2. Any planned program costs more and takes longer. 3. Any useful program will have to be changed. 4. Any useless program will have to be documented. 5. The size of a program expands to fill all available memory. 6. The value of a program is inversely proportional to the weight of output 7. The complexity of a program grows until it exceeds the capability of the maintainers. 8. Information necessitating a change in design is always conveyed to the implementors after the code is written. Corollary: Given a simple choice between one obviously right way and one obviously wrong way, it is often wiser to choose the wrong way, so as to expedite subsequent revision. 9. The more innocuous a modification appears, the more code it will require rewriting. 10. If a test installation functions perfectly, all subsequent systems will malfunction. 11. Not until a program has been in production for at least six months will the most harmful error be discovered. 12. Interchangeable modules won't. 13. Any system that relies on computer reliability is unreliable. 14. Any system that relies on human reliability is unreliable. 15. Investment in reliability increases until it exceeds the probable cost of errors, or until someone insists on getting some useful work done. 16. Adding manpower to a late software project makes it later. 17. There's always one more bug.
Fonte: http://www.dicas-l.com.br/print/19970623.html
Parâmetros de alocação de file systems
Parâmetros de alocação de file systems
Colaboração: Rubens Queiroz de Almeida
Em sistemas Solaris, caso se deseje saber com quais parâmetros determinado file system foi alocado, basta emitir o comando
# mkfs -m <device
Por exemplo:
# mkfs -m /dev/dsk/c1t0d0s7 mkfs -F ufs -o nsect=80,ntrack=19,bsize=8192,fragsize=1024,cgsize=16,free=10, rps=90,nbpi=2048,opt=t,apc=0,gap=0,nrpos=8,maxcontig=7 /dev/dsk/c1t0d0s7 2090000
O comando mkfs (make filesystem) na maioria dos casos não é utilizado diretamente. O comando utilizado para criar filesystems normalmente é o newfs, que é uma interface para o comando mkfs, que provê alguns valores default para a alocação
Estes parâmetros podem ser modificados de acordo com a característica do filesystem. Este tópico será abordado em dicas futuras.
Dica Humorística :-)
The Ultimate FAQ for Microsoft (R) Windows, Version 4.2e
McAfee-Question : Is Windows a Virus ?
No, Windows is not a Virus. Here's what does that...
1) They replicate quickly - Okay, Windows does that. 2) Viruses use up valuable system resources, slowing down the system as they do so - Okay, Windows does that. 3) Viruses will, from time to time, trash your hard disk - Okay, Windows does that too. 4) Viruses are usualy carried, unknown to the user, along with valuable programs and systems. Sigh... Windows does that, too. 5) Viruses will occasionally make the user suspect their system is too slow (see 2) and the user will buy new hardware to improve speed. Yup, that's with Windows too.
Until now it seems that Windows is a Virus, but there are fundamental diferences :
Viruses are well supported by their authors; they are running on most systems; their program code is fast, compact and efficient; and they tend to become more sophistcated as they mature. So Windows is not a virus. It's a bug.
Fonte: http://www.dicas-l.com.br/print/19970514.html
Instalando o Slackware via NFS ou FTP
Instalando o Slackware via NFS ou FTP
Colaboração: Ricardo Iramar dos Santos
Esta documentação tem o objetivo descrever os passos relativo da instalação do Slackware via NFS ou FTP. É indicado que você saiba fazer a instalação padrão do Slackware diretamente do CD. Para maiores informações sobre como instalar o Slackware detalhadamente visite Piter Punk's HomePage.
Quando escrevi esta documentação o Slackware estava na versão 9.1.0. O procedimento para versões anteriores e o current é o mesmo e provavelmente será identico para versões posteriores.
Na realidade desta documentação poderia ser escrito duas outras (NFS e FTP), porém como as mesmas possuem muitas coisas em comum resolvi colocar tudo em uma única documentação.
A instalação do Slackware via NFS ou FTP não tem muita dificuldade, o que existe é uma pegadinha que até hoje não vi escrito em nenhuma documentação.
Curioso para saber sobre a pegadinha? Leia a documentação por completo para não cair nela :^D
Pré-requisitos
- Disco do boot, utilize o mais adequado para o seu hardware.
- Disco 1 de instalação.
- Quatro disquetes de 3 1/2**.
- CD 1 de instalação do Slackware ou um mirror da árvore oficial do Slackware.
Pré-requisitos para instalação via NFS
Pré-requisitos para instalação via FTP
Preparando o Terreno
Primeiro vamos gerar os disquetes, utilize o comando abaixo para gerar o disco de boot:
ricardo@smith:~$ cat bare.i > /dev/fd0
Repita o comando acima para os demais disquetes conforme o seu método de instalação (NFS ou FTP).
Nesta documentação a máquina chamada smith será o servidor de onde as estações poderam instalar o Slackware via NFS ou FTP.
Para a origem da instalação temos três opções: diretamente do CD, mirror local ou mirror remoto (somente FTP). Se for usar diretamente do CD é necessário primeiro montá-lo, insira o cd no driver de CD-ROM e digite o seguinte comando como root:
ricardo@smith:~# mount /mnt/cdrom
Você pode copiar o conteúdo do CD para o HD local gerando um mirror local ou baixar de qualquer mirror oficial do Slackware como o http://slackware.at. Deste mirror você pode baixar via http, ftp ou rsync.
Preparando o Terreno para instalação via NFS
Execute o comando abaixo para inserir uma linha no arquivo /etc/exports:
ricardo@smith:~# echo **/mnt/cdrom/slackware *(ro,insecure,all_squash)** >> /etc/exports
Caso esteja usando um mirror local substitua no comando acima o diretório /mnt/cdrom/slackware pelo diretório /mirrordir/slackware-9.1/slackware do mirror local.
ATENÇÃO: Esta é a famosa pegadinha, se o diretório exportado pelo NFS não contiver os diretório de softwares series (A, AP, D, E, ... X, XAP e Y) a instalação não irá funcionar e o pior, não emitirá nenhum erro.
Com esta linha no exports qualquer usuário da rede poderá montar este diretório como somente leitura. Reinicie o NFS para atualizar com a nova configuração:
ricardo@smith:~# /etc/rc.d/rc.nfsd restart
Preparando o Terreno para instalação via FTP
Remova a linha ftp do arquivo /etc/ftpusers para ativar o servidor anonymous do Proftpd. Agora edite o arquivo /etc/proftpd.conf alterando a seguinte linha de <Anonymous ~ftp> para <Anonymous /mnt/cdrom>. Caso esteja usando um mirror local substitua o diretório /mnt/cdrom pelo diretório /mirrordir/slackware-9.1 do mirror local.
No caso do FTP não tem pegadinha, porque no momento da instalação é necessário digitar o diretório que contém os diretórios de softwares series.
Reinicie o servidor FTP para valer as novas configurações com o seguinte comando:
ricardo@smith:~# /etc/rc.d/rc.inetd restart
Instalando
Inicie o computador onde deseja instalar com o disco de boot (bare.i). Aguarde até que apareça o prompt boot:, esse prompt serve para passar parâmetros para o kernel do linux na inicialização. Se você não sabe que parâmetro passar ou não precise passar nenhum tecle ENTER.
Aguarde enquanto o kernel do linux é carregado. Quando aparecer VFS: Insert root floppy disk to be loaded to RAM disk and press ENTER remova o disco de boot e insira o primeiro disco de instalação (install.1) e tecle ENTER. Mais uma vez, aguarde enquanto o primeiro disco de instalação do Slackware é carregado em memória RAM.
Quando aparecer Insert install.2 floppy disk to be loaded into RAM disk and press ENTER remova o primeiro disco de instalação e insira o segundo (NFS: install.2 ou FTP: install-ftp.2) teclando ENTER em seguida.
Ao aparecer Enter 1 to select a keyboard map: se estiver utilizando um teclado US International (sem cedilha) tecle ENTER caso contrário tecle 1 e em seguida ENTER.
Escolha o mapa conforme o seu teclado, se não souber qual escolher e seu teclado possuir cedilha escolha a opção qwerty/br-abnt2.map e tecle ENTER. Na janela de título KEYBOARD TEST tecle 1 em ENTER em seguida.
Provavelmente irá aparecer a tela de login com slackware login: no final. Tecle root sem as aspas é claro e tecle ENTER. Apesar de simples este passo é MUITO importante, se você teclar algo diferente de root (minúsculo) terá graves problemas mais para frente.
root@slackware:/#
Esse é o prompt de instalação do Slackware. Agora você já pode particionar o seu disco da forma que achar melhor usando cfdisk ou fdisk. Não vou explicar isso aqui pois não é a intenção desta documentação.
Após ter particionado o seu disco remova o segundo disco de instalação e insira o disco de rede (NFS: network.dsk ou FTP: network-ftp.dsk). No prompt digite network e telcle ENTER. Ele irá pedir para inserir o disco de rede, como você já inseriu simplesmente tecle ENTER novamente. Agora estamos no prompt network> do disco de rede.
Este é um procedimento específico para a instalação via FTP, caso esteja instalando via NFS pule para o próximo parágrafo. Para futuramente montar a partição via ftpfs precisamos subir agora o módulo do ftpfs teclando F e ENTER.
Em muito dos casos (provavelmente o seu também) um simples ENTER irá detectar a sua placa de rede e subir o seu respectivo módulo, caso contrário mude para outro console carregue o módulo manualmente com o comando modprobe.
Se o módulo da placa de rede for carregado com sucesso tecle ENTER para desmountar o disco de rede e voltar ao prompt de instalação. Você pode usar o comando lsmod para ver se o módulo realmente foi carregado.
Este é um procedimento específico para a instalação via FTP, caso esteja instalando via NFS pule para o próximo parágrafo. Perceba que ao executar lsmod o módulo ftpfs também é listado, caso não apareça você deve carregar o disco de rede novamente para carregar conforme descrito acima.
No prompt digite o comando setup e tecle ENTER.
root@slackware:/# setup
Realmente a brincadeira só começa agora, mas como a intenção desta documentação não é explicar passo a passo toda a instalação do Slackware vamos pular direto para o passo SOURCE Select source media supondo que você já tenha efetuado os passos obrigatórios anteriores.
Se estiver instalando via NFS selecione a opção 3 Install from NFS (Network File System) e tecle ENTER. Caso contrário selecione a opção 4 Install from an FTP server e tecle ENTER.
Na próxima tela entre com um IP (ex. 192.168.1.21) para configurar a maquina na qual o Slackware esta sendo instalado.
Entre com a máscara de rede (netmask), o setup assume por padrão a máscara 255.255.255.0 a qual iremos adotar nesta documentação como exemplo.
Essa tela é exclusiva da instalação por ftp, caso esteja instalando via NFS pule para o próximo parágrafo. Responda Yes se você possuir um gateway em sua rede, caso contrário responda No e pule o próximo parágrafo. Caso o FTP Server de onde você irá instalar estiver na internet você é obrigado a configurar um gateway.
Agora é a vez do gateway (ex. 192.168.1.254), se o seu servidor onde se encotra os softwares series estiver em outra rede você deve configurar com um gateway que consiga rotear para a rede dele.
No caso de instalação via NFS este é o passo mais importante, o IP do NFS Server (ex. 192.168.1.2). Na próxima tela indique o diretório do NFS Server que contém os diretórios de softwares series conforme comentado anteriormente (ex. se estiver usando CD indique /mnt/cdrom/slackware, caso contrário o diretório correspondente no mirror.).
Este é um procedimento específico para a instalação via FTP, caso esteja instalando via NFS pule para o próximo parágrafo. Agora você precisa configurar o IP (ex. 192.168.1.2) do FTP Server e o diretório onde estão os softwares series. Se você configurou o diretório root do usuário anonymous como sendo /mnt/cdrom como indicado acima, você deve entrar com os seguintes dados anonymous:senha@192.168.1.2/slackware. Caso esteja utilizando um mirror altere o diretório após o IP do FTP Server apontando para o diretório onde se encontra os softwares series.
Em seguida o setup irá configurar sua placa de rede com os dados fornecidos anteriormente e configurar o gateway se você possuir algum.
Se estiver instalando via NFS o setup irá rodar também o rpc.portmap para poder montar o NFS e em seguida montar o NFS. E por último o setup irá listar a tabela de partições montadas para você verificar se o NFS foi montado corretamente. Caso o NFS tenha montado corretamente tecle n e ENTER para continuar com a instalação ou y para revisar suas configurações de rede.
Caso contrário, instalação via FTP, o setup irá listar a tabela de partições montadas para você verificar se a partição foi montada corretamente utilizando o ftpfs. Caso a partição tenha sido montado corretamente utilizando o ftpfs tecle n e ENTER para continuar com a instalação ou y para revisar suas configurações de rede.
A próxima tela deve aparecer os softwares series para que você selecione os que deseja instalar, se não aparecer provavelmente você errou em algum passo acima.
No caso de ter errado algo você pode selecionar Cancel teclando TAB e ENTER para cancelar a instalação e em seguida voltar a selecionar a opção SOURCE Select source media para reiniciar as configurações.
Se tudo estiver correto até aqui, agora é só seguir com o procedimento padrão de instalação do Slackware como se fosse diretamente de um CD.
Conclusão
O mito que a instalação via rede do Slackware é complicada foi completamente desvendada.
Em testes práticos tive menos problemas com a instalação via FTP do que via NFS. O interessante do NFS é fornecer acesso ao diretório patches para futuras atualizações do sistema em rede otimizando o espaço em disco em diversas máquinas.
Referências
Dúvidas, críticas e sugestões devem ser enviadas para agent.smith@globo.com.
Quer saber mais um pouco sobre o autor desta documentação? Acesse minha home page em http://www.agentsmith.kit.net.
Fonte: http://www.dicas-l.com.br/print/20050716.html
Acertando a hora de computadores com GNU/Linux
Acertando a hora de computadores com GNU/Linux
Colaboração: Ivan de Gusmão Apolonio <<ivan (a) dimensional-brasil com>>
Com relação aos relógios dos computadores, é sempre importante mantê-lo com a hora certa. Para isso existe um comando que busca a hora de um servidor de hora da internet. A sintaxe é bastante simples: ntpdate <servidor de hora>
# ntpdate ntp1.rnp.br 4 Jun 08:29:00 ntpdate[2961]: step time server 200.19.119.69 offset 0.771241 sec
Como os servidores da RNP não funcionam com muita regularidade, você pode obter uma lista de servidores alternativos em http://www.eecis.udel.edu/~mills/ntp/clock1.htm =
Com esse comando seu micro busca a hora e data no servidor indicado, no nosso exemplo, em um servidor da RNP.
É bom lembrar que ao executar esse comando acerta somente a hora do sistema e não o relógio do hardware, perdendo-se assim a hora quando o micro for reiniciado. Para acertar o relógio de hardware com a hora certa é preciso dar outro comando em seguida:
# clock --systohc
Pronto! O relógio do computador está precisamente acertado. Se este computador for um servidor de rede, ele pode ser um servidor de hora também para os micros da rede local. Em estações Windows, bastar dar o comando:
C:> net time \servidor /set /yes
Assim a estação pegará a hora e data certas a partir de um servidor Linux com samba. Esse comando pode ser colocado no login script dos usuários ou pode ser feito um arquivo bat para ser executado na inicialização do Windows.
O pacote para o ntpdate no Conectiva Linux 6.0 chama-se xntp3-x.xx.i386.rpm e no RedHat chama-se ntp-X.XX.i386.rpm.
Fonte: http://www.dicas-l.com.br/print/20010614.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
Solaris - Inicialização e Encerramento (Parte 4)
Solaris - Inicialização e Encerramento (Parte 4)
Colaboração: Rubens Queiroz de Almeida
O encerramento de Sistemas Solaris se dá de forma um tanto diferente do encerramento de sistemas SunOS.
O comando fasthalt, que realiza o encerramento do sistema sem verificar os discos, está também disponível em sistemas Solaris no diretório /usr/ucb. O seu equivalente é o comando "init 0". Recomenda-se o uso deste comando apenas em sistemas monousuários, visto que o sistema é encerrado imediatamente sem notificação aos usuários.
Já o equivalente do comando reboot é o comando "shutdown -i 6". Este comando notifica os usuários do encerramento do sistema e executa os scripts de shutdown (arquivos iniciados em "K") dentro dos diretórios /etc/rc?.d.
O comando
# shutdown -g5 -i0 -y
dará aos usuários cinco minutos (g5) para encerrarem suas atividades e sairem do sistema. O sistema será colocado então no run level 0 (i0, pronto para desligar), sem solicitar intervenção do operador (-y).
Fonte: http://www.dicas-l.com.br/print/19980514.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
Configurando WEBCAM no Debian Gnu/Linux
Configurando WEBCAM no Debian Gnu/Linux
Colaboração: André Jaccon
Este artigo explica como configurar uma webcam QuickCam chipset Logitech no Debian Gnu/Linux.
Informações de hardware usado:
- WebCam Dexxa chipset Logitech - compativel com driver QuickCam
Informações sobre o sistema:
Debian 3.0 R2 ( Kernel 2.4.28) - Stable Main
Módulos carregados no kernel
c-qcam ibmcam usbvideo videodev usb-uhci usbcore
Pacotes necessários:
xawtv usbutils usbview qc-usb-source qc-usb-utils
Driver a ser compilado
- qc-usb-0.6.2.tar.gz, Download: http://qce-ga.sourceforge.net/
Considerações iniciais
Para começar é necessário que seja carregado os devidos módulos no kernel, para isso usaremos o aplicativo nativo do Debian Gnu/Linux o modconf:
#modconf
agora precisamos encontrar a sessão /kernel/drivers/usb, nesta sessão será carregado os módulos:
audio + ibmcam + usbcore + usbvideo +
depois devemos encontrar a sessão /kernel/drivers/media/video, lá devemos carregar os seguintes módulos:
c-qcam + videodev +
Para verificar se os módulos realmente estão presentes na máquina use o comando lsmod:
#lsmod
Instalando e configurando os pacotes necessários com apt-get Agora devemos baixar os aplicativos necessários para a configuração do driver QuickCam da logitech, para isso com o aplicativo Apt-Get para baixar os aplicativos:
xawtv usbutils usbview qc-usb-source qc-usb-utils, para isso use o comando:
# apt-get install xawtv usbutils usbview qc-usb-source qc-usb-utils
os mirrors usados para baixar estes pacotes foram:
deb http://ftp.br.debian.org/debian/ testing main deb-src http://ftp.br.debian.org/debian/ testing main deb http://security.debian.org/ testing/updates main deb http://mirrors.kernel.org/debian/ stable main deb-src http://mirrors.kernel.org/debian/ stable main deb http://download.videolan.org/pub/videolan/debian woody main deb-src http://download.videolan.org/pub/videolan/debian woody main deb http://download.videolan.org/pub/videolan/debian sarge main deb-src http://download.videolan.org/pub/videolan/debian sarge main deb http://download.videolan.org/pub/videolan/debian sid main deb-src http://download.videolan.org/pub/videolan/debian sid main
Para isso basta adicionar estas linha em seu arquivo /etc/apt/sources.list e depois executar o update da base do Apt-Get com o comando:
#apt-update
Compilando o driver
Para compilar o driver será necessário o Kernel source usado em seu Debian Gnu/Linux, no meu caso como fiz o upgrade do kernel para a versão 2.4.28 usei a source estava disponivél no diretório /usr/src/linux < - link simbólico do sistema para linux-2.4.28.
Tendo os requisitos necessários para compilação todos OK, agora vamos continuar
Baixe o driver Qc USB 0.6.2
Descompacte no local desejado e na sequência use dentro do diretório do driver o comando:
#./quickcam LINUX_DIR=/usr/src/linux
O script quickcam deve ser executado como super-usuário e o parâmetro do caminho indicado pela flag LINUX_DIR, é o caminho onde está o source do kernel, com isso o script deve iniciar uma sequência de perguntas que devem ser respondidas atenciosamente.
Ao final do processo o script deve iniciar o xawtv testando sua webcam, o comando para verificar as imagens da WebCam através do xawtv são:
#xawtv -noscale -noxv -c "/dev/video0"
É essêncial que ao final seja copiado o arquivo quickcam.o para a pasta /lib/modules/linux-2.4-seu-kernel/drivers/usb/ e depois carregado com o comando: #insmod quickcam.o
ou ainda pelo próprio modconf.
Sites relacionados:
Confira ainda o Snapshot que criei com a camera em funcionamento:

Fonte: http://www.dicas-l.com.br/print/20050112.html
Correção Automática de Comandos em Bash
Correção Automática de Comandos em Bash
Colaboração: <roni (a) alfanetworks com br>
Se voce errar um comando, utilizando as teclas Ctrl-t após o comando, o Bash tenta reescrever o comando corretamente. Por exemplo:
Voce quer criar um diretorio e digita:
# mkdri
O comando correto seria mkdir e nao mkdri. Em vez de utilizar o backspace e corrigir o comando, simplesmente tecle Ctrl-t e o Bash irá trocar as duas ultimas letras do comando.
Segundo o Prof. Arnaldo Mandel, USP:
Essa função é uma das muitas funções de edição da biblioteca readline (GNU), que por sua vez emula funções que foram desenvolvidas no emacs. O bash é compilado com readline, assim como montes de outros programas interativos. O Ctrl-t funciona dentro de uma linha também, não só no fim.
Fonte: http://www.dicas-l.com.br/print/20021030.html
Referências de linha de comando e software livre
Referências de linha de comando e software livre
Colaboração: Fernando Zank Correa Evangelista
Espero que ajude quem gosta de trabalhar com linha de comando(esta era a principal dica, mas acabei me empolgando e também citei alguns softwares livres para serem usados).
Site com as referências da linha de comando: http://www.ss64.com/index.html
O site indicado no link acima contém referências de linha de comando de Oracle, Windows, Linux e OS X.
Bom a idéia de publicar a dica deste site com as referências de linha de comando é que achei o contéudo dele muito útil para quem precisa trabalhar em sistemas operacionais que não está acustumado.
Há um tempo atrás estava trabalhando em um projeto onde por padrão todas as máquinas tinham apenas o windows xp instalado, e como estou acustumado a trabalhar com linux senti muita falta de alguns comandos do linux que facilitam bastante o meu trabalho, e descobri o site em questão.(que se eu tivesse descoberto antes, teria adiantado bastante meu trabalho.)
Utilidades do site de referência:
O site é bem simples e sem enrolação, na página principal você escolhe qual referência de linha de comandos você quer visualizar (Oracle, Windows, Linux e OS X), logo após selecionar a referência aparecerá uma lista de comandos com a sua funcionalidade ao lado.
Alem da utilidade de ver todos comandos, o que me chamou a atenção foi que, para cada comando, é possível clicar em cima do nome dele e abrir uma página mais detalhada do comando com a sua sintaxe e opções.
Nesta página detalhada você verá a sintaxe do comando e também os comandos relacionados a eles no sistema escolhido e também poderá ver os programas equivalentes no outro sistema operacional.
No meu caso eu sentia muita falta do grep e do sed do linux quando não tinha outras opções e precisava trabalhar utilizar o windows xp.
Com as referências do site dá para resolver muitos problemas e facilitar bastante o trabalho.
exemplos:
grep :
Related Linux Bash commands: egrep - Search file(s) for lines that match an extended expression fgrep - Search file(s) for lines that match a fixed string gawk - Find and Replace text within file(s) sed - Stream Editor - Find and Replace text within file(s) tr - Translate, squeeze, and/or delete characters Equivalent Windows XP commands: FOR /r %%G in (*.txt) DO findstr thisstring "%%G" FIND - Search for a text string in a file FINDSTR - Search for strings in files MUNGE - Find and Replace text within file(s) QGREP - Search file(s) for lines that match a given pattern
sed:
Related Linux Bash commands: awk - Find and Replace text within file(s) grep - Search file(s) for lines that match a given pattern regex(3) re_format(7) Equivalent Windows XP commands: FIND - Search for a text string in a file FINDSTR - Search for strings in files MUNGE - Find and Replace text within file(s)
Bom espero que possa ajudar a outras pessoas que também precisem usar um sistema operacional proprietário a facilitar o seu trabalho.
Ps1: Não estou incentivando o uso de sistemas operacionais ou de programas propietários, estou apenas tentando resolver problemas para quem não possua outra solução, assim como eu não possuia neste projeto que estava trabalhando a um tempo atrás.
ps2: Mesmo quem usa um sistema Operacional propietário pode usar ótimas ferramentas open source ou freeware como:
- Editor de imagens - GIMP
- Editor de Texto - VIM ou GVIM
- Editor de Texto - Notepad2
- Editor de Texto - AbiWord
- Editor HTML - NVU
- Instant messaging (IM)- Gaim
- Modelagem e animação 3d - Blender
- Modelagem e animação 3d - wings3D
- Pacotes de escritório -BROffice(openoffice)
- Navegador Internet firefox
- Cliente de email Thunderbird
- Voip - Gizmo
- Cliente BitTorrente Azureus
- Maquinas virtuais - VMware Player
- Servidor Web - Apache
- Editor de Aúdio - Audacity
- Compactadores - 7-zip
- ScrennSavers -Really Slick Screensavers
- Gerador de PDF - PDFCreator
- Simulador do espaço - Celestia
- Bloqueador de popup -popfile
Fonte: http://www.dicas-l.com.br/print/20060728.html
Screen Uma Ferramenta Útil
Screen Uma Ferramenta Útil
© Ricardo Iramar dos Santos - Agent Smith
01/04/2004 - Versão 0.1
Introdução
Screen é um gerenciador de janelas similar aos terminais virtuais do Linux com muito mais recursos desenvolvido pelo projeto GNU.
Basicamente eu o utilizo para duas finalidades, para poder abrir clients de irc e IMs em janelas separadas numa mesma sessão ssh e compartilhar sessões ssh para aprender e/ou ensinar. Além dessas um outra finalidade interessante é deixar algum processo/compilação rodando em uma janela e depois remotamente ver o andamento.
Mas o Screen não se limita somente a isso, na man page dele você irá encontrar muitas informações úteis. Bem, vamos ao que interessa ...
Pré-requisitos
A idéia aqui não é ensinar como instalar o Screen e sim explorar alguns de seus recursos. Portanto se você ainda não tem ele instalado (provavelmente tem) acesse o site http://www.gnu.org/software/screen/screen.html e siga as docs para instalar.
Utilizando
Vamos dizer que você pretende acessar uma máquina remotamente via ssh e abrir seu client de irc (eu uso irssi http://irssi.org, e você?) e um IM client (ex. centericq http://konst.org.ua/centericq/) pois não é em todo lugar que você terá acesso a isso.
Logado na máquina remota execute o Screen:
agent@maplefire:~$ screen
Ué, mas não aconteceu nada? É um outro jeito de limpar a tela? Não, execute "ps aux" e veja o processo do screen rolando, isto é, você já está em uma janela do Screen.
Tá, e daí? Calma, vamos ao primeiro comando básico:
agent@maplefire:~$ screen -ls There is a screen on: 483.pts-0.maplefire (Attached) 1 Socket in /home/agent/.screen. agent@maplefire:~$
Você acabou de listar as sessões abertas do screen onde a sessão marcada com (Attached) é a sessão que você está agora. Além de multiplas janelas você pode abrir multiplas sessões, observe que este comando lista as sessões e não as janelas.
Vamos criar a segunda janela virtual porque a primeira já abre por default quando você inicia o Screen. Para isso pressione "Ctrl+a" simultanêamente, solte e em seguida pressione "c". Mais uma forma de limpar a tela? Não, agora você na segunda janela virtual do screen. Para facilitar estarei usando formas contraídas de escrever esses comandos similar a man page, este comando por exemplo de criar uma nova janela em uma forma contraída ficaria assim "C-a c", manjo?
Familiarize com essas teclas de atalho pois todas são bem similares baseadas em pressionar o Ctrl mais uma letra e seguida por outra. Provavelmente todos os comandos podem serem executaods via screen seguido de algum parâmetro, entretanto eu prefiro os atalhos por serem muito mais rápidos.
Para listar as janelas utilize o atalho "C-a w". Pow! Cadê a lista de janelas? Também achei uma péssima idéia colocar isso no título da janela, isso se estiver usando um WM, caso contrário (console) irá aparecer no canto inferior esquerdo da tela. A janela na qual você esta é marcada com um *.
Para navegar entre as janelas utilize o atalho "C-a n" (n de next, isto é, próxima janela) e "C-a p" (p de previous o mesmo que anterior). Pronto! Agora você já pode abrir quantas janelas quiser e/ou precisar e deixar qualquer processo rolando nelas.
Mas como fechar a sessão ssh sem finalizar a(s) sessão(ões) do Screen? Execute "C-a d" que irá rertornar [detached] que quer dizer descolar. Execute "screen -ls" e você verá a a sessão que você acabou de sair marcada como (Detached).
Vamos dizer que você foi trabalhar e do escritório você quer ver o andamento dos processos deixados nas janelas ou acessar seus clients. Acesse a máquina via ssh novamente e digite "screen -r" vualá! Agora vamos compartilhar essa sessão com um amigo seu.
Peça para seu amigo acessar a sua máquina via ssh com o mesmo user que você esta logado. Assim que ele logar peça para executar "screen -x". Com este comando ele irá se conectar a mesma sessão que você esta e desta forma tudo o que você e ele fizerem serão visto pelos dois. Você pode conectar quantas pessoas quiser a uma sessão do Screen. COOL!!!
Para fechar uma janela basta digitar "exit" na última janela o Screen será finalizado. Somente com esses comandos básicos já é possível fazer muita coisa agora se você der uma olhada na man page (man screen) verá que você não aprendeu nada sobre o screen.
Conclusão
Exagerando eu diria que o céu não é o limite e sim a sua imaginação pois com a quantidade de possibilidades que o screen oferece somente olguém muito inocente para não perceber a sua utilidade. Não esqueça de visitar a man page e o google, eles são seus amigos e não vão te morder.
Referências
Dúvidas, críticas e sugestões devem ser enviadas para <agent smith (a) globo com>.
Quer saber mais um pouco sobre o autor desta documentação? Acesse minha home page em http://www.agentsmith.kit.net.
Fonte: http://www.dicas-l.com.br/print/20040708.html
Instalando e compilando o kernel 2.6.10 no gnu/linux slackware 10
Instalando e compilando o kernel 2.6.10 no gnu/linux slackware 10
Colaboração: Solano Krabbe
(Por favor leia a seção "Alguns Detalhes" no final deste documento antes de sair instalando)
1. Baixe o kernel do endereço: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.10.tar.bz2 (prefira a versão compactada com o bzip2, pois é menor)
2. Descompacte-o dentro do diretorio /usr/src:
# cd /usr/src # tar -xjvpf local-onde-baixou/linux-2.6.10.tar.bz2
(foi criado um diretorio chamado linux-2.6.10)
3. Caso exista (e provavelmente existe), remova o link linux e crie novamente, apontando para o novo diretorio:
# rm linux # ln -s linux-2.6.10 linux
4. Entre no novo diretorio:
# cd linux
5. Rode o comando abaixo:
# make mrproper
6. Agora começa a configuração do kernel. Execute o comando:
#make menuconfig
(Aqui é que serao escolhidas as configuracoes conforme a maquina que vc esta' utilizando, no meu caso nao precisei modificar muita coisa, mas o essencial que complicou um monte pra mim foi nao saber que, por ja utilizar o sistema de arquivos reiserfs, esta opção, dentro do filesystems, alem de ter de ser selecionada, nao pode ser marcada como "M" 'Modulo'. Selecione-a com a barra de espaco e faca isso de forma a ficar marcada com um "X")
7. Feitas as configuracoes, rode o comando:
# make
8. Depois, rode o comando:
# make modules
9. Finalmente, rode:
# make modules_install
A parte de instalação e configuração é esta. Para utilizarmos o novo kernel, sem perder acesso ao sistema via kernel antigo, faça o seguinte:
1. Copie o arquivo bzImage que esta' no /usr/src/linux/arch/i386/boot para /boot:
# cp /usr/src/arch/i386/boot/bzImage /boot
2. Copie o arquivo System.map que esta' em /usr/src/linux para /boot:
# cp /usr/src/linux/System.map /boot
3. Edite o arquivo lilo.conf que esta' no /etc, criando a entrada para a nova versao do kernel:
image = /boot/bzImage root = /dev/hdaX (substitua o X pelo numero da partição onde vc tem o sistema instalado) label = Slackware-2.6.10 (é so' um exemplo, pode ser outra coisa, tipo: "LinuxNovo" ou "KernelNovo") read-only
(Inclua as linhas acima na seção "#Linux bootable partition config begins", logo apos a entrada do kernel atual)
4. Rode o comando lilo para que ele adicione esta nova entrada no menu de inicialização:
# lilo
ALGUNS DETALHES:
- Sistema utilizado: Slackware 10
- Todos os comandos foram com o usuario root.
- Instalei no modo texto.
- O Slackware estava com o kernel "default" da instalação original. Acho q era o 2.4.26 Na configuração do lilo.conf, caso exista a linha "append hdc=ide-scsi" ou algo parecido, remova-a. Nao sei pq, mas tive que configurar o X novamente.
- O DVD parou de funcionar (embora o CD esteja ok e o gravador tb).
- Embora o modo de escrita deste minusculo documento pareca dar ar de que vai ficar tudo bem, nao posso garantir nada. Minha ideia é descrever o meu procedimento para que aqueles que, assim como eu nunca tinham instalado e compilado um kernel, consigam fazer isso de forma rapida e simples. Espero que ajude alguem. Fiquem a vontade para reproduzir isso (se é q acharem q vale a pena) em qq site ou local.
Solano Krabbe, 27-12-2004.
Fonte: http://www.dicas-l.com.br/print/20050117.html
Busca por Arquivos Grandes
Busca por Arquivos Grandes
Antes da dica de hoje gostaria de fazer um esclarecimento. O curso à distância de C da UFMG foi retirado do ar, não sei por qual razão. Quando escrevi a dica ele estava lá firme e forte. Mas a Web é assim mesmo, as coisas vêm e vão. Infelizmente este curso gerou um grande interesse por parte de muitas pessoas que infelizmente não puderam se utilizar dele. Como eu disse, eu não sei o que ocorreu, mas pode ser que em breve tudo volte ao ar.
Agora, a dica do dia:
Para encontrar os arquivos que estão ocupando muito espaço em seu sistema existem várias maneiras.
A primeira delas é com o comando find:
find . -size +1024k -print
Este comando faz uma busca, a partir do diretório corrente, por arquivos que possuam um tamanho superior a 1024k ou 1MB.
É possível também associar a saída do comando find ao comando ls para sabermos exatamente o tamanho dos arquivos encontrados:
find . -size +1024k -print | xargs ls -l
Podemos também ordenar a saída gerada do maior para o menor arquivo:
find . -size +1024k | xargs ls -l| sort +4 -nr
O comando sort vai ordenar a saída numericamente (-n) tomando por base o valor do quinto campo (a contagem começa em zero, que é o default) e reverter o resultado (-nr), colocando os maiores valores na frente.
Para ficar ainda melhor podemos fazer uma listagem contendo apenas o nome do arquivo e seu tamanho:
find . -size +1024k | xargs ls -l| sort +4 -nr |awk ''
Para encerrar, coloque a linha acima em uma shell script, chamada, por exemplo, de findbig de forma a tornar mais fácil o seu uso.
Todos os comandos acima foram testados em um sistema Conectiva Linux. Para outros sistemas podem ocorrer ligeiras variações na sintaxe dos comandos e no ordenamento dos campos do comando ls que requeiram algumas alterações.
Fonte: http://www.dicas-l.com.br/print/20000117.html





Últimos comentários