Dicas de Linux! :) Powered by: Wendel Guglielmetti Henrique - dum_dum@frontthescene.com.br OBS.: Quando eu comecei a escrever esse arquivo (por volta de 2000) eu tinha muito menos conhecimento, então talvez algumas informações possam não ter uma explicação muito correta ou serem IDIOTAS. Venho atualizando o mesmo não com muita frequencia, algumas poucas PERGUNTAS e RESPOSTAS foram copiadas de historicos de mail-list e similares (quando eu procurava por respostas ou perguntas interessantes). ;-) -==========--==============--=============-- Como instalar um HD novo na minha maquina ? r:a) fdisk /dev/hdxx, entao crie uma partição e defina como native o codigo é 83! :) b) mke2fs /dev/hdxx --> cria um file system na partição criada! :)) c) mkdir /new --> /new vai ser o lugar onde eu vou montar o hd novo "hdxx" d) mount /dev/hdxx /new e) Depois para montar sozinho edit a /etc/fstab f)Pronto, foi feito! Congratulations! :) Nesse caso o HD era IDE, ficando então = HDxx =) O primeiro "x" do HDxx é respectivo ao HD estar como primario/Secundario. O segundo "x" do HDxx é respectivo a partição no HD. -==========--==============--=============-- Quer listar tudo que vc tem detectado pelo Linux na sua maquina? r: dmesg -==========--==============--=============-- Quer saber qual placa de video o XF86Config esta utilizando?? r: SuperProbe -==========--==============--=============-- Quando usamos o xf86config ou xconfigurator pra configurar o monitor, que arquivo ele altera? Altera o /etc/X11/XF86CONFIG Antes de altera-lo é bom sempre fazer uma copia antes! :) -==========--==============--=============-- Como ver o erro do core ?? r: file core -==========--==============--=============-- Como inicializar o qvwm ?? r: xinit /usr/bin/qvwm -==========--==============--=============-- Como inicializar o qvwm por exemplo chamando por startx ?? r: no diretorio $home do usuario crie um arquivo ~/.xinitrc se ja não existir) e coloque na primeira linha o seguinte comando: exec qvwm -==========--==============--=============-- Como listar todos os serviços (de servidores) rodando e desabilitar ou habilita-los ?? r: ntsysv -==========--==============--=============-- Como colocar arquivos no meu servidor FTP como "pub" ou seja liberado para todos sem senha ou como anonymous ? r: coloque os arquivos que vc queira em /home/ftp/pub dependendo da distribuição /var/ftp/pub -==========--==============--=============-- Onde ficam os Logs do Linux ?? E onde mudar o local default dos logs?? r: Os logs por default ficam em /var/log. E para mudar o default altere o arquivo /etc/syslog.conf. Para informações adicionais use o man syslogd e man syslog.conf -==========--==============--=============-- Como descobrir qual a versão do DNS (named/bind) remotamente ?? r: Primeira forma: nslookup -q=txt -class=CHAOS version.bind IP_DO_SERVIDOR Segunda forma: dig @ns.elipse.net version.bind CHAOS TXT | grep VERSION.BIND dig @ns.elipse.net version.bind CHAOS TXT No caso o ns.elipse.net é p Servidor de Nomes :) -==========--==============--============= Como listar todos Compartilhamentos do SAMBA remotamente ?? r: smbclient -L //ip obs.: caso prescisse de senha, tecle e ele listará todos os compartilhamentos publicos. -==========--==============--============= Como conectar via samba sem ponto de montagem ?? r: smbclient //ip/compartilhamento -U usuario -==========--==============--============= E como conectar via sambe com um ponto de montagem ? smbmount //nt_WendelSecurity/c /mnt/nt -o username=administrador -==========--==============--============= Como compartilhar uma diretorio do linux pelo samba ?? r: Criando Compartilhamento. 1) Primeiro "instale os pacotes RPM". 2) Edite o arquivo /etc/smb.conf (obs.: com pico, vi ...) 3) Quando requisitado, insira seu grupo de trabalho, host, mascara, ... ex.: # workgroup = NT-Domain-Name or Workgroup-Name workgroup = WendelSecurity # server string is the equivalent of the NT Description field server string = Samba Server # This option is important for security. It allows you to restrict # connections to machines which are on your local network. The # following example restricts access to two C class networks and #the "loopback" interface. For more examples of the syntax see # the smb.conf man page; hosts allow = 10.0.0. 127. É necessario que se configure o arquivo de acordo com as configurações do seu sistema e rede. Ex.: [u] comment = diretorio /u do linux path = /u readonly = No create mask = 0777 guest ok = Yes public = Yes U é o nome simbolico que se dara ao compartilhamento para as estações Windows poderem enchergar o compartilhamento feito pelo SMB (linux) É necessario que se crie tambem o diretorio U no sistema como esta descrito no arquivo /etc/smb.conf No caso acima o U se encontra na raiz. Importante habilitar o SAMBA no "setup" -==========--==============--============= Quais comandos eu posso usar no linux para listar minhas conexões ?? r: "lsof" - netstat (eu gosto de ultilizar com a opção -na) ficando assim: "netstat -na" ou "ps -auxww" Vale lembrar, que todos esses comandos podem ser ultilizados com o "grep" , "tail" , e assim vai ... ;) -==========--==============--============= Qual o programa que se usa para baixar Paginas ?? r: wget ou mget -==========--==============--============= O que é Radius Cistron ?? r: É o protocolo ultilizado para autenticação em conexões PPPD -==========--==============--============= Qual programa pode ser ultilizado para Webmail ?? r: IMP = programa de webmail com varios recursos e seguro. (necessita de MySql) Seus usuarios são independentes do shadow. neomail = programa de webmail com pouco recurso, fácil de intalar com pouca segurança e não prescisa de MySql. (usa autenticação do shadow) -==========--==============--============= Como eu mudo a "resolução" no X11 ? r: pressione -> "ctrl alt +" -==========--==============--============= Onde colocar um arquivo para inicializar de 1 em 1 hora ou de 1 em 1 dia?? r: Na cron seria o lugar ideal, e ficaria até meio escondido! hehehe :) Basta vc colocar o arquivo que vc quer executar a uma certa hora, dentro dos diretorios respectivos. Como: /etc/cron.daily/ quem sabe no /etc/cron.hourly ou até mesmo em /etc/cron.monthly e porque não em /etc/cron.weekly -==========--==============--============= Um simples exemplo de backup que usa o tar para empacotamento dos diretorios a serem backupados e retorna uma menssagem colorida (de sucesso ou erro)! #!/bin/bash tar -cvzf /root/wendel.tgz /etc/httpd /var/cache/httpd /usr/sbin/httpd 2> /dev/null mount ns:/mnt/bkp /mnt/test 2> /tmp/nfs.tmp ok=`cat /tmp/nfs.tmp` if [ "$ok" = "" ]; then cp -f /root/wendel.tgz /mnt/test umount /mnt/test echo -en " O " [ "$BOOTUP" != "serial" ] && echo -en "\\033[1;34m" echo -en "Backup " [ "$BOOTUP" != "serial" ] && echo -en "\\033[0;39m" echo "foi bem sucedido" exit else echo "^[[42mO backup não foi bem sucedido, impossivel montar o nfs!^[[m" fi -==========--==============--============= O que é Suid R00t ?? r: Suid R00t é um "atributo" dado a um arquivo, atraves do chmod! Usa se: chmod +s arquivo_a_ganhar_suid_r00t Os arquivos que tem Suid R00t sao "rodados" no sistema com level authority de "r00t" por qualquer usuario(s) do sistema. O Suid r00t foi muito usado para se criar "backdoors" no passado. Por exemplo copiava-se o /bin/bash para o /usr com o nome de backdoor e se da o atributo suid r00t a ela. Então quando qualquer pessoa chamar o "/usr/backdoor" ele na versade estará chamando o bash como r00t :))) Obs.: Qualquer ususario pode apagar um arquivo Suid R00t. -==========--==============--============= Eu uso o Apt-get e ele da um erro na kdelibs-devel, o q devo fazer ?? r: Para resolver o problema do kdelibs-devel no apt-get, desintale a versão mais antiga do kdelibs-devel! Para checar as versões rpm -q kdelibs-devel e para remover a versào mais velha rpm -e pacote_antigo -==========--==============--============= Onde ficam todos os serviços do linux ?? r: /etc/rc.d/init.d/ <- onde ficam todos serviços do linux a serem startados! Para ver o status de um serviço, ex.: /etc/rc.d/init.d/crond status Pode tambem startar, stopar, restartar .... -==========--==============--============= Como se usa a Crontab ?? r: Crontab -> para edita-la pelo usuario logado atualmente escreva: "crontab -e" simples exemplo de crontab que jogada o resultado do ls para a tty2 as 17 horas 20 minutos do dia 3 do mes de fevereiro todos dias da semana: Primeiro digite: "crontab -e" depois escreva: "20 17 3 2 * /bin/ls >> /dev/tty2" Obs: Com o menos "-e" está se gerando uma lista para serviços a serem executados na crontab, pelo usuario logado. Existem tmb os arquivos que dizem quem sera permitido e quem não sera permitido a usar a crontab. São eles: /etc/cron.allow e /etc/cron.deny -==========--==============--============= Como se usa o comando AT (o "at" no linux é muito parecido ao "at" do winNT ou até mesmo a crontab do linux ? r: Por exemplo se vc quisesse programar para as 8:00 da noite chamar um script que fica em /home/Wendel/run_backup vc faria o seguinte comando: "at 8pm -f /home/Wendel/run_backup" Obs.: Para verificar a lista de serviços a serem executadas digite: "atq" Existe o arquivo /etc/at.deny <- aí é definido quem não tera acesso para ultilizar o at. Para apagar processos agendados use o "atrm numero_de_execussão", por exemplo: [root@lnx /root]# atq 1 2001-12-26 18:40 a [root@lnx /root]# atrm 1 [root@lnx /root]# atq [root@lnx /root]# O serviçco "atd" deve estar rodando tmb! atd serve para rodar programas agendados. -==========--==============--============= O que é loadlin.exe ?? E como usa-lo ?? r: Loadlin.exe é ultilizado para fazer a instalação do linux apartir do DOS. A sintaxe do comando é a seguinte: "loadlin autoboot\vmlinuz initrd=autoboot\bootnet.gz" Obs.: Pode se substituir o bootnet.gz por boot.gz (bootnet.gz é a imagem ultilizada para fazer isntalação pela rede atraves de NFS). Ou pode se usar o boot.gz da imagem de um CD local por exemplo. O "autoboot" no caso é um diretorio. O "vmlinuz" é o kernel. O "bootnet.gz" é a imagem. O loadlin.exe é encontrado no CD do linux, dentro do diretorio "dosutils". -==========--==============--============= Onde encontrar How-To em portugues?? r: http://ldp-br.conectiva.com.br -==========--==============--============= Como eu imprimo um man no linux ? r: Pode ser feito de dois modos (dependendo da impressora) Suponhamos que eu quera imprimir o man do "find" então ficaria: "man find |lpr" ou senão "man -t find |lpr" -==========--==============--============= Como saber onde estão as documentações de arquivos instalado por RPM ?? r: Suponhamos que queira ver onde está a documentação da "crontab" então o comando ficaria: "rpm -qd /usr/bin/crontab" Existem outras boas opções como o "-qdf" que lhe mostra toda documentação. É interessante vc passar o caminho do arquivo que vc quer saber. Exemplo Real: [root@lnx /root]# type crontab crontab is /usr/bin/crontab [root@lnx /root]# rpm -qdf /usr/bin/crontab /usr/share/man/man1/crontab.1.bz2 /usr/share/man/man5/crontab.5.bz2 /usr/share/man/man8/cron.8.bz2 /usr/share/man/man8/crond.8.bz2 [root@lnx /root]# rpm -qf /usr/bin/crontab vixie-cron-3.0.1-45mdk [root@lnx /root]# zless /usr/share/man/man1/crontab.1.bz2 Ele listara os arquivos com a extensão .gz para ler esses arquivos use o "zless"! Sintaxe: "zless arquivo_de_help.gz" Vc pode fazer tmb "rpm -q nome_do_arquivo.rpm" -==========--==============--============= Como saber a qual pacote um aplicativo pertence (instalado com RPM) ?? r: Suponhamos que vc queira saber de qual pacote é a "crontab" então o comando ficaria: rpm -qf /usr/bin/crontab -==========--==============--============= Como ver as strings de um arquivo "core" ?? r: digite: "strings core" -==========--==============--============= O que faz o comando file ?? r: o comando "file" é ultilizado para identificar o que os arquivos são, por exemplo, se eles são: ascii, mail , ... Alguns exemplos abaixo: [root@lnx mail]# file /var/mail/root /var/mail/root: ASCII mail text, with CRLF, LF line terminators [root@lnx /]# file core core: ELF 32-bit LSB core file of 'lynx' (signal 3), Intel 80386, version 1, from 'lynx' [root@lnx wendel]# file t666.c t666.c: ASCII C program text, with CRLF line terminators -==========--==============--============= O que faz o comando type ?? r: O comando "type" da o caminho de onde estão os arquivos binarios. Exemplos: [root@lnx mail]# type crontab crontab is /usr/bin/crontab [root@lnx mail]# type httpd httpd is /usr/sbin/httpd [root@lnx mail]# type nmap nmap is /usr/bin/nmap [root@lnx mail]# type cat cat is /bin/cat [root@lnx mail]# type passwd passwd is hashed (/usr/bin/passwd) -==========--==============--============= Como eu leio um manual que tem a extensão .gz ?? r: zless manual.gz -==========--==============--============= Comandos básicos do /bin/bash r: ^a -> vai ao inicio da linha. ^e -> vai ao final da linha. ^k -> apaga todo conteudo da linha, e coloca em buffer. ^y -> insere o conteudo do buffer no bash. ^z -> marca inicio. ^w -> apaga palavras. ^s -> trava o teclado. O botão "scroll lock" destrava o teclado. -==========--==============--============= O que é "locate" ? r: O comando "locate" é uma especie de find so que ele trabalha com um bando de dados. (É muito mais rápido que o find) Para se criar o banco de dados do locate faça: "/etc/cron.daily/slocate" ou então "/etc/cron.daily/slocate.cron" Para procurar com o "locate" basta digitar: locate file_a_procurar -==========--==============--============= Onde encontrar documentações no Linux ? r: a) Pode se usar o "man arquivo_q_deseja_ver_documentação" ex.: [root@WendelSecurity /root]# man crontab b) Existem tambem os How-to(s), que se encontram no diretorio: "/usr/doc" c)E podemos usar o comando "info" similar ao man. ex.: [root@WendelSecurity /root]# info ls -==========--==============--============= O que é "dd" ? E como usa-lo ?? r: O dd é um comando que faz copias fisicas. Imagine que vc queira copiar o conteudo de um diskete para o /boot/net Então ficaria da seguinte forma: dd if=/dev/fd0 of=/mnt/net Obs.: "if" significa (input file) e o "of" significa (output file) -==========--==============--============= Como coloca um processo em BackGround e em ForwardGround ?? r: Para colocar um processo "rodar" em background, para vc ficar com a shell livre: "crtl + z" -> esse comando para o processo. Então vc digita: "bg" assim vc o colocou em background. Para retorna-lo em forwardgroud, digite: "fg" Obs.: Voce pode tambem "rodar" um aplicativo em background chamando-o com um "&" no final do comando. Exemplo para rodar o find procurando pelo arquivo itjournal.txt em background e redireciona-lo para /tmp/test.txt: [root@WendelSecurity /root]# find / -name itjournal.txt >/tmp/test.txt & -==========--==============--============= Como mandar um e-mail usando o "mail" ? r: É usado: mail -s "ASSUNTO DO E-MAIL" para_quem@vc_quer_enviar.com.br Ainda é possivel adcionar no corpo o conteudo de um arquivo texto, suponha que eu queira mandar para sekure@WendelSecurity.com.br o meu /etc/passwd com o titulo Meu Passwd. Então ficaria: $ "mail -s "Meu Passwd" sekure@WendelSecurity.com.br < /etc/passwd" -==========--==============--============= Como solucionar o Problema do Particionador do CL6.0 usando grub ? r: Primeiro faça download dos "updates" do site da conectiva da imagem patchada. Depois, quando abrir a tela do grub, digite: "e" para editar o grub então na linha que se refere a "imagem" adicione no fim do comando a palavra "updates" e depois digite "d" para aceitar. Obs.: Dependendo do grub vc terá que apertar a letra "e" duas vezes... uma para editar o grup e outra para editar a linha do kernel. -==========--==============--============= Como montar um diretorio virtual para copiar uma imagem ? r: Muito simple vc usa a opção menos -o loop no mount! :) Se vc quer copiar bootnet.img por exemplo para o /mnt/floppy mesmo que o diskete não esteja montado, então digite: "mount -o loop bootnet.img /mnt/floppy" -==========--==============--============= Como eu posso montar unidades com outros file systems ? Posso montar NTFS ? r: Use o proprio comando mount. Vc apenas usa o mount com a opção -t exemplo: "mount -t tipo unidade ponto_de_montagem" Se vc tivesse NTFS no /dev/hdb1 e quisesse montar no /mnt/nt seria assim: "mount -t ntfs /dev/hdb1 /mnt/nt" Obs.: Para ver a lista de tipos de file system suportados pela opção -t veja no man mount -==========--==============--============= Como formatar/criar um file system em uma unidade no linux ?? r.: Use o "mkfs" ou "mke2fs" que é bem mais poderoso. Modo de uso: "mkfs tipo_file_system unidade_a_ser_formatada" Por exemplo para formatar um diskete em ext2, o comando é: "mkfs ext2 /dev/fd0" para o dos "mkfs msdos /dev/fd0" -==========--==============--============= Como eu uso o apt-get ?? r: O apt-get é do debian e agora se tem no Cl6.0, é uma ferramenta maravilhosa. Voce pode "programa-la" na crontab por exemplo pra executar o apt-get e fazer todo dia upgrades de versões mais novas e corrigidas de pacotes do sistema. Configurando, edite o /etc/apt/sources.list deixe todas as linhas comentadas exceto a linha escrita: "rpm ftp://atualizacoes... ... ...6.0" então saia do arquivo e salve-o! Para inicializar a listagem de pacotes do servidor em em relação ao seu pc digite: "apt-get update" depois digite "apt-get upgrade" para começar a fazer download dos pacotes, instalar e resolver dependencias. -==========--==============--============= Onde eu altero a tela de inicalizaçao do grub ?? r.: O arquivo é /boot/grub/menu.lst -==========--==============--============= É possivel redirecionar textos, palavras, ... para outros tty's ?? r: Sim, é muito facil...suponha que vc queira jogar seu /etc/passwd na tty4 Então o comando seria: "cat /etc/passwd > /dev/tty4" Obs.: Pode se fazer algumas brincadeiras com isso, por exemplo ver tudo que o cara escreve na tty dele! Basta vc digitar: cat /dev/tty_dele -==========--==============--============= Como se manda uma menssagem para alguem no linux ?? r: write usuario tty <- "enter" Exemplo: write joao pts/0 <- "enter" Depois vc escreve a menssagem que quiser e quando acabar aperta ctrl+c Ou vc pode usar writevt, veja o exemplo: writevt /dev/tty1 "funcionou, a menssagem foi enviada" -==========--==============--============= Como descartar os erros de saída padrão ?? r: Pode se usar o 2>/dev/null -> esse comando esconde os erros de saída padrão! Por exemplo quando vc faz "find / -name crontab" ele retorna algums erros como find: /proc/5/fd: Permission denied find: /proc/3391/fd: Permission denied Se vc usar o 2>/dev/null não acontecera isso, olhe: [root@lnx bin]# find / -name crond* 2>/dev/null /etc/rc.d/init.d/crond /var/run/crond.pid /var/lock/subsys/crond /usr/sbin/crond /usr/share/man/man8/crond.8.bz2 [root@lnx bin]# -==========--==============--============= Como se edita o fonte de um programa e o compila de novo (sendo o src em RPM) ? r: Aqui a baixo estará tudo explicadinho, como se fosse recompilar o bind. 1 - Os fontes dos pacotes rpm ficam distribuidos assim: Binários Fontes CD1 CD3 CD2 CD4 2 - Os fontes ficam nos pacotes *.src.rpm, para "descompacta-los" você deve usar um: # rpm -ivh bla.src.rpm Isso fará o rpm jogar os fontes em /usr/src/rpm (como default para o usuário root). Nesse diretório existe a árvore: SPECS - Aqui ficam os specfiles. Esses arquivos possuem as "regras" necessárias para se compilar um programa e gerar os pacotes com os arquivos binários. SOURCES - Aqui ficam os patches que a distribuição aplica nos programas originais que também são colocados aqui. Você encontrará nesse diretório os arquivos .tar.gz(bz2) e os arquivos .patch(.diff) RPMS - Aqui dentro são jogados os pacotes rpm compilados. BUILD - Nesse diretório o rpm vai descompactar os fontes, aplicar os patches rodar o configure e o make. SRPMS - Depois de recompilado, um novo arquivo .src.rpm será criado aqui, com os fontes, patches e o specfile do pacote. 3 - Depois de mudado o specfile (do bind por exemplo) você pode rodar um: # rpm -ba /usr/src/rpm/SPECS/bind.spec Com isso, o rpm irá rodar o configure, o make e o make install para você, e irá jogar os binários compilados dentro de /usr/src/rpm/RPMS/i?86/bind-versão-release.i?86.rpm que poderá ser instalado com um: # rpm -ivh /usr/src/rpm/RPMS/i?386/bind-versão-release.i?86.rpm 4 - Parece difícil? Não é. Se você preferir, pode também pegar o .tar.gz que é colocado em /usr/src/rpm/SOURCES e descompactá-lo e rodar configure / make / make install. Vale lembrar, que muitas vezes a Conectiva aplica pathes de segurança nesses pacotes e esses também ficam em /usr/src/rpm/SOURCES, lembre-se de aplicá-los -==========--==============--============= Como fazer Ip Masquared ?? r: Muito simples basta carregar os modulos, depois ativa-lo(s) com o ipchains para MASQ! :)) Adicionei algumas regras no firewall para aumentar a segurança tambem! Suponho nesse txt, que voce ja tenha sua placa de rede ou moden instalado e configurado no linux! :-) PATH=/sbin:/bin:/usr/sbin:/usr/bin /sbin/depmod -a modprobe ip_masq_vdolive modprobe ip_masq_ftp modprobe ip_masq_cuseeme modprobe ip_masq_raudio modprobe ip_masq_irc echo "1" > /proc/sys/net/ipv4/ip_forward ipchains -F input ipchains -F output ipchains -F forward ipchains -P input ACCEPT ipchains -P output ACCEPT ipchains -P forward ACCEPT ipchains -A forward -s 10.0.0.0/24 -d 0.0.0.0/0 -j MASQ ipchains -A forward -s 0.0.0.0/0 -d 0.0.0.0/0 -j DENY Esse "scriptzinho" simplesmente carrega os modulos "mais conhecidos" do linux. Depois ele habilita o ip_forward direto no /proc/sys/net/ipv4 E por fim "limpa" todas suas regras atuais no seu Firewall (ipchains) depois insere regras para "liberar" conexões de fora e de dentro. E por fim, cria a regra do IP_MASQ ... permirindo a saida da sua rede interna no meu caso (10.0.0.*) para qualquer lugar. E a ultima regra "bloqueia" outras tentativas de fora de acessar o seu IP_MASQ. :-) Depois para ver se os modulos foram carregados corretamente faça: "lsmod" e para ver as rules do ipchains faça: "ipchains -L" Dicas: Se não estiver funcionando de uma olhada no seu /etc/sysconfig/ Alguns arquivos interessantes a se ver são: network, routed, ... Existem linux que o IP_FORWARD vem desabilitado por default, prescisa recompilar o kernel para habilita-lo nesse caso. É interessante voce verificar suas rotas tmb. Para isso escreva: "route -n" se voce perceber que faltam rotas... adicione-as. Para maiores informações "man route" =) Detalhe: O seu Getway é muito importante. Depois que voce tiver certeza que esta funcionando a sua saida do servidor para a internet. E se tudo parecer estar correto e não funcionar o IP_MASQ nas estações. Lembre-se: É extremamente recomendavel definir no ambiente de rede das estações o GETWAY (que será o servidor IP_MASQ) e o DNS (voce usara um servidor de DNS da internet). Tenha certeza que ele está funcionando. Se voce não estiver resolvendo IPs apenas das estações de uma olhada nas estações no DNS. E se o servidor não resolver, de uma olhada no "/etc/resolv.conf" Eu poderia ficar aqui escrevendo uma tarde inteira sobre problemas com IP_MASQ ... mais como é pra mim mesmo esse texto e por enquanto não vou passar pra ninguem, Ta otimo assim! :-) -==========--==============--============= Como compilar o kernel ?? r: Descreverei passo a passo como compilar um kernel novo no linux (no exemplo uso 2.2.16) Bom primeiramente baixe o kernel linux-2.2.16.tar.bz2 , depois siga o passo a passo a baixo. 1- Vá ao diretório /usr/src, digite ls -l, deve aparecer 2 diretórios e um link simbolico desta forma. lrwxrwxrwx 1 root root 12 Sep 5 19:22 linux -> linux-2.2.14 drwxr-xr-x 18 root root 4096 Sep 5 18:55 linux-2.2.14 drwxr-xr-x 7 root root 4096 Sep 5 18:46 redhat 2- Apague o link simbolico rm -rf linux, e digite ls -l ele deve ficar assim drwxr-xr-x 18 root root 4096 Sep 5 18:55 linux-2.2.14 drwxr-xr-x 7 root root 4096 Sep 5 18:46 redhat 3- decompacta o kernel que você baixou com o comando: bzip2 -dc linux-2.2.16.tar.bz2 | tar -xv 4- Isso criara um direótio linux dentro do /usr/src, digite ls -l novamente ficara assim: lrwxrwxrwx 1 root root 12 Sep 5 19:22 linux drwxr-xr-x 18 root root 4096 Sep 5 18:55 linux-2.2.14 drwxr-xr-x 7 root root 4096 Sep 5 18:46 redhat 5 Digite o comando os seguinte comandos: mv linux linux-2.2.16 chown -Rc root.root linux-2.2.16 ln -s linux-2.2.16 linux 6- Então de um dir deve mostra assim: lrwxrwxrwx 1 root root 12 Sep 5 19:22 linux -> linux-2.2.16 drwxr-xr-x 18 root root 4096 Sep 5 18:55 linux-2.2.14 drwxr-xr-x 15 root root 4096 Oct 27 10:14 linux-2.2.16 7 - Aí copie o arquivo .config que eu vou mandar junto com este e-mail para o diretório linux-2.2.16, logo apos fazer isso vá o diretório linux e digite a seguinte sequencia de comandos: make menuconfig Ele abrira o menu de configuração do kernel de você seguiu os passos acima corretamente, ele vai mostrar as opções do kernel não altere nada, a não ser que prescise, no menu embaixo vai ter um botão exit, clique nele ele vai perguntar se você quer salvar as configurações do kernel clique no yes, ele vai salvar e sair deste menu, em seguida digite esta sequencia de comandos: make dep depois que ele terminar make clean depois que ele terminar make bzImage depois que ele terminar make modules depois que ele terminar make modules_install aí digite os seguintes comandos: cp arch/i386/boot/bzImage /boot/vmlinuz-2.2.16, depois cp System.map /boot/System.map-2.2.16 e depois cp /boot/modules-info-2.2.14 /boot/modules-info-2.2.16 depois edite dentro do /etc/lilo.conf algo como isso: boot = /dev/hda timeout = 20 prompt default = linux vga = normal map=/boot/map install=/boot/boot.b image = /boot/vmlinuz-2.2.14-5.0 label = linuz read-only root = /dev/hda1 image = /boot/vmlinuz-2.2.16 label = linux read-only root = /dev/hda1 Depois disso salve e saia do arquivo e digite, /sbin/lilo, aí reinicie a maquina, se você fizer tudo corretamente seu kernel novo ira funcionar perfeitamente, qualquer coisa me manda um e-mail me dizendo o resultado. -==========--==============--============= ...::: Recompilando Kernel :::.. Esse tutorial está meio bagunçado, mas serve como base.! Aqui eu coloquei varias "dicas legais" pra se recompilar o kernel. Compilando o Kernel: O Source do Kernel deve estar em /usr/scr/ Pode se encontrar esse Source Kernel no CD da sua distribuição. Para chamar o "gerenciador de opçoes a compilar do kernel" chame em /usr/scr/linux o comando "make menuconfig" ou "make config" Dentro do "Gerenciador" cada opção são os modulos, <*> são compilados no proprio kernel e < > não estão selecionados. As opções que estão entre [ ] são as chaves princiapis e as que estão < > são chaves secundarias. Descreverei um simples exemplo abaixo: [M] NTFS support (Read-Only) <*> Experimentarl Read/Write NTFS Obs.: Se vc selecionar a chave primaria [M] como modulo, não importa se a chave secundarias estaram como Buil-in <*>. Todos herdaram a dependencia e serão gerados como modulos (a não ser que esse modulo tenha alguma regra especial) . É muito mais rapido se deixar tudo Build-in, assim o sistema não tem que re-inicializar tudo separado (perdendo desempenho). Porem se vc por uma opção Build-in de suporte a alguma opção, que não exista na sua maquina. Isso podera resultará em Kernel Panic, e consequentemente inutilização do sistema. Exemplo se voce colocar suporte a Scsi como Build-in na sua maquina e voce não tiver Scsi, certamente isso resultará em Kernel Panic. Então tudo que voce não tiver certeza que existe ou quer apenas testar coloque em modulos. Pode se tambem ter dois Kernel's ou mais na maquina. Assim se der kernel Panic vc inicaliza pelo outro e arruma o kernel. Por default eh gerado /usr/src/linux/arch/i386/boot/bzImage para se ter dois kernels, basta vc antes de compilar fazer uma copia desse arquivo pra /boot/grub ou /boot e depois alterar o lilo.conf ou o menu.lst do grub. Para quem nao sabe o grub eh um gerenciador de boot, assim como o lilo! ;) Assim voce ficara com dois kerlens o antigo (o que vc ultilizava) e o novo, que é o que voce vai copiar apos acabar de compilar o kernel. Um simples exemplo abaixo, sendo que o vmlinuz.new é o kernel novo que eu compilei e jogeu pro /boot com o nome de vmlinuz.new: cat /etc/lilo.conf #Cut Here-- boot = /dev/hda <- esse é o file system onde está meu / map = /boot/map <- é ultilizado para criar o mapa das partições timeout = 50 message = /boot/message root=/dev/hda6 <- é onde esta montado o file system do /boot vga = normal <- o proprio nome já diz! heheh :) password = wendeL <- senha do lilo image = /boot/vmlinuz.new label = Meu-Linux root = /dev/hda8 initrd = /boot/initrd-2.2.17-14cl.img # Para maiores informações: "man lilo.conf" Cut Here-- [root@aluno05 /etc]# lilo Added Linux * Added memtest Added WinNT Added Meu-Linux [root@aluno05 /etc]# Isso pode ser feito no menu.lst no /boot/grub depende do gerenciador de boot que voce ultiliza. Dessa forma ficamos com dois kernels o novo e o velho. Essas setinhas que eu coloquei no texto nao podem existir no lilo.conf senao ele acusara erro nas linhas com setas! :P Apartir desses comentarios vc pode ter ideia de como mudar o seu lilo.conf apos recompilar seu kernel, para deixar uma ou duas imagnes/kernel's para inicalização! Depois de feita qualquer alteração no lilo.conf eh necessario se rodar o comando lilo, para que ele se auto-execute e adicione as novas caracteristicas do lilo.conf :) Existe um arquivo chamado /usr/src/linux/.config (em algums casos pode se usar o "default" /usr/src/linux/arch/i386) dentro desse arquivo estão todas as configurações do Kernel que são feitas em "make menuconfig" podendo edita-lo diretamente de lá. Um pedaço do .config da minha maquina: # ...:::: Mas muito cuidado com as alterações feitas nesse arquivo ::::..... # Automatically generated by make menuconfig: don't edit # # # Code maturity level options # CONFIG_EXPERIMENTAL=y # # Processor type and features # # CONFIG_M386 is not set # CONFIG_M486 is not set CONFIG_M586=y # CONFIG_M586TSC is not set E assim vai.... Apos tudo isso ser feito basta se fazer, os seguintes comando para compilar o kernel: make dep make clean make modules make modules_install make bgImage Pode ser feito tambem o comando "make depend", esse maravilhoso comando verifica se existe dependencias nas alterações do seu kernel e tenta as resolver. Depois é so fazer os "make's" de novo, como descrito acima. Senão, vc pode fazer de uma forma muito mais fácil usando tudos os comandos de make de uma vez só: # Porem essa forma dificulta o entendimento de onde deu pau, na compilação do kernel, caso isso aconteça! ;) make dep clean modules modules_install bzImage Todos makes devem ser feitos em /usr/src/linux No comando "make" vc pode usar o opção "-i" no final, que ignora erro(s). Wroted by: Wendel Guglielmetti Henrique -==========--==============--============= Como mudar a versão do Bind ?? r: Visto ultimamente ter havido uma enchente de scans a subnets por causa da recente vulnerabilidade do bind, uma maneira de prevenir-se é mudando a "version display" do bind, pra isso basta inserirem isto no vosso named.conf: options { version "Versão Falsa"; } Exemplo de um BIND alterado: // generated by named-bootconf.pl options { directory "/var/named"; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; // basta adicionar aqui: version "versão falsa"; }; // // a caching only nameserver config // zone "." { type hint; file "named.ca"; }; zone "0.0.127.in-addr.arpa" { type master; file "named.local"; }; -==========--==============--============= Como ver o id de um usuario ou até mesmo ou do usuario que vc está logago? r: Use o comando "id" para saber o seu id e para saber de outro usuario faça "id user". Ele tambem mostra a qual grupo vc pertence. :)) E ainda pode ser combinado com o "uname" olhe o exemplo: # uname -na;id root Linux lnx.WendelSecurity.com.br 2.2.17-21mdk #1 Thu Oct 5 13:16:08 CEST 2000 i586 unknown uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) [root@lnx /root]# -==========--==============--============= Como eu localizo um "binario" rapidamente no linux ?? r: Voce pode usar o comando "whereis" usa-se "whereis arquivo" um exemplo abaixo: [root@lnx /root]# whereis ssh ssh: /usr/bin/ssh /etc/ssh /usr/lib/ssh /usr/share/man/man1/ssh.1.bz2 [root@lnx /root]# -==========--==============--=============-- Onde ficam os arquivos de configuração do SSH ?? r.: Eles ficam por default em /etc/ssh -==========--==============--============= Como inicializar o processo do mouse? Quem é respondavel por isso ? r: O responsavel pelo mouse no linux é o "gpm" para inicializar o processo do mouse, basta chamar "gpm". Caso vc queira mudar o seu tipo de mouse faça: "gpm -t tipo_do_mouse" para pegar a lista de tipos de mouse faça: "gpm -t help" e ele te mostra toda lista!!! :) -==========--==============--============= O que é o core, pra que server? E se ele parar de ser criado no sistema? r: O "core" é muito importante no sistema, por exemplo se ocorre um erro em um aplicativo que está sendo executado, ele grava o "erro" dentro do arquivo "core" Se pararem de ser criados os "core" no seu sistema, para voltar a cria-los, digite: "ulimit -u unlimited" -==========--==============--============= Como posso rodar aplicações do X dentro do NT ?? r: Use algum programa como o MiX, instale-o e abra. Depois vá no shell e faça um export. O comando é "export DISPLAY=meu_ip:0.0" existem varias opções! O Mix so pode ser usado para exportar aplicativos do X-win, e não o X-win! :) exemplo de como chamar o netscape! :) Instalei e abri o MiX, no linux "export DISPLAY=meu_ip:0.0" depois no linux ainda "netscape &" pronto! Está rodando o netscape no Mix, dentro do Windows. =) Existe um programa muito melhor que o Mix, Chamado WinAxe, ele nunca expira, e funciona meia hora então para, mais basta vc fecha-lo e abrir de novo que volta a funcionar! :) O bom do WinAxe é que com ele pode se exportar o X-Windows tmb!! Fantastico!! huheu =) Se exporta do mesmo modo "export DISPLAY=meuip:0.0" Ele pode ser encontrado em www.downloads.com ou www.tucows.com -==========--==============--============= Como Troca ou substituir qualquer ocorencia no ls: ls -l /etc |sed 's/root/cobaia/g' -==========--==============--============= So deixa mostrar os primeiros 15 caracteres na tela: ls -l /etc |sed 's/root/cobaia/g' |cut -c-15 -==========--==============--============= Delimita campos no ls: ls -l /etc |sed 's/root/cobaia/g' |cut -c-15 | cut -d '1' -f2 -==========--==============--============= Manda para o e-mail determinado usando o comando "mail" o comando a frente do echo: echo "ls -l /etc |sed 's/root/cobaia/g' |cut -c-15 | cut -d '1' -f2" | mail -s "teste" gpeixoto@WendelSecurity.com.br -==========--==============--============= Shutdown com tempo programado e menssagem para os usuarios: shutdown -h 3 Sistema sendo desligado! -==========--==============--============= Exibe todos comandos ultilizados no shell atual: history Pega a lista do /home_do_user/.bash_history -==========--==============--============= Criando um aliases, que quando chamar o cls ele executara o clear: alias cls="clear" -==========--==============--============= Para deixar que o aliases nao perca as configurações quando reiniciar insira o alias no arquivo: /etc/bashrc -==========--==============--============= Como ordenar arquivos ?? sort => orderna um arquivo: sort < /etc/passwd -==========--==============--============= Maninupar terminais, por exemplo jogar resultados do ls pra outros tty(s) ls > /dev/tty1 ls > /dev/tty2 -==========--==============--============= No caso de perder ou apagar o passwd, tanto ele quanto o shadow tem uma copia com seu nome: /etc/passwd -> copia -> /etc/passwd- /etc/shadow -> copia -> /etc/shadow- -==========--==============--============= Por exemplo para ordernar o passwd e joga-lo na tty2 sort < /etc/passwd > /dev/tty2 -==========--==============--============= Le as primeiras linhas de um arquivo (cabeçalho) (por default são 10 lines) head /etc/passwd /* Pode se usar -n"numero de linhas a ser exibidas" */ -==========--==============--============= Le as ultimas linhas de um arquivo (util para se ler logs). (por default são 10 linhas tambem) tail /etc/passwd /* Pode se usar -n"numero de linhas a ser exibidas" */ -==========--==============--============= wc lista os bytes, palavras e linhas de um arquivo: wc /etc/passwd -==========--==============--============= Como obter informações de um Host (como ip, aliases) ?? r: Very Easy, use o comandos "host" .... "host site" Pode direciona-lo para um IP tmb, e ele le dira qual o host ... :) Example: [root@lnx /root]# host www.mail.ru www.mail.ru has address 200.187.242.10 [root@lnx /root]# host 200.187.242.10 10.242.187.200.IN-ADDR.ARPA domain name pointer zipmail.zip.net [root@lnx /root]# -==========--==============--============= Como saber o tamanho de um diretorio e seus subdiretorios, e arquivos contidos neles? r: Muito simple se usa o comando "du". Pode usa-lo ainda, para obter seus resultados em mega bytes. usando o "du -m". Um exemplo pratico: [root@lnx /root]# du -m updates/ 1 updates/needed 1 updates [root@lnx /root]# -==========--==============--============= E como saber o tamanho de um file system ?? r: Fácil, utiliza-se o comando "df". Voce pode utilizar "df -opçao file_system". As opções mais comuns são "-k e -h". O "df -h" exibe os file systems já em MB. E o "df -k" exibe em um block size de 1024, ficando fácil para caulcular seu tamanho real. Em Unix como "AIX" é ultilizado o -k porque não existe o -h. -==========--==============--=============- Como Habilitar o NAT do seu proxy para utilizar o NetMetting ?? r: Abaixo o tutorial completo: IP_MASQ_H323 is a Linux masquerading module for the support of H.323 based application. *** What is H323? H.323 is a standard of the ITU that defines the protocols to provide audiovisual communication sessions on any packet networks. It is currently implemented by various Internet real time applications as Microsoft Internet Meeting (for windows95/98/2000/NT) and Voxilla (for Linux). H.323 is an umbrella standard that references many other ITU-T protocols like H.225 and H.245. The H.323 describes the system, the call model and call signaling procedures. The H.225 protocol is used to describe the media (audio and video), the stream packetization, media stream synchronization and control message formats. The H.245 describes the messages and procedures used for opening and closing logical channels for audio, video and data, capability exchange, control and indications. *** What is ip_masq_h323 for? IP_MASQ_H323 extends the Linux masquerading in order to allow the end users to use H.323 applications behind a NAT router (that is a any linux pc that is used as a gateway between a local network and the public Internet). *** WHERE is ip_masq_h323? Just save the "www.coritel.it/coritel/ip/sofia/nat/nat2/ip_masq_h323.c" *** HOW to build the module: - Put the file ip_masq_h323.c in the directory /usr/src/linux/net/ipv4 - Edit the file /usr/src/linux/net/ipv4/Makefile - Modify the line to look like this: M_OBJS += ip_masq_ftp.o ip_masq_irc.o ip_masq_raudio.o ip_masq_quake.o ip_masq_h323.o - Be sure to have enabled the module support in the kernel - Issue make modules modules_install from /usr/src/linux - Now try to insmod ip_masq_h323 and look the log file /var/log/messages -==========--==============--============= Onde ficam os "modulos" apos serem compilados ?? Como por exemplo o H323 do netmeeting ?? r: Simples, são todos gerados em "nome_do_modulo.o" dentro do diretorio: /lib/modules/2.2.14-14cl/ipv4/ Vamos listar os arquivos la dentro: total 140 drwxr-xr-x 2 root root 4096 Dec 4 17:31 . drwxr-xr-x 11 root root 4096 Jan 10 13:06 .. -rw-r--r-- 1 root root 11228 Jan 10 13:05 ip_gre.o -rw-r--r-- 1 root root 4784 Jan 10 13:05 ip_masq_autofw.o -rw-r--r-- 1 root root 2632 Jan 10 13:05 ip_masq_cuseeme.o -rw-r--r-- 1 root root 6668 Jan 10 13:05 ip_masq_ftp.o -rwxr-xr-x 1 root root 9984 Dec 1 16:43 ip_masq_h323.c -rw-r--r-- 1 root root 5384 Jan 10 13:05 ip_masq_h323.o -rw-r--r-- 1 root root 3508 Jan 10 13:05 ip_masq_irc.o -rw-r--r-- 1 root root 6264 Jan 10 13:05 ip_masq_mfw.o -rw-r--r-- 1 root root 4860 Jan 10 13:05 ip_masq_portfw.o -rw-r--r-- 1 root root 3216 Jan 10 13:05 ip_masq_quake.o -rw-r--r-- 1 root root 5220 Jan 10 13:05 ip_masq_raudio.o -rw-r--r-- 1 root root 5172 Jan 10 13:05 ip_masq_user.o -rw-r--r-- 1 root root 3064 Jan 10 13:05 ip_masq_vdolive.o -rw-r--r-- 1 root root 2460 Jan 10 13:05 ip_vs_lc.o -rw-r--r-- 1 root root 2460 Jan 10 13:05 ip_vs_rr.o -rw-r--r-- 1 root root 2496 Jan 10 13:05 ip_vs_wlc.o -rw-r--r-- 1 root root 2916 Jan 10 13:05 ip_vs_wrr.o -rw-r--r-- 1 root root 9296 Jan 10 13:05 ipip.o -rw-r--r-- 1 root root 6208 Jan 10 13:05 rarp.o -==========--==============--============= Como "compactar e descompactar" arquivos usando o compress e o uncompress ?? r: Para se compactar um arquivo usa-se "compress arquivo_a_compactar" então o arquivo sumirá, e aparecera um nome com o mesmo nome, porem com um ".Z" no final. Olhe o exemplo: WendelSecurity:/>ls -la wendel* -rwxr-xr-x 1 root root 37458 Nov 30 14:10 wendel.out WendelSecurity:/>compress wendel.out WendelSecurity:/>ls -la wendel* -rwxr-xr-x 1 root root 21272 Nov 30 14:10 wendel.out.Z WendelSecurity:/> Podemos ver o que aconteceu, para descompactar é so usar o "uncompress" da mesma forma. Vejamos: WendelSecurity:/>ls -la wende* -rwxr-xr-x 1 root root 21272 Nov 30 14:10 wendel.out.Z WendelSecurity:/>uncompress wendel.out.Z WendelSecurity:/>ls -la wendel* -rwxr-xr-x 1 root root 37458 Nov 30 14:10 wendel.out WendelSecurity:/> Existe um comando super legal, que voce pode utilizar para compactar por exemplo um diretorio inteiro, e seus subdiretorios... e assim sussecivamente. O comando é: $ find ./ -name "*" -exec compress {} \; -print -==========--==============--============= O que é "expr" ?? r.: "expr" é um programa para calcular expressões matemáticas, tem varias funções. Vejamos algumas básicas: [root@lnx /root]# expr 2 + 8 10 [root@lnx /root]# expr 20 % 2 0 [root@lnx /root]# expr 10 / 2 5 [root@lnx /root]# Para maiores informações "man expr" -==========--==============--============= Meu SSH não me deixa logar como root!! Como mudar isso ?? r.: Adicione a linha "PermitRootLogin yes" no arquivo /etc/ssh/sshd_config Obs.: Se voce definir "PermitRootLogin no" será impossivel logar como root, isso normalmente vem como "no" por motivos de segurança. -==========--==============--=============-- Como executar uma seguencia de comandos ordenados ? Ou executar uma aplicação, e dentro dela executar outros comandos ainda ?? r.: Para isso nos usamos o "EOF". Suponha que voce quer levantar o "listener" do Oracle. Então voce teria que fazer "lsnrctl" depois fazer "start". Se voce criar um simples script e colocar essas duas linhas, der permissão "+x" e executar, ele apenas entrará no "lsnrctl" e não conseguirá rodar o "start". Aí que entra o "EOF", obeserve o exemplo e voce entenderá como ele trabalha: WendelSecurity:/>lsnrctl < start > EOF LSNRCTL for Linux: Version 8.1.5.0.0 - Production on 09-MAR-01 12:24:01 (c) Copyright 1998 Oracle Corporation. All rights reserved. Welcome to LSNRCTL, type "help" for information. LSNRCTL> TNS-01106: Listener using listener name LISTENER has already been started LSNRCTL> WendelSecurity:/> -==========--==============--=============-- O que eu façõ se quando eu tento usar o "apt-get" do cl6.0 ele da pau de "chave de GPG" ?? r.: Simples, ou voce pode apenas remover a palavra "[cncbr]" do arquivo "/etc/apt/sources.list", assim ele não usará a chave. O que não é bom. Senão voce pode criar a chave. Muito facil. Va como "r00t" no dir "/root" e crie um arquivo lá dentro com o nome "gpg.asc" com o seguinte conteudo: --BEGIN PGP PUBLIC KEY BLOCK-- Version: GnuPG v1.0.4 (GNU/Linux) Comment: For info see http://www.gnupg.org mQGiBDlQzhkRBADKB0USEUln4/uN86hNtqLg0I4vr8823VTXm8D2T+u89Ck/cl1k TSxX9T8cgVZkYpRx6Eq7YwHsnCYZGz8WvT/SirJSZsiT8Vve0uHtB7ClAwVfcs05 3diR8/JJPIPtwyIGBESX5Lvie5O/kvt2i0oXLFjdObAy0wcbFZjwgi+OJwCg9FxQ 9Aeh+ZUgodMoVDkQBeLoBhkD/0wv3bEPRM20F0BS/8938AbrFBCNpn5oehCx1Pev q4CP542JtM1L64tFasZgiEy1oQTvTJKIx2WrXPXAC+/bzi/aNXhQtaHjoJ6GY25c sB5qIXOQPAfVZqxey/PNswSDiCroQ9B2rqEuoQXQTzeCcSRmmItc56PZzGI5eufu gtG+A/98u0o3nezinZCEa+r1vqGl0bMJiXCBmid0+I/NCKTctzyCufnHY++jhw9o zrAh0Kpku8q/cU2zAKwINCIbiou/W5ARPzEDdWs+8iIFiHX14EjVKJWoTyYRwUEq 2hM+fW8EY2+ZcJuNBCDEh6n7PkkuAzErc445gqRt/uxQpMUT+bQqQ29uZWN0aXZh IFMuQS4gPHNlY3VyaXR5QGNvbmVjdGl2YS5jb20uYnI+iFYEExECABYFAjlQzhkE CwoEAwMVAwIDFgIBAheAAAoJEONo3dCZgHGQp9QAn1XFu3YDiETPdHgN4XaHYJjI /DUnAKCKiQhtgQ5N2yhTmWCHZZ6LyDF0E4kAlQMFEDlQ1LENESADULHtAQEBqY0E AIrLiOyMww5uz2tBmxeeh2VpfkpWMsryUthIL6DrsHfzDkNzrJUbw+a277lNhaNq nZhsKckAgaV1fQ+8Kq26+YPCM7C1PpYmBNoDnODojojFpAG9hkpH4JNPToRxV/Td QdeFEzMSdnEvL4EoHvpLNkFg7MHRGgzJVWc8yVXNrFJMiEYEEBECAAYFAjoEfq0A CgkQeEJZs/PdwpDafACgrPbTkmnSXLljxUxgy+gSDB0ulPgAoJYXW3oUPryUcpz7 g5/nQ/jkKAujiEYEEBECAAYFAjomWkYACgkQiRDznl8DCoAjtQCfV9O7RKhOrgtG O5/qpWOLcfe8MagAnjxnpZlMi2wJ0oTFlBxv3ev5Y+wTiEYEEBECAAYFAjomVWsA CgkQlP7BSW9McrqeuACgvfnDSZ5s3jysvPH4Tq6G6MZzSQ8AoKybIsqeMu/Wxl7p cZ9BfIP89xqMiEYEEBECAAYFAjnTh8sACgkQn5NdOMMM/nENsgCgyTmSe0GI4wqT 5o/5p08UFgdCN7AAoKiAcLb4Ag2E9G6RWQLZUySFjBECiEYEEBECAAYFAjn0SYAA CgkQtqtGgZIk3wF/2QCeNrrE+/nUih981OpLqeFwna92WPUAnj6pAxClFl6i5+iZ ncqLBT0xjZo3iEYEEBECAAYFAjn/P4QACgkQawFeRAx9n0kCqACglNKbwj9SpAuq 8IBwDhOl/cAjBpkAoJo7BAq3tt/TRkYRe5U0AVJh5dV2uQENBDlQziAQBACpQws2 FUSVjPThBlr/Bumlf0DL7wJjLtjXaR45InSw79koZlorK0KNKvUXjz+5a+vXegjh 6Y2eEOnhAhWNRN/or9FrAMStbKX4057/X8FrikFoDZrkjiuQU6wZlsAu2iknaDIc ixoT5XsTy/TCqathGDeW7AuKNEgUrT2GbccmOwADBQQAhTFeY1Yp80dNHo0BP7pe o74OQrMy9p5WCxTkncLSsfck5+s58j9lF5pbg1Mnlq8lDg8WZXZD5d4gQ3i39h9K sBCcyc9TDlsUsl7fStFbfMpXtGwvnBZt/ygt4qqsxc6UojtMlaE2hpyXmE5vzRQB NiF3rbLtAUsEUkCNKiCgFtiIRgQYEQIABgUCOVDOIAAKCRDjaN3QmYBxkEtbAJsF up1KxEqI4PSlClSCWCSFxdALXgCfeYvLL3AgAhu1CYC3MWRLIV2NuAs==Uu4H --END PGP PUBLIC KEY BLOCK-- Então va na shell como "r00t" e teste a chave "GPG" da seguinte forma: WendelSecurity.int:/root>gpg --fingerprint security@conectiva.com.br pub 1024D/99807190 2000-06-21 Conectiva S.A. Key fingerprint = 30EA E85C 3D91 C298 80B4 F0B3 E368 DDD0 9980 7190 sub 1024g/072A25F5 2000-06-21 WendelSecurity.int:/root>gpg --list-sigs security@conectiva.com.br pub 1024D/99807190 2000-06-21 Conectiva S.A. sig 99807190 2000-06-21 Conectiva S.A. sig 50B1ED01 2000-06-21 sig F3DDC290 2000-11-04 Andreas Hasenack sig 5F030A80 2000-11-30 Flávio Bruno Leitner sig 6F4C72BA 2000-11-30 Osvaldo Santana Neto sig C30CFE71 2000-09-28 Rodrigo Barbosa sig 9224DF01 2000-10-23 Arnaldo Carvalho de Melo sig 0C7D9F49 2000-10-31 Sergio Devojno Bruder sub 1024g/072A25F5 2000-06-21 sig 99807190 2000-06-21 Conectiva S.A. WendelSecurity.int:/root> Pronto, agora é so usar o "apt-get" normal!!! Ele vai funcionar que é uma maravilha, se voce tiver maiores problemas, atualize a versão do seus "gnupg" -==========--==============--=============-- Como configurar o "NIS" client e server ?? r.: Configurando o NIS client! Altere o arquivo "/etc/yp.conf" colocando a seguinte linha descomentada: "ypserver ip_do_servidor_de_NIS" Va em "linuxconf" -> "ambiente de rede" -> "NIS" e insira: Dominio NIS: "nome_do_dominio do_servidor_NIS" IP:"ip_do_servidor_NIS" Para inicializar ou para o serviço de NIS: /etc/rc.d/init.d/ypbind start /etc/rc.d/init.d/ypbind stop /etc/rc.d/ypserver start Configurando o NIS server. Deixe apenas as seguintes linhas autenticadas no "ypserv.conf" dns: no * : shadow.byname : port : yes * : passwd.adjunct.byname : port : yes Inicie os seguintes serviços: /etc/rc.d/init.d/ypserv start /etc/rc.d/init.d/yppasswdd start /etc/rc.d/init.d/ypbind start Vá em "/var/yp" e se escreva "make" <- para qualquer atualizaçao no NIS, é necessario fazer o "make" de novo! :) É necessario reiniciar o computador para pegar as alterações. Para mudar a senha de "autenticação" de um usuario faça: "yppasswd usuario" Obs.: A senha do r00t é autenticada localmente, e o restante dos outros usuariosserá logado no servidor NIS. -==========--==============--=============-- Como criar um alias pra placa de rede e adicionar uma rota para ela?? r.: Utiliza-se o "ifconfig" .... vejamos ums exemplo: -=Criando um alias=- ifconfig eth0:1 192.168.1.30 -=Deletando a rota velha e adcionando uma rota nova. route del default route add default gw 192.168.1.1 dev eth0:1 -=Para baixar o aliases=- ifconfig eth0:1 down route del default -==========--==============--=============-- Um super truqe para fugir do "netstat". Apenas observe: r.: WendelSecurity.int:/>alias netstat="netstat $1 |grep -v 10.0.0.100 |grep -v nt_WendelSecurity" WendelSecurity.int:/>type netstat netstat is aliased to `netstat |grep -v 10.0.0.100 |grep -v nt_WendelSecurity' WendelSecurity.int:/>whereis netstat netstat: /bin/netstat WendelSecurity.int:/>/bin/netstat WendelSecurity.int:/>/bin/netstat -na |grep 10.0.0.100 tcp 0 0 10.0.0.150:22 10.0.0.100:2218 ESTABLISHED tcp 0 0 10.0.0.150:22 10.0.0.100:4864 ESTABLISHED WendelSecurity.int:/>alias /bin/netstat="netstat $1 |grep -v 10.0.0.100 |grep -v nt_WendelSecurity" WendelSecurity.int:/>/bin/netstat -na |grep 10.0.0.100 WendelSecurity.int:/> Tecnicas de detectação: WendelSecurity.int:/>type netstat netstat is aliased to `netstat |grep -v 10.0.0.100 |grep -v nt_WendelSecurity' WendelSecurity.int:/>alias -p alias /bin/netstat='netstat |grep -v 10.0.0.100 |grep -v nt_WendelSecurity' alias cds='cd /etc/rc.d/init.d && ls' alias cp='cp -i' alias fd='mount /dev/fd0 /mnt/floppy; cd /mnt/floppy && ls' alias l='ls -laF' alias ldir='mount /mnt/floppy && l /mnt/floppy && umount /mnt/floppy' alias m='minicom -s -con -L' alias minicom='minicom -s -con -L' alias mv='mv -i' alias netstat='netstat |grep -v 10.0.0.100 |grep -v nt_WendelSecurity' alias rm='rm -i' alias tm='tail -f /var/log/messages' alias tmm='tail -f /var/log/maillog' alias tms='tail -f /var/log/secure' alias type='type |grep -v netstat' alias type netstat='/bin/netstat' alias ufd='cd /mnt && umount floppy && ls' alias which='type -path' WendelSecurity.int:/> Algumas ideias para fugir das tecnicas de detectação: 1) WendelSecurity.int:/u/bkpBanco>alias type="type $1 |grep -v" WendelSecurity.int:/u/bkpBanco>type WendelSecurity.int:/u/bkpBanco> WendelSecurity.int:/u/bkpBanco> type ls WendelSecurity.int:/u/bkpBanco> grep: ls: No such file or directory WendelSecurity.int:/u/bkpBanco>type netstat WendelSecurity.int:/u/bkpBanco> 2) Para o "aliases -p" eu não tenho ideias por enquanto. -==========--==============--=============-- Como fazer download de varios arquivos por FTP sem pedir confirmação ?? r.: Conecte no FTP, depois log, se o arquivo(s) for(em) um binario digite "bin", se o arquivo(s) for(em) ascii digite "ascii" em seguida set o "prompt" ele mostrará na tela "prompt off" aí basta pegar todos com "mget *" -==========--==============--=============-- Como configurar uma impressora local no Linux ?? r.: Simples, para configura-la vá em "linuxconf/Miscellaneous services/ Printer/Add/Edit Printers/Add" então a configuração ficará parecida com essa: lqqqqqqqqqqqqqqqqqqqqq Printer properties qqqqqqqqqqqqqqqqqqqqqk x x x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x xPrinter name: xlp x x xPrinter type: xlocal x x x xqqqqqqqqGeneral optionsqqqqqqqqqx x xMaximum file size: x0 x x xSupress headers: x[X] (usually yes) x x x xqqPrintertype-specific optionsqqx x xConnected to: x(o) /dev/lp0 (typical) x x x x( ) /dev/lp1 x x x x( ) /dev/lp2 x x x x( ) custom: x x x x x x x xqqqqqqqqqFilter optionsqqqqqqqqqx x xFilter currently selected: xEpson Stylus Color (UP) x x xResolution: x(not available) vx x xPaper size: xletter vx x xColor depth: xStylus Color any type, 360x360Dvx x xPrinted pages: x1 vx x x x[ ] Send EOF x x x x[ ] Fix ladder effect (CR+LF) x x x x[X] Fast ASCII output x x xHorizontal margins: x18 x x xVertical margins: x18 x x xGS extra options: x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x x lqqqqqqk lqqqqqqqk lqqqk lqqqqqqqqqqqqqqqqk lqqqqk lqqqqk x x xAcceptx xDismissx xDelx xSelect filter...x xTestx xHelpx x x mqqqqqqj mqqqqqqqj mqqqj mqqqqqqqqqqqqqqqqj mqqqqj mqqqqj x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj Detalhe: Veja é ela foi definida em "Printer Type" como local. Para inicializar e parar o serviço é muito simples: WendelSecurity:/var/log>/etc/rc.d/init.d/lpd stop Shutting down lprng: [ OK ] WendelSecurity:/var/log>/etc/rc.d/init.d/lpd start Starting lprng: [ OK ] Existem Casos que a folha é impressa e para (a impressora não ejecta) o papel... para mudar isso deixe os seguintes arquivos com essas configurações: WendelSecurity:/var/spool/lpd/lp>tail -f filter # # # see if we need to send a form feed to eject the page from printer if [ "$SEND_EOF" != "" ]; then printf "\014" fi exit 0 WendelSecurity:/var/spool/lpd/lp>tail -f textonly.cfg # # This file was generated by Linuxconf's Printer module # according fileformat from RH's printtool # # Comments and unsupported entries may be lost! # TEXTONLYOPTIONS= CRLFTRANS= TEXT_SEND_EOF=YES WendelSecurity:/var/spool/lpd/lp> Obs.: Voce pode configurar pelo linuxconf tmb marcando com "X" a opção "send EOF", mais nem sempre isso funciona. EOF = End Of File. Caso voce tenha configurado tudo, e a impressora não esta imprindo. Verifique seu arquivo "/etc/printcap" e veja se é equivalente a este: ##PRINTTOOL3## LOCAL uniprint NAxNA letter {} U_EpsonStylusColor stcany {} lp:\ :if=/var/spool/lpd/lp/filter:\ :lp=/dev/lp0:\ :mx#0:\ :sd=/var/spool/lpd/lp:\ :sh: Deixando bem claro, que voce tem que definir o local de spool igual no "/etc/printcap" igual é definido no linuxconf. :-) Problemas Gerais: Caso mesmo assim voce tenha problemas de menssagens que sua impressora não suporta postscript. Então troque o seu filtro por esse: Arquivo de filtro: /var/spool/lpd/sua_printer/filter (cat - | (awk '{ printf ("%s\r\n",$0); }') ; echo -n -e "\f") Se com tudo isso voce ainda tiver problemas com a impressora não ejectar a folha, voce terá que enviar o sinal "^L" manualmente para impressora. Esse sinal que faz a paginar ejectar. Crie um arquivo com as seguintes linhas e depois set o bit de execução para ele. crie o arquivo "/usr/sbin/lp-eject" com o seguinte conteudo: lpr -P $1 $2 lpr -P $1 /usr/bin/out Salve e saia, agora crie um arquivo chamado "/usr/sbin/out" e dentro dele ensira o "^L", note que ele não é apenar "ctrl+L" esse "^L" é um caracter só, que na tabela ASCII é representado por "alt012" que equivale a "^L". Insira no arquivo "out" o "alt012" no arquivo então. ficando assim: ^L Caso voce não consiga gerar o "alt012" existe um pronto em: "/usr/lib/linuxconf/printer/printertest.txt" então é so copiar e colar. Pronto, agora passe o bit de permissão "chmod +x /usr/sbin/lp-eject" "chmod 644 /usr/bin/out" Agora está tudo pronto, para imprimir faça: "lp-eject sua_printer /arquivo/a/ser/impresso" Exemplo real: "lp-eject Epson-3 /etc/hosts" Para verificar o status da(s) impressoras faça "lpstat -a" Observe o exemplo de como fica: WendelSecurity.int:/var/spool/lpd>lpstat -a ate1 accepting requests since 2001-04-11-11:27:27.581 fab accepting requests since 2001-04-11-11:27:27.618 lp accepting requests since 2001-04-11-11:27:27.652 lp1 accepting requests since 2001-04-11-11:27:27.661 WendelSecurity.int:/var/spool/lpd> Dica Para melhorar a portabilidade do samba com as impressoras. Altere o seu arqivo "smbprint" no meu caso ele fica em "smbprint is /usr/bin/smbprint" mais no seu linux pode estar em outro diretorio. :-) A ultima linha desse arquivo é a seguinte: cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I} \ $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup" \ -c "$command" 2>/dev/null Altere essa linha, pra que ela fique desse modo: ( cat - ; echo -e "\f\c" ) | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I} \ $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup" \ -c "$command" 2>/dev/null IMPORTANTE: Se o CUPS estiver instalado, o "lpd" não funcionará corretamente. -==========--==============--=============-- E para imprimir em uma impressora remota (SMB/WINDOWS) ?? r.: Como voce já aprendeu a configurar a impressora local, a remota são dois palitos agora! :) Descreverei apenas o que muda de uma para outra. A parte do "EOF" é igual. Para inicializar/Parar o serviço tambem é igual. O linuxconf eu mostrarei o meu como ficou, (é necessario criar um usuario) para impressão e definir uma senha pra ele, que será usada no linuxconf. Obs.: Eu aconselho voce a criar um usuario e definir a senha igual do login/senha da maquina remota que a impressora está configurada. O linuxconf fica assim: lqqqqqqqqqqqqqqqqqqqqq Printer properties qqqqqqqqqqqqqqqqqqqqqk x x x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x xPrinter name: xfab x x xPrinter type: xSMB/Windows x x x xqqqqqqqqGeneral optionsqqqqqqqqqx x xMaximum file size: x0 x x xSupress headers: x[X] (usually yes) x x x xqqPrintertype-specific optionsqqx x xUser: xfmazzei x x xPassword: xfmazzei x x xHostname: xsecretaria x x xPrintername: xHP x x xHost IP (optional): x10.0.0.32 x x xWorkgroup: xgrp_WendelSecurity x x x xqqqqqqqqqFilter optionsqqqqqqqqqx x xFilter currently selected: xText-only printer x x xResolution: x(not available) vx x xPaper size: xletter vx x xColor depth: x(not available) vx x xPrinted pages: x1 vx x x x[ ] Send EOF x x x x[ ] Fix ladder effect (CR+LF) x x x x[X] Fast ASCII output x x xHorizontal margins: x18 x x xVertical margins: x18 x x xGS extra options: x x x x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj x x lqqqqqqk lqqqqqqqk lqqqk lqqqqqqqqqqqqqqqqk lqqqqk lqqqqk x x xAcceptx xDismissx xDelx xSelect filter...x xTestx xHelpx x x mqqqqqqj mqqqqqqqj mqqqj mqqqqqqqqqqqqqqqqj mqqqqj mqqqqj x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj Detalhe: É aconselhavel que o "Hostname" esteja setado no "/etc/hosts" O "Compartilhamento" é o nome que a impressora está compatilhada. O "Workgroup" é o nome do grupo de trabalho que a maquina que tem a impressora compartilhada pertence. Veja é ela foi definida em "Printer Type" como SMB/Windows. Caso não funcione de uma olhada em "/etc/printcap" remote é mais ou menos assim: ##PRINTTOOL3## SMB TEXT NAxNA letter {} TextPrinter Default {} fab:\ :if=/var/spool/lpd/fab/filter:\ :lp=/dev/null:\ :mx#0:\ :sd=/var/spool/lpd/fab:\ :sh: Deixando bem claro, que voce tem que definir o local de spool igual no "/etc/printcap" igual é definido no linuxconf. :-) Problemas Gerais: Caso mesmo assim voce tenha problemas de menssagens que sua impressora não suporta postscript. Então troque o seu filtro por esse: Arquivo de filtro: /var/spool/lpd/sua_printer/filter (cat - | (awk '{ printf ("%s\r\n",$0); }') ; echo -n -e "\f") Se com tudo isso voce ainda tiver problemas com a impressora não ejectar a folha, voce terá que enviar o sinal "^L" manualmente para impressora. Esse sinal que faz a paginar ejectar. Crie um arquivo com as seguintes linhas e depois set o bit de execução para ele. crie o arquivo "/usr/sbin/lp-eject" com o seguinte conteudo: lpr -P $1 $2 lpr -P $1 out Salve e saia, agora crie um arquivo chamado "/usr/sbin/out" e dentro dele ensira o "^L", note que ele não é apenas "ctrl+L" esse "^L" é um caracter só, que na tabela ASCII é representado por "alt012" que equivale a "^L". Insira no arquivo "out" o "alt012" no arquivo então. ficando assim: ^L Caso voce não consiga gerar o "alt012" existe um pronto em: "/usr/lib/linuxconf/printer/printertest.txt" então é so copiar e colar. Pronto, agora passe o bit de permissão "chmod +x /usr/sbin/lp-eject" "chmod 644 /usr/bin/out" Agora está tudo pronto, para imprimir faça: "lp-eject sua_printer /arquivo/a/ser/impresso" Exemplo real: "lp-eject Epson-3 /etc/hosts" Para verificar o status da(s) impressoras faça "lpstat -a" Observe o exemplo de como fica: WendelSecurity.int:/var/spool/lpd>lpstat -a ate1 accepting requests since 2001-04-11-11:27:27.581 fab accepting requests since 2001-04-11-11:27:27.618 lp accepting requests since 2001-04-11-11:27:27.652 lp1 accepting requests since 2001-04-11-11:27:27.661 WendelSecurity.int:/var/spool/lpd> Dica Para melhorar a portabilidade do samba com as impressoras. Altere o seu arqivo "smbprint" no meu caso ele fica em "smbprint is /usr/bin/smbprint" mais no seu linux pode estar em outro diretorio. :-) A ultima linha desse arquivo é a seguinte: cat | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I} \ $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup" \ -c "$command" 2>/dev/null Altere essa linha, pra que ela fique desse modo: ( cat - ; echo -e "\f\c" ) | /usr/bin/smbclient "$share" "$password" -E ${hostip:+-I} \ $hostip -N -P $usercmd "$user" $workgroupcmd "$workgroup" \ -c "$command" 2>/dev/null -==========--==============--=============-- Como mudar a "zona/fuso horario" do meu linux ?? Por exemplo de GMT para GMT+1 ?? r.: Simples, voce usa o aplicativo "timeconfig" e lá dentro altera a zona do seu linux. Lá voce pode seta-lo para GMT, qual sua zona. Vale lembrar que essas alterações tem mudanças significativas com a hora do sistema. Se houver alguma alteração na hora, é so acerta-la no linuxconf. -==========--==============--=============-- Como alterar a data/hora via comando e depios "salva-la" ?? r.: Se voce não quer usar o linuxconf, la vai: Use o "date mes-dia-hora-minuto-ano" sem os hifens "-" Suponha que deseje mudar para: abril, dia 3, meio dia, 20 minutos, de 2001 Ficaria assim o comando: WendelSecurity.int:/>date 040312202001 Tue Apr 3 12:20:00 GMT+2 2001 WendelSecurity.int:/> Depois para "grava-lo" pra não pegar o antigo quando rebootar a maquina, use o comando: "clock -w -u" Pronto. Feito. -==========--==============--=============-- Como habilitar para que o "telnetd" aceite conexoes como r00t ?? r.: Facil renomeie ou apague o arquivo "/etc/securetty" "rm -rf /etc/securetty" ou "mv /etc/securetty /etc/securetty-" -==========--==============--=============-- Como instalar o Conectiva Linux com ReiserFS ?? r.: Manualzinho basico, segue abaixo: Instalando linux com ReiserFS. =) Instalação Grafica ou Modo Texto não faz diferença. 1) Faça o Boot para instalação (com o CD-ROM) ou por diskete. Se voce for instalar pelos disketes de Boot, na capa do CD1 da conectiva ensina a criar o disco de inicialização pelo rawrite. :))) 2) Depos que bootar...ele vai detectar o hardware, voce escolherá qual Tipo de instalação será feita, se é Servidor, Servidor Completa, ... :) 3) Na hora de escolher qual o "tipo de instalação" a ser feita, marque as duas opções abaixo. (eu não me recordo se é exatamente assim que está escrito, mais a ideia é essa: [X] FORÇAR SELEÇÃO DE PACOTES. [X] FORÇAR PARTICIONAMENTO MANUAL. 4) Quando for particionar o HD na "aba" RAID não é necessario utilizar a menos que pretenda colocar espelhamento de hd ou raid por faixa de HD. Crie os File System(s) como ReiserFS todos. Exceto o de SWAP! (obvio) :P So pode ter 4 file systems como primario(s). Apartir desse numero pode-se criar extendidos. Defina em qual dos file systems (será inicializavel) e de preferencia (formatado), nesse devera ficar o sistema (o "/" normalmente). O ponto de montagem voce quem define... A instalação é igual em todos linux, só muda o tipo de sistema de arquivo que vai ser USADO. (reiserFS) :) MUITO IMPORTANTE DEFINIR UMA PARTIÇÃO QUE CAIBA SUFICIENTE O SISTEMA OPERACIONAL (partição inicalizavel) ... se for a instalação SERVIDOR completa... ela requer bastante espaço. Existem casos... que ele cria as partições e na hora de instalar ela é pequena, então ela sobre-poe arquivos no file system.. e na inicalização da pau.. Isso já aconteceu em uma das minhas primeiras instalações com ReiserFS. O tamanho da partição de inicialização é muito importante. :) Não seja miseravel com ela. hehehe :-) 5) Apos ter criado file systems (o de inicialização grande suficiente) e ter escolhido os pacotes a serem instalados, e instala-los. No fim da instalação, escolha o GRUB como gerenciar e não esqueça de marcar tambem o Master Boot Record (MBR). 6) Só isso...existem algums problemas... o instalador tem algums paus... mais se deus quiser não vai acontecer aí! hehehe :) Caso aconteça, no FTP da conectiva se eu não me engano já tem duas "atualizações" do instalador da conectiva. Pode baixa-lo e resolver seus problemas. 7) Na sua instalação servidor completa...ele "esquece" de algums programas muito utilizados como o telnet client, e outros...depois terá que instala-los na mão com os RPM da vida. :) -==========--==============--=============-- Como usar o Sendmail para enviar e-mail e o fetchmail para pegar e-mail(s) externos ? r.: O que eu descreverei abaixo eh muito conhecido, se voce ja eh um usuario experiente pule essa parte. Vale lembrar que esses servicos tem alguns bugs e podem ser usados para ganhar r00t access no sistema. Vou explicar rapidamente e dar exemplos praticos de como: * Pegar e-mail externos. * Repassar e-mails em sua rede interna. * Usar o sendmail para enviar e-mails e bloquear conexoes de outras maquinas para fazerem spam utilizando seu servidor de SMTP (sendmail). Da para fazer varias coisas, basta pensar... =) Instale os pacotes tar ou rpm do sendmail e fetchmail mais atuais possiveis (não irei abranger instalação) :-) Configurando: SENDMAIL (envia e-mail(s)) Apenas de vc instalar corretamente o sendmail, ele ja funciona. Mais implementaremos uma "regrazinha" Crie um o arquivo /etc/relay com a seguinte linha:10.0.0. no caso a minha rede, sem os ultimos 3 numeros do ip. Se a classe C da sua rede for por exemplo 192.168.0 entao eh esse numero que voce deve colocar no relay. Configurando o relay apenas pra sua classe de ip, voce impede que outras pessoas usem seu servidor para fazer SPAM. A não ser que ele use Hacking Tecnics... (spoofing, ...) Altere o arquivo sendmail.cf alterando ou inserindo a seguinte linha: "FR-O /etc/relay" Otimo, agora se ja estiver rodando o sendmail de um "kill -1 sendmail" que ele reiniciará o processo. Configurando FETCHMAIL ("recebe" e-mail(s)) Crie um usuario chamado correio. [security@wendel] groupadd correio [security@wendel] adduser correio -g correio [security@wendel] passwd correio Va ate o seu diretorio home do usuario e crie um arquivo chamado ".fetchmailrc" [security@wendel] cd $HOME [security@wendel] ls -la .fetchmailrc -rwx--x--- 1 correio correio 453 Apr 6 17:33 .fetchmailrc [security@wendel] Caso esse arquivo nao exista, crie-o!! :) Dentro deste arquivo estarao as contas de e-mail e senhas dos users, exemplo: poll pop.do.provedor protocol POP3 user seu_usuario with pass sua_senha to seu_usuario here Para cada conta de e-mail criada dentro do .fetchmailrc tem que se criar um usuario no sistema tambem com o mesmo nome! :) Comandos para executar o envio e recebimento dos e-mails! [security@wendel] /usr/sbin/sendmail -bd -q15 [security@wendel] /usr/bin/fetchmail -a Estou colocando algums exemplos reais adicionais: Exemplo do arquivo relay (no caso da minha rede): 10.0.0. Exemplo do arquivo .fetchmailrc: poll pop3.bol.com.br protocol POP3 user julios with pass julios1 to julios here poll pop.ig.com.br protocol POP3 user simao with pass tigrao to simao here Dica: Seria muito interessante voce trocar algumas permissões a nivel basico de segurança. O arquivo ".fetchmailrc" contem login/senha de e-mails, talvez sejam os mesmo de conexões com a internet. Então já viu, é melhor no minimo voce bloquear permissão de leitura nesse arquivo e no home do usuario "correio" não seria uma ideia ruim. :-) Como usuario "correio" execute os seguintes comandos: [security@wendel] chmod 700 /home/correio [security@wendel] chmod 700 /home/correio/.fetchmailrc Para gerar um log apenas do fetchmail faça o seguinte: Crie o arquivo /etc/logrotate.d/fetchmail com as permissões 700 e com o seguinte conteudo: /var/log/fetchmail.log { daily rotate 5 compress missingok } Restart a cron. :) -==========--==============--=============-- Como mudar a fonte no console "shell" (para ficar certinho o linuxconf) ?? r.: Facil use o "setfont". Se a sua fonte na "shell" estiver aparecendo meio bagunçado quando voce chama o "linuxconf", aparece tudo desenhado com "letras" (a,x,q,...) ao inves de "pipe-lines" ou "dutos" "|" voce pode tentar fazer o seguinte. Localize um arquivo chamado "devdvi" va no diretorio que ele se encontra e faça "setfont -m devdvi". Abra o linuxconf e veja se funcionou, caso isso não funcione, localize um arquivo "lat1u-16*" no meu caso ele se chama "lat1u-16.psf.gz". Então voce vai no diretorio que ele se encontra e utiliza mesmo comando. veja o exemplo: WendelSecurity.int:/usr/lib/kbd/consolefonts>setfont -m lat1u-16.psf.gz Warning: this is a shell wrapper; consider using consolechars(8) WendelSecurity.int:/usr/lib/kbd/consolefonts>pwd /usr/lib/kbd/consolefonts WendelSecurity.int:/usr/lib/kbd/consolefonts> Se voce tiver problemas tente outras fontes como lut1i-* :-) -==========--==============--=============-- Como eu removo o lilo da Master Boot Record ? r: Use o fdisk [root@lnx etc]# fdisk /mbr -==========--==============--=============-- Eu tenho um linux que não tem apt-get. Como atualiza-lo ?? r.: Se for "mandrake" o seu linux, voce pode do "windows manager" digitar "MandrakeUpdate" e ele chama uma especie de "apt-get" do Mandrake. Caso não abra localize esse arquivo e execute do diretorio que ele se econtra. Aqui fica no "/usr/lib/menu/MandrakeUpdate" :-) Caso sua distribuição seja outra, faça download de todos pacotes mais novos que voce tem e salve-os em um diretorio. Quando terminar o downoad va nesse diretorio e faça: "rpm -Fvh *" e ele devera instalar as versões mais recentes e resolver dependencias se possiveis. Obs.: Isso se seu linux for baseado em pacotes RPM -==========--==============--=============-- Tem como identificar qual processo está "utilizando" um arquivo ou socket ? r.: Podemos usar um "aplicativo" fantastico, chamado "fuser". Suponha que voce quer saber quem está rodando na 139/tcp. Então voce faz: "fuser -n tcp 139" Veja os resultados: WendelSecurity.int:/>fuser -n tcp 139 139/tcp: 832 1250 WendelSecurity.int:/>ps -ef |grep 832 root 832 1 0 08:30 ? 00:00:00 smbd -D root 1250 832 0 08:51 ? 00:00:00 smbd -D root 1562 1523 0 10:13 pts/2 00:00:00 grep 832 WendelSecurity.int:/> Se voce observar, percebera que ele te deu os numeros dos processos respectivos ao deamon do SAMBA que "utiliza porta 139/tcp" =) Uma opção boa de se usar é o "-v" ele exibe o numero do pid, quem está rodando o processo, qual comando está sendo rodado e o acesso. Observe: [root@lnx /root]# fuser -v 25/tcp USER PID ACCESS COMMAND 25/tcp root 671 f.... master root 5258 f.... smtpd [root@lnx /root]# fuser -v /w/pocos.dmp USER PID ACCESS COMMAND /w/pocos.dmp root 5955 f.... cp Vc tmb pode killar os processos que estao usando um arquivo da seguinte forma: [root@lnx /root]# fuser -k -i /bin/bash /bin/bash: 6049e 6239e Kill process 6049 ? (y/n) n Kill process 6239 ? (y/n) y A opção -k eh de kill e a opção -i eh para pedir confirmação de um por um. Caso nao exista a opção -a ele killa tudo sem peruntar! -==========--==============--=============-- Como mudar o terminal (variavel $TERM) ?? r.: Simples voce faz: "export TERM=valor". Eu considero a melhor configuração assim: Se for via telnet (remoto) defina a variavel como "vt100" então ficará: WendelSecurity.int:/>export TERM=vt100 WendelSecurity.int:/>echo $TERM vt100 WendelSecurity.int:/> Já se voce estiver localmente conectado no linux eu gosto de usar o valor "linux". Ficaria assim então: WendelSecurity.int:/>export TERM=linux WendelSecurity.int:/>echo $TERM linux WendelSecurity.int:/> -==========--==============--=============-- Quais os comandos basicos do Vi ?? r.: Eu descreverei alguns comandos basicos, que na maioria dos Unix/linux funcionam. Creio que não sera necessario o vim (vi IMproved). 1) Como editar um arquivo com o vi ?? Use "vi /caminho/nome do arquivo" ex.: WendelSecurity.int:/> vi /etc/smb.conf 2) Como sair sem salvar um arquivo ?? Use dentro do editor os comandos ":q" ou ":q!" Ex.: Voce quer sair do arquivo aberto sem salvar, apenas pressione a tecla "dois pontos" depois a letra "q", ou "dois pontos" depois a letra "q" depois o "ponto de exclamação "!". Ficando da seguinte forma: :q ou :q! Dependendo do vi, voce necessita dos pontos de exclamação. Caso voce esteja no modo "edição" ou "substituição", é necessario usar o "esc" antes. 3) Como sair e salvar um arquivo no vi ?? Use dentro do editor os comandos ":wq" ou ":wq!" Ex.: Voce quer sair do arquivo aberto e salvar, apenas pressione a tecla "dois pontos" depois as letras "wq", ou "dois pontos" depois as letra "wq" depois o "ponto de exclamação "!". Ficando da seguinte forma: :wq ou :wq! Dependendo do vi, voce necessita dos pontos de exclamação. Caso voce esteja no modo "edição" ou "substituição", é necessario usar o "esc" antes. 4) Como editar um arquivo no vi ?? Use dentro do editor os comandos "shift+i" Ex.: Voce presciona a tecla "shift" e segura apertada logo em seguida aperta a letra "i" depois solta as duas. :-) Obs.: A letra "i" é de insert. 5) Como substituir letras e palavras no vi ? Use dentro do editor os comandos "shift+r" Ex.: Voce presciona a tecla "shift" e segura apertada logo em seguida aperta a letra "r" depois solta as duas. :-) Obs.: A letra "r" é de replace. 6) Como enumerar todas as linhas de um documento no vi ?? Voce pode usar os seguintes comandos: ":set number" ou ":se nu" ":se nu" é a forma abreviada de ":set number" =) Mas voce pode usar tambem: ":set ruler" <=(movimente o cursor pelo arquivo ...) 7) como "copiar" uma linha, palavra ou varias linhas de uma vez e "colar" em outro pedaço do texto ?? Existem inumeras formas de fazer isto. Uma delas é o Yank. O que está entre "aspas" no texto são os comandos que voce deve digitar no vi. "[n]Y" => copia [n] linhas a partir da corrente (a que está o cursor) para o buffer. Se o número [n] for omitido apenas a linha corrente será copiada. Pode-se usar yy no lugar de Y. "p" => cola o conteúdo do buffer abaixo da linha corrente "P" => cola o conteúdo do buffer acima da linha corrente Existem outros recursos legais, como: "y^" => copia o texto da posição do cursor até o começo da linha "y$" => copia o texto da posição do cursor até o final da linha "yw" => copia o texto da posição do cursor até o final da palavra 8) Como "saltar" de cima para baixo rapidamente em documentos do vi ?? Use os parenteses. "[" e "]" Ex.: Se voce digitar duas vezes a tecla (parenteses aberto) "]" voce irá descer no texto. Se voce digitar duas vezes a tecla (parenteses fechado) "[" voce irá subir no texto. 9) Como procurar uma palavra dentro de um texto aberto no vi ?? Use ":/palavra_a_ser_procurada Ex.: Se voce quer achar a palavra "security" voce faz o seguinte: ":/security" Obvio que voce tem que bater "enter" quando acabar de digitar a palavra a ser procurada. 10) Como remover uma linha inteira da tela ?? Ow varias linhas ?? Para remover apenas a linha corrente prescione "dd". Para remover varias linhas prescione "ydd", onde y eh o numero de linhas. 11) Regras que valem para qualquer comando: * Caso voce esteja no modo "edição" ou "substituição", é necessario usar o "esc" antes dos comandos ensinados acima. * O que está entre "aspas" no texto são os comandos que voce deve digitar no vi. -==========--==============--=============-- Como configurar o postfix para que ele não aceite SPAMs? Usando RBL. r.: Simples. Primeiro RBL são Realtime Blackhole List. Para implementa-las voce adcionará essas duas linhas no seu arquivo "main.cf" do postfix: #maps_rbl_domains é quais os endereçõs das listas que nos usaremos. #smtpd_client_restrictions é o bloqueio por "usuario", para checar a rbl. maps_rbl_domains = blackholes.mail-abuse.org dialups.mail-abuse.org relays.mail-abuse.org smtpd_client_restrictions = reject_maps_rbl #Essas duas linhas abaixo são opcionais. #Elas irão "desabilitar" user!host e user%host. allow_percent_hack = no swap_bangpath = no Obs.: Por default o postfix já vem bloquenado relays externos. -==========--==============--=============-- Como posso listar servidor de DNS, sub-maquinas de dominio, ... , de um dominio ?? r.: Tente usar o "host". Olhe o exemplo abaixo: [root@lnx /root]# host -l creative.com creative.com name server ns2.creaf.com creative.com name server ns1.creaf.com creative.com has address 64.41.230.253 cltw.creative.com name server ns.ctlsg.creaf.com atc.creative.com name server wind.sei.com atc.creative.com name server seidc.sei.com modemblaster.creative.com has address 64.41.230.253 www.modemblaster.creative.com has address 64.41.230.253 buzz.creative.com name server ns.ctlsg.creaf.com eoracle1.creative.com has address 64.41.228.154 ... varias maquinas .... varias maquinas ..... Varias maquinas opensource.creative.com has address 216.61.164.15 www.opensource.creative.com has address 216.61.164.15 search.creative.com has address 64.41.230.23 ma.creative.com has address 198.95.32.4 asia.creative.com has address 64.41.230.253 download.asia.creative.com has address 203.126.77.244 www.asia.creative.com has address 64.41.230.253 register.creative.com has address 64.41.230.253 act.creative.com name server wind.sei.com act.creative.com name server seidc.sei.com ctnews.creative.com has address 64.41.230.251 3dblaster.creative.com has address 64.41.230.253 www.3dblaster.creative.com has address 64.41.230.253 testpartner.creative.com has address 198.95.59.150 list.creative.com has address 203.126.77.247 [root@lnx /root]# -==========--==============--=============-- Dicas de como "dificultar" o accesso indevido do usuario. :-) Primeiro caso. Suponha que vc quer se seu usuario joao, quando se logar no linux ja entre diretamente no seu sistema. E caso ele tente sair com esc,^c, ^k , ... , ele não permite. Caso o joao saia do sistema, ele fechara a shell junto!! :-) 1º crei o grupo pro usuario. 2º crie o usuario e defina o grupo que vc criou. 3º va no "home" do usuario que vc criou, nesse caso "/home/joao/" e delete o arquivo ".bash_profile" 4º Crie um arquivo no "home" do usuario chamado ".profile". Dentro desse arquivo ".profile" insira as seguites linhas. ---------Cut Here--------- /usr/bin/clear TERM=vt100 trap 1 2 3 vi exit 1 2 3 exit ---------Cut Here--------- Explicando as linhas do profile. clear -> limpa a tela. TERM=vt100 -> definindo o terminal para vt100 trap 1 2 3 -> Inicializa o trap. vi -> Programa que executaremos, programa cujo usuario não deve sair. exit 1 2 3 -> Usado para finalizar o "trap 1 2 3" exit -> finalizando. O trap nesse caso foi "usado com as opções: 1) SIGHUP, 2) SIGINT e 3) SIGQUIT. Para listar as opções: WendelSecurity:/home/test>trap -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 32) SIGRTMIN 33) SIGRTMIN+1 34) SIGRTMIN+2 35) SIGRTMIN+3 36) SIGRTMIN+4 37) SIGRTMIN+5 38) SIGRTMIN+6 39) SIGRTMIN+7 40) SIGRTMIN+8 41) SIGRTMIN+9 42) SIGRTMIN+10 43) SIGRTMIN+11 44) SIGRTMIN+12 45) SIGRTMIN+13 46) SIGRTMIN+14 47) SIGRTMIN+15 48) SIGRTMAX-15 49) SIGRTMAX-14 50) SIGRTMAX-13 51) SIGRTMAX-12 52) SIGRTMAX-11 53) SIGRTMAX-10 54) SIGRTMAX-9 55) SIGRTMAX-8 56) SIGRTMAX-7 57) SIGRTMAX-6 58) SIGRTMAX-5 59) SIGRTMAX-4 60) SIGRTMAX-3 61) SIGRTMAX-2 62) SIGRTMAX-1 63) SIGRTMAX Ler o man do trap tmb seria muito interessante. :-) Obs.: Essa tecnica do trap funciona muito bem no AIX tmb. Segundo Caso. Suponha que vc quer setar atributos especiais para arquivos. Por exemplo: imutavel, comprimido, atualização sincrona, ... , =) Para isso usaremos o "chattr". No chattr vc usa: + para adicionar um attributo ao arquivo. - para retirar um attributo ao arquivo. = para deixar o arquivo apenas com esse attributo. Por exemplo para deixar um arquivo imutavel vc faz: [root@lnx /root]# chattr =i /etc/shadow Imutavel, quer dizer que o arquivo nao pode ser mutado. "Alterado" Porem ele pode ser copiados, entre outras coisas! :)) A opção -V é de verbose, para mostrar mais informações. A opção -R é de recursive, para passar o attributos recursivamente. Obs.: O chattr funciona com ext2. Com ReiserFS nao funciona. Para maiores informações "man chattr" Para listar os atributos de um arquivo/diretorio, use o "lsattr" Com a opção "-a" vc lista todos arquivos do diretorio atual. Ex.: "lsattr -a" Mais infos "man lsattr" Dicas: Outros boms programas para se ler os tutoriais seriam o chroot e o sudo. -==========--==============--=============-- Existe algum Debugador no Linux ?? r.: Sim, existem varios. O que eu estou acostumado a usar é o gdb =)) Veja os exemplos, eles falam por si proprio! [root@lnx /root]# cat a.c #include int main() { printf("\nTeste\n"); } [root@lnx /root]# [root@lnx /root]# gcc -o exemplo a.c [root@lnx /root]# ./exemplo Teste [root@lnx /root]# [root@lnx /root]# gdb exemplo GNU gdb 5.0 Copyright 2000 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i586-mandrake-linux"... (gdb) disassemble main Dump of assembler code for function main: 0x80483e4
: push %ebp 0x80483e5 : mov %esp,%ebp 0x80483e7 : sub $0x8,%esp 0x80483ea : add $0xfffffff4,%esp 0x80483ed : push $0x8048458 0x80483f2 : call 0x804830c 0x80483f7 : add $0x10,%esp 0x80483fa : mov %ebp,%esp 0x80483fc : pop %ebp 0x80483fd : ret 0x80483fe : nop 0x80483ff : nop End of assembler dump. (gdb) quit [root@lnx /root]# -==========--==============--=============-- Como acessar Windows9x/ME atraves do smbclient ?? r.: Esse é um problema comun!! :-)) Nao é necessario, (e eu tmb nao gosto) de colocar os respectivos ips/maquinas no /etc/hosts. Para poder acessar defina "-I ip_da_maquina" no final do smbclient. E acesse usando "//nome_de_netbios_Da_maquina" Ex.: // Listando Comaprtilhamentos. [root@coopadap /root]# smbclient -L //angela -I 201.201.1.99 Password: Sharename Type Comment --------- ---- ------- C Disk IPC$ IPC Comunicao remota entre processos Server Comment --------- ------- Workgroup Master --------- ------- [root@coopadap /root]# // Acessando o compartilhamento C [root@coopadap /root]# smbclient //angela/c -I 201.201.1.99 Password: smb:> -==========--==============--=============-- O que é esse UUCP que tem no /etc/inetd.conf ?? r.: Unix to UNIX CoPy ;) Ele é um serviço, como qualquer outro. (rlogin, telnet, ftp,..,) -==========--==============--=============-- Como pegar informaçoes de um usuario local ?? r.: [root@lnx /root]# finger wendel Login: wendel Name: (Wendel Guglielmetti Henrique) Directory: /home/wendel Shell: /bin/ksh On since Thu May 24 07:25 (AMT) on pts/1 from nt_WendelSecurity 1 minute 6 seconds idle Mail last read Thu May 24 09:13 2001 (AMT) No Plan. You have new mail in /var/spool/mail/root [root@lnx /root]# -==========--==============--=============-- Como pegar as informações de versão/criador/etc/ de um rpm ? r.: rpm -qdi pacote.rpm ou rpm -qi pacote.rpm [root@lnx bin]# rpm -qi telnet Name : telnet Relocations: /usr Version : 0.17 Vendor: MandrakeSoft Release : 5mdk Build Date: Tue 03 Oct 2000 01:56:12 AM AMT Install date: Fri 12 Jan 2001 09:22:00 AM AMT Build Host: rebuild.mandrakesoft.com Group : Networking/Remote access Source RPM: telnet-0.17-5mdk.src.rpm Size : 89734 License: BSD Packager : Linux-Mandrake Team Summary : Client for the telnet remote login protocol. Description : Telnet is a popular protocol for logging into remote systems over the Internet. The telnet package provides a command line telnet client. Install the telnet package if you want to telnet to remote machines. [root@lnx bin]# -==========--==============--=============-- No Kernel 2.4.X o Ip-Masq mudou! Nao consigo carregar meus modulos velhos nem usar o ipchains!! Como posso substirui-los ?? r.: O ipchains foi substituida pelo iptables. :o) E os modulos, podemos dizer que eles foram atualizados. :) Abaixo disponibilizarei uma lista completa de regras do iptrables e de modulos. #!/bin/sh #*********** Carregando módulos do Kernel 2.4.x ************* /sbin/depmod -a /sbin/modprobe ipt_MARK /sbin/modprobe ipt_limit /sbin/modprobe ipt_tos /sbin/modprobe ipt_mac /sbin/modprobe ipt_MIRROR /sbin/modprobe ipt_unclean /sbin/modprobe ipt_mark /sbin/modprobe ip_queue /sbin/modprobe ipt_multiport /sbin/modprobe iptable_mangle /sbin/modprobe ipt_TCPMSS /sbin/modprobe ipt_LOG /sbin/modprobe ipt_TOS /sbin/modprobe ipt_tcpmss /sbin/modprobe iptable_mangle /sbin/modprobe ip_tables /sbin/modprobe iptable_filter /sbin/modprobe iptable_nat /sbin/modprobe ip_conntrack /sbin/modprobe ip_conntrack_ftp /sbin/modprobe ipt_state /sbin/modprobe ipt_owner /sbin/modprobe ipt_REDIRECT /sbin/modprobe ip_nat_ftp /sbin/modprobe ip_gre /sbin/modprobe ipip #************************************************************ #Implementação de políticas iptables -P FORWARD ACCEPT iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j REJECT iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE #iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT # Liberando roteamento echo 1 > /proc/sys/net/ipv4/ip_forward Vou disponibilizar (BONUS) um script em perl tmb! ******** Script ************* #! /usr/bin/perl # Teste de Firewall para versão 2.4 do Kernel 27/05/2001 #*********** Carregando módulos do Kernel 2.4.x ************* #system("/sbin/depmod -a"); #system("/sbin/modprobe ipchains"); system("/sbin/modprobe ipt_MARK"); system("/sbin/modprobe ipt_limit"); system("/sbin/modprobe ipt_tos"); system("/sbin/modprobe ipt_mac"); system("/sbin/modprobe ipt_unclean"); system("/sbin/modprobe ipt_MIRROR"); system("/sbin/modprobe ipt_mark"); system("/sbin/modprobe ip_queue"); system("/sbin/modprobe ipt_multiport"); system("/sbin/modprobe iptable_mangle"); system("/sbin/modprobe ipt_REJECT"); system("/sbin/modprobe ipt_TCPMSS"); system("/sbin/modprobe ipt_LOG"); system("/sbin/modprobe ipt_TOS"); system("/sbin/modprobe ipt_tcpmss"); system("/sbin/modprobe iptable_mangle"); system("/sbin/modprobe ip_tables"); system("/sbin/modprobe iptable_filter"); system("/sbin/modprobe iptable_nat"); system("/sbin/modprobe ip_conntrack"); system("/sbin/modprobe ip_conntrack_ftp"); system("/sbin/modprobe ipt_state"); system("/sbin/modprobe ipt_MASQUERADE"); system("/sbin/modprobe ipt_owner"); system("/sbin/modprobe ipt_REDIRECT"); system("/sbin/modprobe ip_nat_ftp"); system("/sbin/modprobe ip_gre"); system("/sbin/modprobe ipip"); #************************************************************ # Liberando roteamento system("echo 1 > /proc/sys/net/ipv4/ip_forward"); #Implementação de políticas system("echo 'Implementando políticas de firewall'"); system("iptables -F"); system("iptables -P INPUT ACCEPT"); system("iptables -P OUTPUT ACCEPT"); system("iptables -P FORWARD ACCEPT"); #Implementação regras para NAT system("echo 'Implementando regras para NAT'"); #Comuns# system("iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE"); system("iptables -A FORWARD -s 192.168.1.0/24 ACCEPT"); system("iptables -A FORWARD -d 192.168.1.0/24 -mstate --state ESTABLISHED,RELATED -j ACCEPT"); #system("iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE"); system("echo 'Firewall inicializado com sucesso'"); -==========--==============--=============-- Como eu faço para pegar man das funçoes de C ?? r.: Em gerla vc usa man 3 função. Se vc por exemplo fizer man sleep vc caira no man do sleep para shell script, ja se vc fizer man 3 sleep vc caira no Linux Programmer's Manual. Quando vc chama o man, repare que as vezes ele te indica outro man no fim do arquivo. Observe: kill(1), kill(2), killpg(2), pause(2), raise(3), sigac­ tion(2), signal(7), sigsetops(3), sigvec(2), alarm(2) Esses numeros entre parenteses (), sao os numeros que vc deve chamar no man. Exemplo: [root@lnx c]# man 3 sleep [root@lnx c]# man 1 kill [root@lnx c]# man 3 reise -==========--==============--=============-- Como adicionar um caminho no PATH ?? r.: Vc edita o arquivo "/home_do_usuario/.bashrc" e insere o PATH novo na seguinte linha: "PATH=/Caminho1:caminho2". Para ver como estao PATH, faça: [root@lnx nessus]# echo $PATH /sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin: /usr/local/bin [root@lnx nessus]# -==========--==============--=============-- Como se passa um valor para uma variavel de ambiente ?? r.: Observe os exemplos: [root@lnx nessus]# WENDEL=verde [root@lnx nessus]# echo $WENDEL verde [root@lnx nessus]# Voce pode fazer tmb: [root@lnx nessus]# export WENDEL Desse modo ele exportara a variavel para outros terminais. -==========--==============--=============-- Como eu adiciono um diretorio de bibliotecas para serem usados por outros programas como se estivessem no PATH ?? r.: Vc pode usar o ldconfig. :) O ldconfig "compartilha" as bibliotecas necessaria que foram idicadas a ele, para os programas que as requisitam. Adicionando o "/usr/local/lib" para o ldconfig "gerenciar". Adicione a linha "/usr/local/lib" no fim do arquivo "/etc/ld.so.conf" salve o arquivo e feche-o. Depois rode o ldconfig. No meu caso: [root@lnx nessus]# /sbin/ldconfig [root@lnx nessus]# -==========--==============--=============-- Como listar todos os arquivos que um pacote instala no sistema ?? r.: Vc pode listar todos aquivos e caminhos desses arquivos com o seguinte comando: rpm -ql pacote Exemplo pratico: [root@lnx nessus]# rpm -ql mkbootdisk /sbin/mkbootdisk /usr/share/man/man8/mkbootdisk.8.gz /usr/share/man/pt_BR/man8/mkbootdisk.8.gz [root@lnx nessus]# -==========--==============--=============-- Existe Servidor de ICQ pra rede interna for Linux ?? R.: Sim, o nome dele eh "gicqd". Official Site: http://www.ideacode.com/gicqd/ -==========--==============--=============-- Como eu "desenpacoto" um arquivo .bz2 ?? R.: Use o comando bunzip2 nome_do_arquivo Ex.: [root@lnx nessus]# bunzip2 gicqd-0.0.94b.bz2 -==========--==============--=============-- Como eu empacoto arquivos de 1.44 com o tar (para q eles caibam no diskete) ? r.: Use da seguinte forma: "tar -Mcvf /dev/fd0H1440 /dir/para/compactar/*" E tenha certeza que o diskete está no drive e desprotegido contra gravação. Ex.: [root@lnx pub]# tar -Mcvf /dev/fd0H1440 /var/ftp/pub tar: Removing leading `/' from member names var/ftp/pub/ var/ftp/pub/dsn/ var/ftp/pub/dsn/dsniff.services var/ftp/pub/dsn/dsniff var/ftp/pub/key/ var/ftp/pub/key/pwr.exe var/ftp/pub/key/needed/ var/ftp/pub/key/needed/msvbvm60.dll Prepare volume #2 for `/dev/fd0H1440' and hit return: var/ftp/pub/key/needed/MSWINSCK.OCX var/ftp/pub/key/DNServer.exe var/ftp/pub/temp/ var/ftp/pub/temp/cr4.exe var/ftp/pub/setupavxpro.exe Prepare volume #3 for `/dev/fd0H1440' and hit return: var/ftp/pub/xp.exe var/ftp/pub/DNServer.exe [root@lnx pub]# -==========--==============--=============-- Existe algums Scanner para Servidores de E-mail que verifica por possiveis virus em e-mails recebidos ??? r.: Sim, um muito bom free eh o ScanMail que funciona sobre varias plataformas (como LInux e Unix-Like). Roda sobre postfix, sendmail, ... E pode ser encontrado em: http://www.flounder.net/~mrsam/maildrop/ -==========--==============--=============-- Como eu protego meu postifix contra a verificação de usuarios existentes, atraves do SMTP usando o comando "RCPT TO:" ?? R.: Simple, vc comenta a seguinte linha no seu main.cf #local_recipient_maps = $alias_maps unix:passwd.byname Desse modo vc estara desabilitando a opção de notificar Rejeição de usuarios locais desconhecidos. -==========--==============--=============-- E no sendmail como bloquear ?? E como bloquear os comandos EXPN e VRFY ?? r.: No arquivo '/etc/sendmail.cf' acrescente o parametro para a macro "O": 1) Desabilitar o comando VRFY: // Nao vem como default, no meu linux! "O PrivacyOptions=novrfy" 2) Desabilitar o comando EXPN: // Nao vem como default, no meu linux! "O PrivacyOptions=noexpn" 3) Desabilitando ambos: // No meu linux essa eh default. "Aconselhada" "O PrivacyOptions=goaway" 4) Para o comando RCPT, sugerimos que modifiquem ou abilitem as macros: "O MaxDaemonChildren=NN" // Nao vem como default, no meu linux! "O MaxRecipientsPerMessage=NN" // Nao vem como default, no meu linux! "O MaxQueueRunSize=NN" // Nao vem como default, no meu linux! -==========--==============--=============-- Como definir em quanto tempo os usuarios serao forçados a mudar sua senha e tamanho minimo para senhas ?? r.: No arquivo /etc/login.defs -==========--==============--=============-- Como saber o quais Deamon's eu tenho rodando ?? R.: Bom, existem varias maneiras... descreverei a que gosto mais aqui! :) Para se verificar quais daemons se tem rodando usa-se: [root@lnx /root]# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 *:webcache *:* LISTEN tcp 0 0 *:www *:* LISTEN tcp 0 0 *:8200 *:* LISTEN tcp 0 0 *:pop3 *:* LISTEN tcp 0 0 *:smtp *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 *:ftp *:* LISTEN udp 0 0 *:1024 *:* udp 0 0 *:3401 *:* udp 0 0 *:icp *:* raw 0 0 *:icmp *:* 7 raw 0 0 *:tcp *:* 7 Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 0 [ ACC ] STREAM LISTENING 867 /tmp/.font-unix/fs-1 unix 0 [ ACC ] STREAM LISTENING 624 private/rewrite unix 0 [ ACC ] STREAM LISTENING 628 private/bounce unix 0 [ ACC ] STREAM LISTENING 632 private/defer unix 0 [ ACC ] STREAM LISTENING 636 private/smtp unix 0 [ ACC ] STREAM LISTENING 640 public/showq unix 0 [ ACC ] STREAM LISTENING 617 private/cleanup unix 0 [ ACC ] STREAM LISTENING 644 private/error unix 0 [ ACC ] STREAM LISTENING 648 private/local unix 0 [ ACC ] STREAM LISTENING 652 private/cyrus unix 0 [ ACC ] STREAM LISTENING 656 private/uucp unix 0 [ ACC ] STREAM LISTENING 660 private/ifmail unix 0 [ ACC ] STREAM LISTENING 664 private/bsmtp [root@lnx /root]# Vc pode ainda ver qual programa esta usando tal porta, para isso faremos: [root@lnx /root]# netstat -l -p (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 *:webcache *:* LISTEN 815/(squid) tcp 0 0 *:www *:* LISTEN 770/httpd tcp 0 0 *:8200 *:* LISTEN 629/httpd-perl tcp 0 0 *:pop3 *:* LISTEN 612/cucipop tcp 0 0 *:smtp *:* LISTEN 597/master tcp 0 0 *:ssh *:* LISTEN 542/sshd tcp 0 0 *:ftp *:* LISTEN 534/inetd udp 0 0 *:1024 *:* 815/(squid) udp 0 0 *:3401 *:* 815/(squid) udp 0 0 *:icp *:* 815/(squid) raw 0 0 *:icmp *:* 7 - raw 0 0 *:tcp *:* 7 - Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name P ath unix 0 [ ACC ] STREAM LISTENING 867 828/xfs / tmp/.font-unix/fs-1 unix 0 [ ACC ] STREAM LISTENING 624 597/master p rivate/rewrite unix 0 [ ACC ] STREAM LISTENING 628 597/master p rivate/bounce unix 0 [ ACC ] STREAM LISTENING 632 597/master p rivate/defer unix 0 [ ACC ] STREAM LISTENING 636 597/master p rivate/smtp unix 0 [ ACC ] STREAM LISTENING 640 597/master p ublic/showq unix 0 [ ACC ] STREAM LISTENING 617 597/master p rivate/cleanup unix 0 [ ACC ] STREAM LISTENING 644 597/master p rivate/error unix 0 [ ACC ] STREAM LISTENING 648 597/master p rivate/local unix 0 [ ACC ] STREAM LISTENING 652 597/master p rivate/cyrus unix 0 [ ACC ] STREAM LISTENING 656 597/master p rivate/uucp unix 0 [ ACC ] STREAM LISTENING 660 597/master p rivate/ifmail unix 0 [ ACC ] STREAM LISTENING 664 597/master p rivate/bsmtp [root@lnx /root]# No caso se vc quisesse mais informações sobre o HTTPD " tcp 0 0 *:www *:* LISTEN 770/httpd" vc pode dar um ps para obter mais informações. [root@lnx /root]# ps -auxww |grep 770 root 770 0.0 3.5 38244 2232 ? S 08:42 0:00 httpd -DHAVE_PHP4 -DHAVE_PROXY -DHAVE_ACCESS -DHAVE_ACTIONS -DHAVE_ALIAS -DHAVE_ASIS -DHAVE_AUTH -DHAVE_AUTH_ANON -DHAVE_AUTH_DB -DHAVE_AUTH_DIGEST -DHAVE_AUTH_LDAP -DHAVE_AUTOINDEX -DHAVE_CERN_META -DHAVE_CGI -DHAVE_DEFINE -DHAVE_DIGEST -DHAVE_DIR -DHAVE_ENV -DHAVE_EXAMPLE -DHAVE_EXPIRES -DHAVE_FRONTPAGE -DHAVE_HEADERS -DHAVE_IMAP -DHAVE_INCLUDE -DHAVE_INCLUDE_XSSI -DHAVE_INFO -DHAVE_LOG_AGENT -DHAVE_LOG_CONFIG -DHAVE_LOG_CONFIG_BUFFERED -DHAVE_LOG_REFERER -DHAVE_MIME -DHAVE_MIME_MAGIC -DHAVE_MMAP_STATIC -DHAVE_NEGOTIATION -DHAVE_REWRITE -DHAVE_SETENVIF -DHAVE_SPELING -DHAVE_STATUS -DHAVE_UNIQUE_ID -DHAVE_USERDIR -DHAVE_USERTRACK -DHAVE_VHOST_ALIAS -DPERLPROXIED [root@lnx /root]# Dica1: O comando "netstat -l -v -p" nao exibe nomes apenas portas. Dica2: Somente o comando "netstat" mostra todas as conexões ativas no momento. Dica3: Use o "fuser" para maiores informações. Dica4: Tenha sempre certeza que o netstat que vc esta usando eh "autentico". -==========--==============--=============-- Como eu faço para verificar dependencias com atualizaçoes feitas pelo apt-get ? r.: Usa se o comando: [root@lnx /root]# apt-get check Reading Package Lists... Done Building Dependency Tree... Done [root@lnx /root]# -==========--==============--=============-- Meu apt-get esta dando um erro de "sub-processo" do RPM quando eu tento atualizar o sistema ? Eh possivel que vc consiga resolver com os seguintes comnaodos: [root@lnx /root]# apt-get check Reading Package Lists... Done Building Dependency Tree... Done [root@lnx /root]# dist-upgrade Reading Package Lists... Done Building Dependency Tree... Done Calculating Upgrade... Done The following packages have been kept back apt rpm 0 packages upgraded, 0 newly installed, 0 to remove and 2 not upgraded. [root@lnx /root]# -==========--==============--=============-- Como eu "limpo" os arquivos baixados pelo apt-get ?? Usa se o comando: [root@lnx /root]# apt-get clean E para "limpar" arquivos antigos que o apt-get baixou faça: [root@lnx /root]# apt-get autoclean -==========--==============--=============-- Existem algum utilitario para se setar atributos a arquivos do DOS ?? R.: Sim, ele se chama "mattrib". Para maiores informações: [root@lnx /root]# man mattrib -==========--==============--=============-- Como eu faço para localizar todos arquivos do / que tenham a palavra wendel dentro dele ?? R.: Podemos usar o grep, de duas formas. Na primeira nos localizaremos todos arquivos do /var/log/httpd/ que tenham NNNNN (code red). [root@lnx /root]# grep -rl NNNN /var/log/httpd/ /var/log/httpd/access_log.1 /var/log/httpd/access_log /var/log/httpd/error_log [root@lnx /root]# Agora nos listaremos todos arquivos do /var/log/httpd/ que contenham NNNN (code red) porem dessa vez mostrando o conteudo. [root@lnx /root]# grep -inr NNNN /var/log/httpd/ /var/log/httpd/access_log.1:3293:194.84.17.150 - - [19/Jul/2001:12:56:29 -0400 ] "GET /default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u 7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1 .0" 400 252 "-" "-" /var/log/httpd/access_log.1:3294:212.37.212.73 - - [19/Jul/2001:13:04:46 -0400 ] "GET /default.ida?NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNN%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090%u6858%ucbd3%u 7801%u9090%u9090%u8190%u00c3%u0003%u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1 .0" 400 252 "-" "-" ..... .... varias linhas ..... varias linhas ... varias linhas [root@lnx /root]# -==========--==============--=============-- Como criar um Shell Restrito para usuarios no Linux ?? R.: Existem varias opções. Dentre elas irei explicar o "Restriction Bash". O "rbash" pode restringir varias opções do bash _comun_ como: Trocar de diretorios usando o comando cd Unset ou trocar valores das variaveis: SHELL, PATH, ENV, or BASH_ENV Não permitir execução que contenha / ou ./ Permite execução apenas de programas que estejam no seu $PATH Nao permite redirecionamentos a arquivos Entre outros, para maiores informações "man bash" Criando grupo, usuario e setando uma senha: [root@lnx /root]# groupadd wendel [root@lnx /root]# adduser -g wendel -G wendel [root@lnx /root]# passwd wendel Agora que ja temos um usuario criado, vamos mudar seu shell para restrito. [root@lnx /root]# ln /bin/bash /usr/bin/rbash O mesmo bash do /bin com o nome de rbash no diretorio /usr/bin/ eh o bash restrito. Agora acresentamos no /etc/passwd o /usr/bin/rbash ou /bin/bash -r no shell do usuario wendel. Ficando da seguinte forma: [root@lnx /root]# cat /etc/passwd |grep wendel wendel:x:513:514::/WS/wendel:/usr/bin/rbash [root@lnx /root]# Mas poderia ser tmb: [root@lnx /root]# cat /etc/passwd |grep wendel2 wendel2:x:513:514::/WS/wendel:/usr/bin/bash -r Apenas ter definido o shell como restrito nao basta. Alguns tunning sao extremamente importantes para a segurança. 1) Deixar o .bash_profile do usuario com o PATH=$HOME/bin Se for necessario algum outro comando a ser executado pode se acresentar no $PATH. Por exemplo para o ORACLE 8i: export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/lib:$HOME/bin Nao deixe no $PATH diretorio onde contenham executaveis "perigosos" como o "/bin, /usr/bin, /usr/sbin, .... " Retire do .bash_profile a linha: BASH_ENV=$HOME/.bashrc 2) Caso o usuario por algum problema nao esteja caindo no seu $HOME, e sim no barra "/". Force o mesmo a cair no seu $HOME da seguinte forma: [root@lnx /root]# echo cd $HOME >> /home/do/wendel/.bash_profile 3) Configurando permissoes e setando atributos para o usuario nao alterar o seu .bash_profile [root@lnx /root]# chown root.root /home/do/wendel/.bash_profile [root@lnx /root]# chmod 755 /home/do/wendel/.bash_profile [root@lnx /root]# chattr =i /home/do/wendel/.bash_profile 4) Agora crie um diretorio no $HOME do usuario chamado bin os comandos que ele podera executar devem estar dentro desse diretorio. [root@lnx /root]# mkdir /home/do/wendel/bin Copie ou crie links para os arquivos que o usuario podera executar como: .......:::: Exemplos ::::....... [root@lnx /root]# ln /bin/cat /home/do/wendel/bin/ [root@lnx /root]# ln /bin/ls /home/do/wendel/bin/ Deve se ter muito cuidado na definição dos comandos permitidos. Um exemplo bem restrito e util eh: cat clear date grep bunzip gzip ls more pwd tar whoami Logico que isso depende muito do que vc necessita fazer. Alguns desses como "cp/echo/rm/vi/" podem ser usados para tentar burlar o shell restrito. .......:::: Exemplos ::::....... [root@lnx /root]# chown root.root /home/do/wendel/bin [root@lnx /root]# chmod 755 /home/do/wendel/bin [root@lnx /root]# chattr -R =i /home/do/wendel/bin Vale lembrar que atualmente sistemas que usam Reiser File System nao tem chattr para ReiserFS (apenas para ext2 atualmente.) Eh necessario se baixar um pacote chamado reiserfsprogs para obter o chattr para Reiser File System Isso tmb nao garante que o seu Shell Restrito fique 100% seguro. Apenas aumenta um pouco a segurança. -==========--==============--=============-- Eh possivel burlar o Shell Restrito ?? r.: Eu fuçando descobri algumas maneiras. Que so funcionam com configurações inadequadas (em alguns casos default). =] No Restricted Shell que eu ensinei a fazer, provavelmente nao funcionara. 1) Varios linux (quase todos) quando vc cria um usuario ele ja adiciona no PATH do usuario diretorios como o "/bin/, /usr/bin/ e outros". Isso permite que eu execute qualquer comando desses diretorios. Assim quebrando a regra que eu so poderia executar arquivos do meu diretorio $HOME/bin ;) Entao se o $PATH estiver mal setado posso fazer qualquer coisa como se a shell restrita nao existisse. Executando por exemplo o bash denovo e perdento totalemnte os vinculos com o Shell Restrito. hehehe =] 2) Se o .bash_profile permitir que eu escreva nele eu posso simplesmente adicionar as seguintes linhas no final do arquivo: /bin/bash export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin E pronto eu estou denovo sem restrições do Shell Restrito. 3) Se o diretorio $HOME/bin estiver com direito a escrita. Eu posso Simplesmente editar um executavel qualquer que existir. O $HOME/bin/cat por exemplo eu apagaria todo conteudo do arquivo e ao inves escreveria /bin/bash entao quando eu executasse cat eu ganharia novamente uma shell sem restrições. ;) 4) Se vc tiver o dd, chmod e mv ou o cp. Vc poderia fazer o seguinte: [root@lnx /root]# dd if=/bin/bash of=$HOME/bash [root@lnx /root]# chmod +x bash [root@lnx /root]# mv bash ./bin Ou usando apenas o dd e chmod: [root@lnx /root]# dd if=/bin/bash of=$HOME/bin/bash [root@lnx /root]# chmod +x ./bin/bash Ou usando somente o cp: [root@lnx /root]# cp /bin/bash ./bin Supondo que o $HOME/bin eh o diretorio que vc tem no PATH. =] 5) BONUS: não se esqueça que ele nao permite que vc altere o valor de algumas variaveis que sao somente leitura como: [dumdum@lnx dumdum]$ PATH=$PATH:/bin rbash: PATH: readonly variable [dumdum@lnx dumdum]$ Porem ele nao impede que vc crie novas variaveis e altere algumas outras! :) Um exemplo bobinho: Antes: [dumdum@lnx dumdum]$ set |grep langfile langfile=/home/konqueror/.i18n [dumdum@lnx dumdum]$ langfile=/bin/bash [dumdum@lnx dumdum]$ set |grep langfile langfile=/bin/bash Não pense que o bash restrito ira permitir que vc execute a variavel, seria facil demais! [dumdum@lnx dumdum]$ langfile rbash: /bin/bash: restricted: cannot specify `/' in command names [dumdum@lnx dumdum]$ Fique atento em variaveis de ambiente default, pode parecer inutil mais nao eh! 6) Devem existir varias outras falhas que eu nao descobri _ainda_. ;) -==========--==============--=============-- Como criar um disco de inicialização do meu Linux ?? r.: Use o mkbootdisk da seguinte forma: [root@lnx wendel]# mkbootdisk --device /dev/seu_floppy -v versao_do_kernel Na patrica no meu caso fica: [root@lnx wendel]# mkbootdisk --device /dev/fd0 -v 2.2.17-21mdk Insert a disk in /dev/fd0. Any information on the disk will be lost. Press to continue or ^C to abort: mke2fs 1.19, 13-Jul-2000 for EXT2 FS 0.5b, 95/08/09 [root@lnx /root]# A versao do kernel podem ser encontrada em dois locais: /boot/vmlinuz-versao /lib/modules/versao No meu caso sao: [root@lnx modules]# ls -la /lib/modules/ total 6 drwxr-xr-x 4 root root 94 Jan 12 2001 ./ drwxr-xr-x 4 root root 4134 Jun 5 08:45 ../ drwxr-xr-x 15 root root 403 Jun 13 07:13 2.2.17-21mdk/ [root@lnx modules]# ls -la /boot/vmlinuz-2.2.17-21mdk -rw-r--r-- 1 root root 665029 Oct 5 2000 /boot/vmlinuz-2.2.17-21mdk DICA: Caso vc nao tenha o /lib/modules/versao "no meu caso /lib/modules/2.2.17-21mdk/" o mkbootdisk nao ira funcionar. Para obte-lo "baixe/descompacte" o fonte do seu kernel. -==========--==============--=============-- Como dar boot em modo single com o grub ?? r.: No grub altere a linha do kernel adicionando no final a palavra single e boot com a mesma. Vc ira entrar em single mode. -==========--==============--=============-- Como dar boot em modo single com o lilo ?? r.: No lilo escreva linux single, ficando da seguinte forma: Lilo: linux single Dica1: Em algums casos ao inves de linux single pode ser single. Dica2.: Linux no caso eh o Label da partição ativa. Vc deve utilizar a o Label de acordo com o da sua maquina. Para ver os LABEL's pressione TAB. -==========--==============--=============-- Como criar um disco de instalação atraves do Windows ?? r.: Coloque o CD do seu LINUX em um Windows. (Suponhamos que a unidade seja d:\ entao faremos o seguinte: c:\> d: d:\> cd dosutils d:\dosutils> rawrite Enter disc image source name: ..\images\boot.img Enter target diskete drive: a: Please insert a formatted diskete into drive A: and press --ENTER-- d:\dosutils> Dica.: No caso o images eh o diretorio que esta um diretorio abaixo (nesse caso na raiz do CD) onde se encontram as imagens. Eu usei a boot.img mas poderia ser qualquer outra como bootnet.img ou qualquer outra que vc necessite. O a: eh a unidade de diskete. Em alguns casos pode ser b: -==========--==============--=============-- Como configurar o Postfix para que ele nao permita a extração de usuarios do sistema usando mail from: ?? r.: Comente a seguinte linha abaixo no main.cf local_recipient_maps = $alias_maps unix:passwd.byname -==========--==============--=============-- Em qual arquivo eu defino como vai ser a inicialização do meu sistema ?? Onde eu defino em qual Level minha init inicializara ?? r.: Esse arquivo se chama inittab e em geral se encontra em /etc/inittab -==========--==============--=============-- Onde eu posso achar a maioria dos arquivos de configuraçao do meu sistema ?? Como interfaces de placas de rede, mouse, rotas, ... ?? r.: Pode se encontrar no diretorio /etc/sysconfig/ -==========--==============--=============-- Em qual arquivo ficam configurados as partições que seram montados automaticamente ? r.: Eles ficam no /etc/fstab nesse arquivo esta definido quais: partições serão montadas, com quais opções, ... ! ;) -==========--==============--=============-- O que existe no /proc do Linux ?? r.: O /proc eh muito interessante. Eh como se ele fosse um drive virtual que eh montado e desmontado toda vez que o sistema inicializa e desliga. Nele sao gravados apenas informações do sistema. =] Exemplos interessante: Como ver como esta a memoria do meu Linux ? [root@lnx /]# cat /proc/meminfo total: used: free: shared: buffers: cached: Mem: 64585728 63184896 1400832 0 8179712 22228992 Swap: 0 0 0 MemTotal: 63072 kB MemFree: 1368 kB MemShared: 0 kB Buffers: 7988 kB Cached: 21708 kB BigTotal: 0 kB BigFree: 0 kB SwapTotal: 0 kB SwapFree: 0 kB [root@lnx /]# Como ver para que serve cada modulos do IP-MASQUERADE ? [root@lnx /]# cat /proc/net/ip_masq/app prot port n_attach name UDP 7648 0 cuseeme TCP 21 0 ftp TCP 7070 0 RealAudio TCP 554 0 RealAudio TCP 6667 0 irc TCP 1720 0 h225 TCP 7000 0 VDOlive [root@lnx /]# Como ver informações da maquina/processador ? [root@lnx /]# cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 5 model : 8 model name : AMD-K6(tm) 3D processor stepping : 12 cpu MHz : 476.550 cache size : 64 KB fdiv_bug : no hlt_bug : no sep_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu vme de pse tsc msr mce cx8 sep mtrr pge mmx 3dnow bogomips : 950.27 [root@lnx /]# Como saber todos os modulos que estao rodando ?? [root@lnx /proc]# cat /proc/modules ip_masq_irc 1664 0 (unused) ip_masq_raudio 3072 0 (unused) ip_masq_ftp 4032 0 (unused) ip_masq_h323 7200 0 (unused) ip_masq_vdolive 1440 0 (unused) ip_masq_cuseeme 1184 0 (unused) autofs 9456 2 (autoclean) ne2k-pci 4240 2 (autoclean) 8390 6272 0 (autoclean) [ne2k-pci] reiserfs 128592 1 [root@lnx /proc]# Por fim, como saber quais conexões TCP eu tenho ativas ?? (esse eh bem interessante) [root@lnx /]# cat /proc/net/tcp sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode 0: 0197A8C0:1F90 1597A8C0:05A7 05 00000000:00000000 02:00004243 00000000 0 4 0 1: 0197A8C0:1F90 1597A8C0:05A6 05 00000000:00000000 02:00004243 00000000 0 4 0 2: 0197A8C0:1F90 1597A8C0:05A5 06 00000000:00000000 01:FFF615EB 00000000 0 0 0 3: 0197A8C0:1F90 1597A8C0:05A4 06 00000000:00000000 01:FFF615EB 00000000 0 0 0 4: 0197A8C0:1F90 1597A8C0:05A3 06 00000000:00000000 01:FFF615EB 00000000 0 0 0 5: 0197A8C0:1F90 1597A8C0:05A2 06 00000000:00000000 03:00000BB8 00000000 0 0 0 6: 0197A8C0:1F90 1597A8C0:05A1 06 00000000:00000000 03:000005DC 00000000 0 0 0 7: 0197A8C0:1F90 1597A8C0:05A0 06 00000000:00000000 01:FFF615EB 00000000 0 0 0 8: 0197A8C0:1F90 1597A8C0:059F 06 00000000:00000000 02:FFF623EC 00000000 [root@lnx /]# Bom, vc deve estar se perguntando: Cade as conexões TCP ?? Como, eu ja disse elas estao todas ae no /proc/net/tcp, vc so nao esta as entendendo porque elas estao em Hexa-Decimal ao inves de Decimal. =] Faça a simples converão para entender. Abra a calculadora do Windows e calcule a linha 0 por exemp