caixa de ferramentas unix.pdf

Upload: neomisys

Post on 03-Apr-2018

237 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    1/34

    C A I X A D E

    Esse documento a coleo de comandos e tarefas realizadas nos sistemas Unix/Linux/BSD na qual so utilizados no dia-a-diados administradores de redes ou para os usurios avanados. Esse guia prtico e com explicaes diretas, entretanto aleitura supostamente para quem j conhece o assunto.

    1. Sistema

    2. Processo

    3. Sistema de Arquivo

    4. Rede

    5. SSH SCP

    6. VPN com SSH

    7. RSYNC

    8. SUDO

    9. Arquivos Criptografados

    10. Parties Criptografadas11. Certificados SSL

    12. CVS

    13. SVN

    14. Comandos teis

    15. Instalao de Programa

    16. Converso de Mdia

    17. Imprimindo

    18. Banco de Dados

    19. Cota de Disco

    20. Shells

    21. Scripting22. Programando

    23. Ajuda Online

    1 S I S T E M AHardware | Estatsticas | Usurios | Limites | Runlevels | Senha de Root | Compilao de Kernel | Reparos de Grub

    Executando kernel e a informao do sistema# uname -a # Mostra a verso do kernel (e a verso BSD)# lsb_release -a # Informao completa de quaisquer distribuio# cat /etc/SuSE-release # Mostra a verso SuSe# cat /etc/debian_version # Mostra a verso Debian

    Usa /etc/DISTR-release com DISTR= lsb (Ubuntu), redhat, gentoo, mandrake, sun (Solaris), e assim por diante. Veja tambm/etc/issue.# uptime # Mostra quanto tempo o sistema est executando, ou seja, quanto tempo faz que o sistema no desligado# hostname # Mostra na tela o nome da mquina# hostname -i # Exibe o endereo IP da mquina (apenas no Linux)# man hier # Descrio da hierarquia dos arquivos no sistema# last reboot # Exibe o histrico da reinicializao do sistema

    1.1 I n f o r m a o d o H a r d w a r e

    Hardware detectado no kernel# dmesg # Hardware detectado e mensagens de inicializao# lsdev # Informao sobre a instalao do hardware# dd if=/dev/mem bs=1k skip=768 count=256 2>/dev/null | strings -n 8 # Leitura da BIOS

    Linux# cat /proc/cpuinfo # Modelo da CPU

    # cat /proc/meminfo # Informao da memria# grep MemTotal /proc/meminfo # Exibe a memria fsica# watch -n1 'cat /proc/interrupts' # Relgio interrompe continuamente mutvel# free -m # Mostra o tamanho usado e livre da memria (-m para MB)# cat /proc/devices # Dispositivos configurados# lspci -tv # Mostra os dispositivos PCI# lsusb -tv # Mostra os dispositivos USB# lshal # Mostra a lista de todos os dispositivos com suas propriedades# dmidecode # Mostra DMI/SMBIOS: como a informao da BIOS

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    2/34

    # sysctl hw.model # Mostra o modelo da CPU# sysctl hw # Mostra vrias informaes do hardware# sysctl vm # Memria usada# dmesg | grep "real mem" # Memria do hardware# sysctl -a | grep mem # Configuraes e informaes sobre a memria do kernel# sysctl dev # Mostra os dispositivos configurados# pciconf -l -cv # Exibe dispositivos PCI# usbdevs -v # Exibe dispositivos USB# atacontrol list # Exibe dispositivos ATA# camcontrol devlist -v # Exibe dispositivos SCSI

    1.2 L o a d , e s t a t s t i c a s e m e n s a g e n s

    Os comandos a seguir so usados para localizar o que est acontecendo no sistema.

    # top # Exibe e atualiza os processos da CPU# mpstat 1 # Exibe os processos das capacidades relacionadas# vmstat 2 # a capacidade da memria virtual# iostat 2 # Exibe a capacidade I/O (2s intervalo)# systat -vmstat 1 # Resumo da capacidade do sistema BSD (1s intervalo)# systat -tcp 1 # Conexes tcp no BSD (tenta tambm ip)# systat -netstat 1 # Ativa as conexes de rede BSD# systat -ifstat 1 # BSD trfego de redes ativas# systat -iostat 1 # BSD taxa de transferncia do disco e da CPU# tail -n 500 /var/log/messages # As ltimas 500 linhas mensagens do registro# tail /var/log/warn # Mensagens de alerta do sistema, veja em syslog.conf

    1.3 U s u r i o s

    # id # Exibe o id, usurio e grupo ativo# last # Exibe o ultimo usurio logado# who # Exibe o usurio logado# groupadd admin # Adiciona um grupo admin e um usurio colin (Linux/Solaris)# useradd -c "Colin Barschel" -g admin -m colin# usermod -a -G # Adiciona um usurio ao grupo (Debian)# groupmod -A # Adiciona um usurio ao grupo (SuSE)

    # userdel colin # Exclui o usurio Colin# adduser joe # FreeBSD, adiciona o usurio ao sistema (interativamente)# rmuser joe # FreeBSD, deleta o usurio joe (interativamente)# pw groupadd admin # Usa pw no FreeBSD# pw groupmod admin -m newmember # Adiciona um novo membro ao grupo# pw useradd colin -c "Colin Barschel" -g admin -m -s /bin/tcsh# pw userdel colin; pw groupdel admin

    Senhas criptografadas esto armazenadas no /etc/shadow nos Linux e Solaris, no FreeBSD esto localizadas no/etc/master.passwd. Se o master.passwd for modificado manualmente (deleta a senha), executa # pwd_mkdb -p master.passwdpara repor o banco de dados.

    Para prevenir amplos acessos temporrios (para todos os usurios mas root) use nologin. A mensagem do nologin ser Exibido(talvez no trabalha com as chaves ssh).# echo "Desculpe no acessa agora" > /etc/nologin # (Linux)# echo "Desculpe no acessa agora" > /var/run/nologin # (FreeBSD)

    1.4 L i m i t e s

    Algumas aplicaes requerem limites superiores em arquivos abertos (como o Proxy do servidor de web, banco de dados). Olimite padro so normalmente mais baixos.

    Linux

    Cada Shell/script

    O limite do Shell regido por um ulimit. O estado checado com ulimit -a. Por exemplo, para trocar os arquivos limites dos1024 para 10240 faa:# ulimit -n 10240 # Isso apenas validar dentro do Shell

    O comando ulimit pode ser usado no em um script para trocar os limites do script apenas.

    Por usurio/processo

    Acesso de aplicaes e usurios podem ser configurados no /etc/security/limits.conf. Por exemplo:# cat /etc/security/limits.conf* hard nproc 250 # Limites de processos por usurios

    asterisk hard nofile 409600 # Aplicaes limites de arquivos abertos

    Sistema amplo

    Limites do kernel so ajustados sysctl. Limites permanentes so ajustados no /etc/sysctl.conf.# sysctl -a # Visualiza todo o limite do sistema# sysctl fs.file-max # Visualiza o limite mximo de arquivos abertos# sysctl fs.file-max=102400 # Troca o limite mximo# echo "1024 50000" > /proc/sys/net/ipv4/ip_local_port_range #Faixa de portas# cat /etc/sysctl.conffs.file-max=102400 # Permanece a entrada no sysctl.conf# cat /proc/sys/fs/file-nr # Como muitos arquivos descritos em uso

    FreeBSD

    Cada Shell/script

    Use o comando limits em csh ou tcsh ou igual ao Linux, use ulimit no bash shell.

    Por usurio/processo

    O padro dos limites de acesso so configurados no /etc/login.conf. Um valor ilimitado ainda limitado pelo sistema de valormximo.

    Sistema amplo

    Limites do kernel tambm so definidas no sysctl. Permanece os limites que so definidos no/etc/sysctl.conf ou/boot/loader.conf. A sintaxe igual ao Linux mas as chaves so diferentes.# s sctl -a # Visualiza todo o limite do sistema

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    3/34

    # sysctl kern.maxfiles=XXXX # Nmero mximo de descritores no arquivokern.ipc.nmbclusters=32768 # Permanece a entrada no /etc/sysctl.confkern.maxfiles=65536 # Tpico valor do squidkern.maxfilesperproc=32768kern.ipc.somaxconn=8192 # Fila TCP. Melhor para apache/sendmail# sysctl kern.openfiles # Quantos arquivos descritos so usados.# sysctl kern.ipc.numopensockets # Quantos sockets esto em uso# sysctl -w net.inet.ip.portrange.last=50000 # Padro 1024-5000# netstat -m # Capacidade de memria da rede

    Veja o FreeBSD handbook Chapter 11http://www.freebsd.org/handbook/configtuning-kernel-limits.html para detalhes.

    Solaris

    Seguindo os valores no /etc/system incrementar o mximo de descries por proc::set rlim_fd_max = 4096 # Limite fsico nos arquivos de descries para o nico procset rlim_fd_cur = 1024 # Limite lgico nas filas descritas para o nico proc

    1.5 R u n l e v e l s

    Linux

    Uma vez iniciado o kernel inicia o init que ento comea o rc que inicia todos os scripts pertencente a um runlevel. O scriptsso armazenados em um /etc/init.d e so ligados a um /etc/rc.d/rcN.d com N o nmero do runlevel.O nvel padro do runlevel configurado em /etc/inittab. So normalmente 3 ou 5:# grep default: /etc/inittabid:3:initdefault:

    O atual runlevel pode ser alterado com init. Por exemplo para ir do 3 para o 5:# init 5 # Entra o runlevel 5

    0 Desliga e suspende1 Modo Single-User (also S)

    2 Multi-user sem rede3 Multi-user com rede5 Multi-user com X6 Reinicia

    Use chkconfig para configurar os programas que inicializar o boot pelo runlevel.# chkconfig --list # Lista todos os scripts do init# chkconfig --list sshd # Relata o estado do sshd# chkconfig sshd --level 35 on # Configura sshd para level 3 e 5# chkconfig sshd off # Desabilita sshd todos os runlevels

    Debian e distribuies baseadas no Debian como Ubuntu ou Knoppix usa o comando update-rc.d para gerenciar o script dorunlevel. Por padro comea em 2,3,4 e 5 e shutdown no 0,1 e 6.# update-rc.d sshd defaults # Ativa sshd como runlevel padro# update-rc.d sshd start 20 2 3 4 5 . stop 20 0 1 6 . # Com argumentos explcitos# update-rc.d -f sshd remove # Desabilita sshd para todos runlevels# shutdown -h now (or # poweroff) # Desliga o sistema ou suspende

    FreeBSD

    O boot do BSD se aproxima do sistema SysV, no existem runlevels. O final do estado (nico usurio, com ou sem X) configurado no /etc/ttys. Todos os scripts esto localizado no /etc/rc.d/ e no /usr/local/etc/rc.d/ a terceira parte dasaplicaes. A ativao do servio est configurado no /etc/rc.conf e /etc/rc.conf.local. Por padro est configurado no/etc/defaults/rc.conf. O script responde pelo menos para start|stop|status.# /etc/rc.d/sshd statussshd is running as pid 552.# shutdown now # Entra no modo single-user# exit # volta para o modo multi-usurio# shutdown -p now # Desliga e suspende o sistema# shutdown -r now # Reiniciat

    O processo do init pode ser usado para checar um dos seguintes runlevels. Por exemplo # init 6 para reiniciar.

    0 Desliga o sistema (sinal USR2)1 Vai o modo single-user (sinal TERM)6 Reinicia a mquina (sinal INT)c Bloqueia o acesso adicional TSTP)

    q Rescan o arquivo ttys(5) (sinal HUP)

    1.6 Z e r a r s e n h a d e R o o t

    Linux mtodo 1

    Ao boot carrega (lilo ou grub), entra a opo seleo de inicializao:init=/bin/sh

    O kernel montar a partio e o init inicializar o bourne Shell em vez do rc e o runlevel. Usa o comando passwd para trocar asenha e reinicia.Esquea o modo single-user, voc precisa da senha para isso.Se, depois do booting, a partio root montado para somente para leitura, e remonta como rw:# mount -o remount,rw /# passwd # ou deleta a senha de root no (/etc/shadow)# sync; mount -o remount,ro / # sync depois de remontar para somente leitura# reboot

    FreeBSD mtodo 1

    No FreeBSD, inicia o single-user, remonta / rw e a senha. Voc pode selecionar o modo single-user menu (opo 4) comoExibe na tela 10 segundos para iniciar. O modo single-user dar o Shell root da partio /.# mount -u /; mount -a # montar / rw# passwd# reboot

    Unixes e FreeBSD e Linux mtodo 2

    Outros Unixes no oderia deix-lo ir embora com o tru ue sim les init. A solu o montada na arti o de outro SO como

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    4/34

    um CD) e troca a senha no disco.

    Inicia o CD live ou a instalao em um modo de recuperao que vai lhe dar um ShellProcura a partio root com fdisk /dev/sda Monta e usa o chroot

    # mount -o rw /dev/ad4s3a /mnt# chroot /mnt # chroot into /mnt# passwd# reboot

    1.7 M d u l o s d o K e r n e l

    Linux# lsmod # lista todos os mdulos carregados# modprobe isdn # Carrega um mdulo

    FreeBSD# kldstat #Lista todos os mdulos carregados# kldload crypto # Para carregar um mdulo

    1.8 C o m p i l a n d o o K e r n e l

    Linux# cd /usr/src/linux# make mrproper # Limpa o antigo .config se existir# make oldconfig # Re-usa o antigo .config se existente# make menuconfig # ou xconfig (Qt) ou gconfig (GTK)# make # Cria uma imagem comprimida# make modules # Compila os mdulos# make modules_install # Instala os mdulos# make install # Instala o kernel# reboot

    FreeBSD

    Atualizao opcional de origem (em /usr/src) com csup (como FreeBSD 6.2 ou posterior):# csup

    Eu sigo o supfile:*default host=cvsup5.FreeBSD.org # www.freebsd.org/handbook/cvsup.html#CVSUP-MIRRORS*default prefix=/usr*default base=/var/db*default release=cvs delete tag=RELENG_7src-all

    Modifica e refaz o kernel, copia a configurao de arquivo genrica para o novo nome e edita como se precisa (voc podetambm editar o arquivo GENERIC diretamente). Para reiniciar a construo e aps a interrupo, adiciona a opo NO_CLEAN=YES, ocomando make evita a limpeza dos objetos j formados.# cd /usr/src/sys/i386/conf/

    # cp GENERIC MYKERNEL# cd /usr/src# make buildkernel KERNCONF=MYKERNEL# make installkernel KERNCONF=MYKERNEL

    Para a reconstruo total SO:# make buildworld # Constri total o SO mas no o kernel# make buildkernel # Usa KERNCONF para ambos# make installkernel# reboot# mergemaster -p # Compare somente os arquivos essenciais e conhecidos# make installworld# mergemaster -i -U # Atualiza todas as configuraes e outros arquivos# reboot

    Para pequenas alteraes no fonte, voc pode usar NO_CLEAN=yes para evitar a reconstruo de toda a rvore.# make buildworld NO_CLEAN=yes # No deleta os objetos antigos# make buildkernel KERNCONF=MYKERNEL NO_CLEAN=yes

    1.9 R e p a r a o G r u b

    Ento voc quebrou o grub? Boot com CD live, [procura sua partio Linux abaixo /dev e use o fdisk para localizar a partio dolinux] monte a partio linux, adicione o /proc e o /dev e use o grub-install /dev/xyz. Suponha que o linux esta em /dev/sda6:# mount /dev/sda6 /mnt # Monta a partio linux em /mnt# mount --bind /proc /mnt/proc # monta o subsistema proc no /mnt# mount --bind /dev /mnt/dev # monta os dispositivos no /mnt# chroot /mnt # troca a partio root Linux# grub-install /dev/sda # reinstala grub com suas antigas configuraes

    2 P R O C E S S O SListando | Prioridade | Background/Foreground |Top | Kill

    2.1 L i s t a g e m e P I D s

    Cada processo tem um nmero exclusivo, o PID. A lista de todos os processo em execuo obtido com o ps.# ps -auxefw # Lista extensa de todos os processos em execuo

    No entanto o uso mais tpico com o pipe ou o pgrep:# ps axww | grep cron586 ?? Is 0:01.48 /usr/sbin/cron -s

    # ps axjf # Todos processos no formato de rvore(Linux)# ps aux | grep 'ss[h]' # Localiza todos pids ssh sem o grep pid# pgrep -l sshd # Localiza os PIDs dos processos por (parte de) nome# echo $$ # O PID de sua shell# fuser -va 22/tcp # Lista os processos usando a porta 22 (Linux)# pmap PID # Mapa dos processos em memria (Caa vazamentos de memria) (Linux)# fuser -va /home # Lista os processos acessing a partio /home# strace df # Traa os sinais e chamadas de sistema

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    5/34

    # truss df # Mesmo que acima em FreeBSD/Solaris/Unixware

    2.2 P r i o r i d a d e

    Altera a prioridade dos processos em execuo com renice. Nmero negativos tem uma prioridade maior , o menor -20e o "nice" tem um valor positivo.# renice -5 586 # Maior Prioridade586: Prioridade antiga 0, nova prioridade -5

    Inicia o processo com uma prioridade definida com o nice. Positivo "nice" ou fraco, negativo fixa uma prioridade forte.Certifique se /usr/bin/nice ou o shell embutido usou (Verifique com # which nice).# nice -n -5 top # Prioridade forte(/usr/bin/nice)# nice -n 5 top # Prioridade fraca (/usr/bin/nice)# nice +5 top # tcsh tem nice embutido (mesmo que acima!)

    Enquanto o nice altera o agendamento da CPU, um outro comando til o ionice, ir fixar o IO do disco. Isto muito til paraaplicaes intensivas (ex. compilao). Voce pode selecionar uma classe (ociosa - melhor esforo - tempo real ), a pgina domanual curta e bem explicativa.# ionice c3 -p123 # ajusta a classe ociosa para o PID 123 (Linux Somente)# ionice -c2 -n0 firefox # Executa o firefox com melhor esforo e maior prioridade# ionice -c3 -p$$ # Ajusta o shell atual para prioridade ociosa

    O ultimo comando muito til para compilar (ou debugar) um longo projeto. Cada comando iniciado neste shell ter aprioridade herdada. $$ o seu shell pid (tente echo $$).FreeBSD usa idprio/rtprio (0= mxima prioridade, 31 = mais inativo)# idprio 31 make # Compila com menor prioridade# idprio 31 -1234 # Ajusta o PID 1234 com menor prioridade# idprio -t -1234 # -t remove qualquer prioridade de tempo real/ociosa

    2.3 B a c k g r o u n d / F o r e g r o u n d

    Quando iniciado a partir de um shell, os processos podem ser levados ao background e ao foreground com [Ctrl]-[Z] (^Z), bg e

    fg. Lista os processos com jobs.# ping cb.vu > ping.log^Z # ping interrompido (parado) com [Ctrl]-[Z]# bg # Coloca em segundo plano e continua executando# jobs -l # Lista os processos em segundo plano[1] - 36232 Running ping cb.vu > ping.log[2] + 36233 Suspended (tty output) top# fg %2 # Traz o processo 2 de volta ao primeiro plano

    Use nohup para iniciar o processo que tem que continuar a executar quando a shell fechada.# nohup ping -i 60 > ping.log &

    2.4 T o p

    O programa top exibe informaes dos processos em execuo. Veja tambm o programa htop de htop.sourceforge.net (averso mais poderosa do top) que roda em Linux e FreeBSD ( ports/sysutils/htop/). Enquanto o top executado pressione atecla "h" para uma viso geral da ajuda. Teclas teis so:

    u [nome do usurio] Para exibir somente os processos pertencentes ao usurio. Use + ou deixe em branco paratodos os usurios.k [pid] Finaliza todos os processos com o pid.1 Para exibir todas as estatsticas dos processos (Linux somente)R Para ordenar.

    2.5 S i g n a l s / K i l l

    Termina ou manda um sinal com kill ou killall.# ping -i 60 cb.vu > ping.log &[1] 4712# kill -s TERM 4712 # mesmo que finalizar com -15 4712# killall -1 httpd # Kill HUP processos por nome# pkill -9 http # Kill TERM processos por (parte de) nome# pkill -TERM -u www # Kill TERM processos usado por www# fuser -k -TERM -m /home # Kill cada processo acessando /home (para desmontar)

    Sinais importantes so:

    1 HUP (desliga)2 INT (suspende)3 QUIT (fecha)9 KILL (fora)15 TERM (software envia o sinal de trmino)

    3 S I S T E M A D E A R Q U I VInfo de disco | Boot | Uso de disco | Arquivos abertos | Monta/remonta | Monta SMB | Monta imagem | Queima ISO | Criar image| Memria de Disco | Desempenho de Disco

    3.1 P e r m i s s e s

    Altere as permisses e propriedades com chmod e chown. A umask padro pode ser alterada para todos os usurios em/etc/profile para Linux ou /etc/login.conf para FreeBSD. A umask padro geralmente 022. A umask subtrado de 777, assim aumask 022 resulta na permisso de 755.1 --x executa # Modo 764 = executa/l/escreve | l/escreve | l2 -w- escreve # Para: |-- Dono --| |- Grupo-| |Outros|4 r-- lugo=a u=usurio, g=grupo, o=outros, a=todos

    # chmod [OPO] MODO[,MODO] ARQUIVO # MODO na forma [ugoa]*([-+=]([rwxXst]))# chmod 640 /var/log/maillog # Restringir o log -rw-r-----# chmod u=rw,g=r,o= /var/log/maillog # O mesmo acima# chmod -R o-r /home/* # Remove recursivamente leitura para outros para todos os usurios# chmod u+s /path/to/prog # Fixa SUID bit no executvel (saiba o que esta fazendo!)# find / - erm -u+s - rint # Localiza todos os ro ramas com o SUID bit

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    6/34

    # chown user:group /path/to/file # Altera a propriedade do usurio e o grupo no arquivo# chgrp group /path/to/file # Altera a propriedade da grupo no arquivo# chmod 640 `find ./ -type f -print` # Altera a propriedade para 640 em todos os arquivos# chmod 751 `find ./ -type d -print` # Altera a permisso para 751 para todos os diretrios

    3.2 I n f o r m a o d e D i s c o

    # diskinfo -v /dev/ad2 # Informao sobre o disco (Setor/tamanho) FreeBSD# hdparm -I /dev/sda # Informao sobre o disco IDE/ATA (Linux)# fdisk /dev/ad2 # Exibe e manipula a tabela de parties# smartctl -a /dev/ad2 # O SMART exibe as informao do disco

    3.3 B o o t

    FreeBSDPara inicializar o antigo kernel se o novo kernel no inicializar, pare o boot durante a contagem regressiva# unload# load kernel.old# boot

    3.4 S i s t e m a d e p o n t o d e m o n t a g e m / U s o d e d i

    # mount | column -t # Exibe o sistema de arquivos montados no seu sistema# df # Exibe o espao livre no disco e dispositivos montados# cat /proc/partitions # Exibe todas parties registradas (Linux)

    Uso de Disco# du -sh * # Lista o tamanho dos diretrios# du -csh # Tamanho total do diretrio corrente# du -ks * | sort -n -r # Ordena tudo por tamanho em kilobytes# ls -lSr # Exibe arquivos, maiores por ltimo

    3.5 Q u e m t e m a r q u i v o s a b e r t o s

    Este muito til para localizar quem esta bloqueando a partio e tem que ser desmontado e recebe um erro tpico:# umount /home/umount: unmount of /home # Impossvel desmontar porque um arquivo esta bloqueando o home

    Falhou: Dispositivo Ocupado

    FreeBSD e maioria dos Unixes# fstat -f /home # Para montar o ponto# fstat -p PID # Para uma aplicao com PID# fstat -u user # Para um nome de usurio

    Localiza arquivos de log aberto (ou outros arquivos abertos), pela palavra Xorg:# ps ax | grep Xorg | awk '{print $1}'1252# fstat -p 1252USER CMD PID FD MOUNT INUM MODE SZ|DV R/Wroot Xorg 1252 root / 2 drwxr-xr-x 512 rroot Xorg 1252 text /usr 216016 -rws--x--x 1679848 rroot Xorg 1252 0 /var 212042 -rw-r--r-- 56987 w

    O arquivo com inum 212042 o nico arquivo em /var:# find -x /var -inum 212042/var/log/Xorg.0.log

    Linux

    Localiza arquivos abertos em um ponto de montagem: fuser ou lsof:# fuser -m /home # Lista os processos acessando o /home# lsof /homeCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEtcsh 29029 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)lsof 29140 eedcoba cwd DIR 0,18 12288 1048587 /home/eedcoba (guam:/home)

    Sobre uma aplicao:ps ax | grep Xorg | awk '{print $1}'3324# lsof -p 3324COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME

    Xorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log

    Sobre um arquivo nico:# lsof /var/log/Xorg.0.logCOMMAND PID USER FD TYPE DEVICE SIZE NODE NAMEXorg 3324 root 0w REG 8,6 56296 12492 /var/log/Xorg.0.log

    3.6 M o n t a n d o e R e m o n t a n d o u m S i s t e m a d e A

    Por exemplo, o cdrom. Se listado em /etc/fstab# mount /cdrom

    Ou localize o dispositivo em /dev ou com o dmesg

    FreeBSD# mount -v -t cd9660 /dev/cd0c /mnt # cdrom# mount_cd9660 /dev/wcd0c /cdrom # outro mtodo# mount -v -t msdos /dev/fd0c /mnt # disquete

    Entrada no /etc/fstab:# Device Mountpoint FStype Options Dump Pass#/dev/acd0 /cdrom cd9660 ro,noauto 0 0

    Para permitir o usurio fazer:# sysctl vfs.usermount=1 # Ou inserir a linha "vfs.usermount=1" em /etc/sysctl.conf

    Linux# - #

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    7/34

    # mount /dev/hdc -t iso9660 -r /cdrom # Tpico IDE# mount /dev/scd0 -t iso9660 -r /cdrom # Tpico SCSI cdrom# mount /dev/sdc0 -t ntfs-3g /windows # Tpico SCSI

    Entrada no /etc/fstab:/dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec 0 0

    Montar uma Partio FreeBSD com Linux

    Localize o nmero da partio com fdisk, esta geralmente a partio root, mas poderia ser outro slice BSD tambm. Se oFreeBSD tem muitas slices, eles no so o que esto listados na tabela fdisk, porm visvel em /dev/sda* ou /dev/hda*.# fdisk /dev/sda # Localiza a partio FreeBSD/dev/sda3 * 5357 7905 20474842+ a5 FreeBSD# mount -t ufs -o ufstype=ufs2,ro /dev/sda3 /mnt/dev/sda10 = /tmp; /dev/sda11 /usr # Outros slices

    Remontar

    Remontar um dispositivo sem desmontar. Necessrio para fsck por exemplo# mount -o remount,ro / # Linux# mount -o ro / # FreeBSD

    Copie os dados brutos a partir do cdrom em uma imagem iso:# dd if=/dev/cd0c of=file.iso

    3.7 A d i c i o n a r s w a p e m t e m p o r e a l

    Suponha que voc necessite de mais swap (agora mesmo), um arquivo de 2GB em /swap2gb (Linux comente).# dd if=/dev/zero of=/swap2gb bs=1024k count=2000# mkswap /swap2gb # Criar a rea de Swap# swapon /swap2gb # Ative a swap. Agora em uso!# swapoff /swap2gb # Quando terminar, desative a swap# rm /swap2gb

    3.8 M o n t a r u m C o m p a r t i l h a m e n t o S M B

    Suponha que ns queremos acessar o compartilhamento SMB em um computador smbserver, o endereo digitado em umcomputador Windows \\smbserver\myshare. Ns montamos em /mnt/smbshare. Alerta> cifs precisa de um IP ou nome DNS,no um nome Windows.

    Linux# smbclient -U user -I 192.168.16.229 -L //smbshare/ # Lista os compartilhamentos# mount -t smbfs -o username=winuser //smbserver/myshare /mnt/smbshare# mount -t cifs -o username=winuser,password=winpwd //192.168.16.229/myshare /mnt/share

    Adicionando com o pacote mount.cifs possvel armazenar as credenciais em um arquivo, por exemplo/home/user/.smb:username=winuserpassword=winpwd

    E montar os seguintes:# mount -t cifs -o credentials=/home/user/.smb //192.168.16.229/myshare /mnt/smbshare

    FreeBSD

    Use -I para pegar o IP (ou nome DNS); smbserver o nome Windows.# smbutil view -I 192.168.16.229 //winuser@smbserver # List os compartilhamentos# mount_smbfs -I 192.168.16.229 //winuser@smbserver/myshare /mnt/smbshare

    3.9 M o n t a r u m a i m a g e m

    Voltando ao Linux# mount -t iso9660 -o loop file.iso /mnt # Monta uma imagem de CD# mount -t ext3 -o loop file.img /mnt # Monta uma imagem com sistema de arquivos ext3

    FreeBSD

    Com dispositivo de memria (faa # kldload md.ko se necessrio):# mdconfig -a -t vnode -f file.iso -u 0# mount -t cd9660 /dev/md0 /mnt

    # umount /mnt; mdconfig -d -u 0 # Limpeza do dispositivo md

    Ou com n virtual:# vnconfig /dev/vn0c file.iso; mount -t cd9660 /dev/vn0c /mnt# umount /mnt; vnconfig -u /dev/vn0c # Limpeza do dispositivo vn

    Solaris e FreeBSD

    Voltando ao incio com a interface do arquivo ou lofi:# lofiadm -a file.iso# mount -F hsfs -o ro /dev/lofi/1 /mnt# umount /mnt; lofiadm -d /dev/lofi/1 # Limpeza do dispositivo lofi

    3.1 0C r i a r e Q u e i m a r u m a i m a g e m I S O

    Isto ir copiar setor por setor de um cd ou DVD. Com conv=notrunc, a imagem ser menor se ouver contedo no cd. Veja abaixoo dd examples.# dd if=/dev/hdc of=/tmp/mycd.iso bs=2048 conv=notrunc

    Use mkisofs para criar uma imagem CD/DVD de arquivos em um diretrio. Para evitar a restries de nomes de arquivos: -rpermite a extenso Rock Ridge comuns ao sistema UNIX, -J permite extenso Joliet usada por sistemas Microsoft. -L permitearquivos ISO9660 comeando com um perodo.# mkisofs -J -L -r -V TITLE -o imagefile.iso /path/to/dir

    Em FreeBSD, mkisofs encontrado no ports em sysutils/cdrtools.

    Queimar uma imagem ISO de CD/DVD

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    8/34

    FreeBSD

    FreeBSD no ativa DMA em dispositivos ATAPI por padro. DMA est habilitado com o comando sysctl e os argumentos abaixo,ou com /boot/loader.conf com as seguintes entradas::hw.ata.ata_dma="1"hw.ata.atapi_dma="1"

    Use burncd com um dispositivo ATAPI(burncd parte da base do sistema) e cdrecord ( em sysutils/cdrtools) com um disco SCSI.# burncd -f /dev/acd0 data imagefile.iso fixate # Para discos ATAPI# cdrecord -scanbus # Para localizar o dispositivo (like 1,0,0)# cdrecord dev=1,0,0 imagefile.iso

    Linux

    Tambm usa cdrecord com Linux como descrito acima. Alm disso possvel usar a interface ATAPI nativa que se encontra com:# cdrecord dev=ATAPI -scanbus

    E queime o CD/DVD como acima.

    Ferramentas dvd+rw

    O dvd+rw-tools pacote (FreeBSD: ports/sysutils/dvd+rw-tools) pode fazer tudo e inclui growisofs para queimar CDs ou DVDs.Os exemplos se referem aos dispositivos de DVD /dev/dvd que poderia ser um link simblico para /dev/scd0 (tpico scsi emLinux) ou /dev/cd0 (tpico FreeBSD) ou /dev/rcd0c (tpico NetBSD/OpenBSD de carter SCSI) ou /dev/rdsk/c0t1d0s2 (Exemplo deum dispositivo Solaris SCSI/ATAPI CD-ROM ). Existe uma boa documentao com exemplos em FreeBSD handbook chapter18.7http://www.freebsd.org/handbook/creating-dvds.html . # -dvd-compat finaliza o disco# growisofs -dvd-compat -Z /dev/dvd=imagefile.iso # Queima uma imagem iso existente# growisofs -dvd-compat -Z /dev/dvd -J -R /p/to/data # Queima diretamente

    Converter um arquivo do Nero .nrg para .iso

    O nero simplesmente adiciona um cabealho de 300Kb para uma imagem iso normal. Isto pode ser mudado com o dd.# dd bs=1k if=imagefile.nrg of=imagefile.iso skip=300

    Converter uma imagem /bin/cue para .iso

    O pequeno bchunk programhttp://freshmeat.net/projects/bchunk/ pode fazer isso. E no ports do FreeBSD em sysutils/bchunk.# bchunk imagefile.bin imagefile.cue imagefile.iso

    3.1 1C r i a r u m a r q u i v o b a s e a d o e m u m a i m a g e

    Por exemplo, uma partio de 1GB usando o arquivo /usr/vdisk.img. Aqui usamos o vnode 0, mas tambm poderia ser o 1.

    FreeBSD# dd if=/dev/random of=/usr/vdisk.img bs=1K count=1M# mdconfig -a -t vnode -f /usr/vdisk.img -u 0 # Cria o dispositivo /dev/md1# bsdlabel -w /dev/md0# newfs /dev/md0c# mount /dev/md0c /mnt# umount /mnt; mdconfig -d -u 0; rm /usr/vdisk.img # Cleanup the md device

    O arquivo de imagem base pode ser automaticamente montado durante o boot com uma entrada em /etc/rc.conf and/etc/fstab. Teste sua instalao com # /etc/rc.d/mdconfig start (primeiro delete o dispositivo md0 com # mdconfig -d -u 0).Note, porm, que essa configurao automtica s funcionar se o arquivo de imagem no na partio root. A razo que oscript /etc/rc.d/mdconfig executada muito cedo durante a inicializao e a partio raiz ainda somente leitura. Imagenslocalizadas fora da partio raiz ser montado mais tarde com o script /etc/rc.d/mdconfig2./boot/loader.conf:md_load="YES"

    /etc/rc.conf:# mdconfig_md0="-t vnode -f /usr/vdisk.img" # /usr is not on the root partition

    /etc/fstab: (Os 0 0 no final so importantes, diz ao fsck para ignorar este dispositivo, como ainda no existe)/dev/md0 /usr/vdisk ufs rw 0 0

    Tambm possvel aumentar o tamanho da imagem depois, dizer, por exemplo, 300 MB de maior dimenso.# umount /mnt; mdconfig -d -u 0# dd if=/dev/zero bs=1m count=300 >> /usr/vdisk.img# mdconfig -a -t vnode -f /usr/vdisk.img -u 0# growfs /dev/md0# mount /dev/md0c /mnt # A maior partio de arquivos agora 300MB

    Linux# dd if=/dev/zero of=/usr/vdisk.img bs=1024k count=1024# mkfs.ext3 /usr/vdisk.img# mount -o loop /usr/vdisk.img /mnt# umount /mnt; rm /usr/vdisk.img # Limpeza

    Linux with losetup

    /dev/zero muito mais rpido urandom, mas menos segura para criptografia# dd if=/dev/urandom of=/usr/vdisk.img bs=1024k count=1024# losetup /dev/loop0 /usr/vdisk.img # Cria e associa /dev/loop0# mkfs.ext3 /dev/loop0# mount /dev/loop0 /mnt# losetup -a # Verifica os loops utilizados# umount /mnt# losetup -d /dev/loop0 # Separa

    # rm /usr/vdisk.img

    3.1 2C r i a r u m S i s t e m a d e A r q u i v o s d e M e m r i

    A memria do sistema de arquivos baseado muito rpido para a aplicao de IO pesado. Como criar uma partio de 64 MBmontado em / memdisk:

    FreeBSD

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    9/34

    # mount_mfs -o rw -s 64M md /memdisk# umount /memdisk; mdconfig -d -u 0 # Limpeza do dispositivo mdmd /memdisk mfs rw,-s64M 0 0 # entrada /etc/fstab

    Linux# mount -t tmpfs -osize=64m tmpfs /memdisk

    3.1 3D e s e m p e n h o d e D i s c o

    Ler e escrever um arquivo de 1GB na partio ad4s3c (/home)# time dd if=/dev/ad4s3c of=/dev/null bs=1024k count=1000# time dd if=/dev/zero bs=1024k count=1000 of=/home/1Gb.file# hdparm -tT /dev/hda # Somente Linux

    4 N E T W O R K Roteamento | Adicionar IP | Alterar MAC | Portas | Firewall | IP Forward | NAT | DNS | DHCP |Trfego | QoS | NIS | Netcat

    4.1 D e b u g g i n g ( V e j a m a i sT r a ffi ca n a l y s i s )

    Linux# ethtool eth0 # Mostra o estado da ethernet (substitui mii-diag)# ethtool -s eth0 speed 100 duplex full # Fora 100Mbit Full duplex# ethtool -s eth0 autoneg off # Desabilita auto negociao# ethtool -p eth1 # Pisca o led da ethernet - muito til quando suportado# ip link show # Mostra todas as interfaces no Linux (semelhante ao ifconfig)# ip link set eth0 up # Levanta o dispositivo (ou desce). O mesmo que "ifconfig eth0 up"# ip addr show # Mostra todos os endereos IP no linux (semelhante ao ifconfig)# ip neigh show # Semelhante ao arp -a

    Outros OS's

    # ifconfig fxp0 # Verifica o campo "media" no FreeBSD# arp -a # Verifica o Roteador (ou host) entrada ARP (todos OS)# ping cb.vu # A primeira coisa a tentar...# traceroute cb.vu # Imprime o caminho de rota para o destino# ifconfig fxp0 media 100baseTX mediaopt full-duplex # 100Mbit full duplex (FreeBSD)# netstat -s # Estatsticas do Sistema para protocolo de rede

    Comandos adicionais que nem sempre so instalados por padro, mas fcil de encontrar:# arping 192.168.16.254 # Ping na camada ethernet# tcptraceroute -f 5 cb.vu # Utiliza o TCP ao invs de icmp para rastrear firewalls

    4.2 R o t e a m e n t o

    Imprimindo Tabela de Roteamento# route -n # Linux ou use "ip route"# netstat -rn # Linux, BSD and UNIX# route print # Windows

    Adiciona e Deleta RotasFreeBSD

    # route add 212.117.0.0/16 192.168.1.1# route delete 212.117.0.0/16# route add default 192.168.1.1

    Adiciona rota permanente em /etc/rc.confstatic_routes="myroute"route_myroute="-net 212.117.0.0/16 192.168.1.1"

    Linux

    # route add -net 192.168.20.0 netmask 255.255.255.0 gw 192.168.16.254# ip route add 192.168.20.0/24 via 192.168.16.254 # mesmo que acima com ip route# route add -net 192.168.20.0 netmask 255.255.255.0 dev eth0# route add default gw 192.168.51.254# ip route add default via 192.168.51.254 dev eth0 # mesmo que acima com ip route# route delete -net 192.168.20.0 netmask 255.255.255.0

    Solaris# route add -net 192.168.20.0 -netmask 255.255.255.0 192.168.16.254# route add default 192.168.51.254 1 # 1 = saltos para o prximo gateway# route change default 192.168.50.254 1

    Entradas permanentes so estabelecidas em /etc/defaultrouter.

    Windows

    # Route add 192.168.50.0 mask 255.255.255.0 192.168.51.253# Route add 0.0.0.0 mask 0.0.0.0 192.168.51.254

    Use add -p para criar uma rota persistente.

    4.3 C o n fi g u r e E n d e r e o s I Pa d i c i o n a i s

    Linux# ifconfig eth0 192.168.50.254 netmask 255.255.255.0 # Primeiro IP# ifconfig eth0:0 192.168.51.254 netmask 255.255.255.0 # Segundo IP

    # ip addr add 192.168.50.254/24 dev eth0 # Equivalente ao comando ip# ip addr add 192.168.51.254/24 dev eth0 label eth0:1

    FreeBSD# ifconfig fxp0 inet 192.168.50.254/24 # Primeiro IP# ifconfig fxp0 alias 192.168.51.254 netmask 255.255.255.0 # Segundo IP# ifconfig fxp0 -alias 192.168.51.254 # Remove o segundo apelido IP

    Permanent entries in /etc/rc.conf

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    10/34

    con g_ xp0= net 192.168.50.254 netmas 255.255.255.0ifconfig_fxp0_alias0="192.168.51.254 netmask 255.255.255.0"

    Solaris

    Check the settings with ifconfig -a# ifconfig hme0 plumb # Enable the network card# ifconfig hme0 192.168.50.254 netmask 255.255.255.0 up # First IP# ifconfig hme0:1 192.168.51.254 netmask 255.255.255.0 up # Second IP

    4.4 A l t e r a r E n d e r e o M A C

    Normalmente voc tem que derrubar a relao antes da mudana. No me diga porque voc quer mudar o endereo MAC ...# ifconfig eth0 down# ifconfig eth0 hw ether 00:01:02:03:04:05 # Linux# ifconfig fxp0 link 00:01:02:03:04:05 # FreeBSD# ifconfig hme0 ether 00:01:02:03:04:05 # Solaris# sudo ifconfig en0 ether 00:01:02:03:04:05 # Mac OS X Tiger# sudo ifconfig en0 lladdr 00:01:02:03:04:05 # Mac OS X Leopard

    Muitas ferramentas existentes para Windows. Por Exemplo etherchangehttp://ntsecurity.nu/toolbox/etherchange. Ou procure por "MacMakeup", "smac".

    4.5 P o r t a s e m U s o

    Listando portas abertas:# netstat -an | grep LISTEN# lsof -i # Linux Lista todas as conexes de Internet# socklist # Linux Mostra lista de sockets abertos# sockstat -4 # FreeBSD Lista Aplicaes# netstat -anp --udp --tcp | grep LISTEN # Linux# netstat -tup # Lista conexes ativas de/para sistemas (Linux)# netstat -tupl # Lista portas em escuta do sistema (Linux)# netstat -ano # Windows

    4.6 F i r e w a l l

    Verificando se o firewall esta executando.

    Linux# iptables -L -n -v # StatusOpen the iptables firewall# iptables -P INPUT ACCEPT # Abre tudo# iptables -P FORWARD ACCEPT# iptables -P OUTPUT ACCEPT# iptables -Z # Zera os contadores de pacotes para todas as regras# iptables -F # Limpa todas as Regras# iptables -X # Deleta todas as Regras

    FreeBSD# ipfw show # Status# ipfw list 65535 # if answer is "65535 deny ip from any to any" the fw is disabled# sysctl net.inet.ip.fw.enable=0 # Disable# sysctl net.inet.ip.fw.enable=1 # Enable

    4.7 E n c a m i n h a m e n t o I P p a r a R o t e a m e n t o

    Linux

    Verifica e habilita o encaminhamento do IP com:# cat /proc/sys/net/ipv4/ip_forward # Verifica o IP encaminhado 0=off, 1=on# echo 1 > /proc/sys/net/ipv4/ip_forward

    ou edita /etc/sysctl.conf com:net.ipv4.ip_forward = 1

    FreeBSD

    Verifica e habilita com:# sysctl net.inet.ip.forwarding # Verifica o IP encaminhado 0=off, 1=on# sysctl net.inet.ip.forwarding=1

    # sysctl net.inet.ip.fastforwarding=1 # Para dedicao do roteador ou firewallPermanencia com entrada em /etc/rc.conf:gateway_enable="YES" # Defina como YES se essa mquina for um gateway.

    Solaris# ndd -set /dev/ip ip_forwarding 1 # Defina o IP para o encaminhamento 0=off, 1=on

    4.8 N A T N e t w o r k A d d r e s s T r a n s l a t i o n

    Linux# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Para ativar o NAT# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 20022 -j DNAT \--to 192.168.16.44:22 # Port forward 20022 to internal IP port ssh# iptables -t nat -A PREROUTING -p tcp -d 78.31.70.238 --dport 993:995 -j DNAT \--to 192.168.16.254:993-995 # Port forward of range 993-995# ip route flush cache# iptables -L -t nat # Check NAT status

    Deleta a porta para o encaminhamento com -D em vez de -A.FreeBSD# natd -s -m -u -dynamic -f /etc/natd.conf -n fxp0Ou edita /etc/rc.conf com:firewall_enable="YES" # Defina YES para ativar a funo do firewallfirewall_type="open" # Tipo de firewall (veja /etc/rc.firewall)natd_enable="YES" # Habilite natd (if firewall_enable == YES).natd_interface="tun0" # Interface pblica ou endereo de IP para uso.natd_flags="-s -m -u -dynamic -f /etc/natd.conf"

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    11/34

    Porta em encaminhada com:# cat /etc/natd.confsame_ports yesuse_sockets yesunregistered_only# redirect_port tcp insideIP:2300-2399 3300-3399 # Faixa de portaredirect_port udp 192.168.51.103:7777 7777

    4.9 D N S

    No Unix o DNS so vlidos para todas as interfaces e armazenadas no /etc/resolv.conf. O domnio para qual a mquina pertence tambm armazenado no arquivo. A configurao mnima :nameserver 78.31.70.238search sleepyowl.net intern.lab

    domain sleepyowl.net

    Verifica o nome do domnio no sistema com:# hostname -d # Igual ao dnsdomainname

    Windows

    No Windows o DNS so configurados pela interface. Para que exiba a configurao DNS e para limpar o cache do DNS usa-se:# ipconfig /? # Exibe ajuda# ipconfig /all # Veja toda a informao incluindo o DNS

    Limpa o DNS

    Limpe o cache DNS do SO, alguns aplicativos usa seu prprio cache (ex. Firefox).# /etc/init.d/nscd restart # Reinicia nscd, se utilizar - Linux/BSD/Solaris# lookupd -flushcache # OS X Tiger# dscacheutil -flushcache # OS X Leopard and newer# ipconfig /flushdns # Windows

    Encaminhe as ConsultasFaa um teste de configurao com seu amigo. Por exemplo o servidor DNS pblico 213.133.105.2 ns.second-ns.de pode serusado para teste. Veja como o servidor cliente responde isso (uma simples resposta).# dig sleepyowl.netsleepyowl.net. 600 IN A 78.31.70.238;; SERVER: 192.168.51.254#53(192.168.51.254)

    O roteador 192.168.51.254 respondeu e responsvel pela entrada do A. Pouca entrada pode ser requerida e o servidor deDNS pode selecionar com @:# dig MX google.com# dig @127.0.0.1 NS sun.com # Para teste o local do servidor# dig @204.97.212.10 NS MX heise.de # Consulta externa do servidor# dig AXFR @ns1.xname.org cb.vu # Obtenha a zona cheia(zona de transferncia)

    O programa da mquina tambm poderoso.# host -t MX cb.vu # Obtenha o mail MX de entrada# host -t NS -T sun.com # Obtenha o NS da conexo TCP.# host -a sleepyowl.net # Obtenha qualquer coisa

    Consultas InversasEncontra o nome coletivo para o endereo de IP (in-addr.arpa). Isso pode ser feito dig, host e nslookup:# dig -x 78.31.70.238# host 78.31.70.238# nslookup 78.31.70.238

    /etc/hosts

    Mquinas individuais podem ser configuradas no arquivo /etc/hosts ao contrrio de executar localmente para resolver asconsultas do nome da mquina. O formato simples, por exempl78.31.70.238 sleepyowl.net sleepyowl

    A prioridade entre as mquinas e as consultas dns, a ordem das consultas de resoluo de nomes, podem ser configuradas no/etc/nsswitch.conf e /etc/host.conf. O arquivo existente do Windows, normalmente no:C:\WINDOWS\SYSTEM32\DRIVERS\ETC

    4.1 D H C P

    Linux

    Algumas distribuies (SuSE) usa dhcpcd como cliente. O padro eth0.# dhcpcd -n eth0 # Provocar uma renovao( no sempre funciona)# dhcpcd -k eth0 # lanamento e encerramento

    O arrendamento com a total informao so armazenadas no:/var/lib/dhcpcd/dhcpcd-eth0.info

    FreeBSD

    FreeBSD (e Debian) usa dhclient. Para configurar a interface (por exemplo bge0) executa:# dhclient bge0

    O arrendamento com a total informao so armazenados no:/var/db/dhclient.leases.bge0

    Usa/etc/dhclient.conf

    para preceder as opes ou forar as diferentes opes:# cat /etc/dhclient.confinterface "rl0" {

    prepend domain-name-servers 127.0.0.1;default domain-name "sleepyowl.net";supersede domain-name "sleepyowl.net";

    }

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    12/34

    Windows

    O dhcp pode ser renovado com ipconfig:# ipconfig /renew # renova todos os adaptadores# ipconfig /renew LAN # renew the adapter named "LAN"# ipconfig /release WLAN # release the adapter named "WLAN"

    Sim isto uma boa idia para renomear seu adaptador com simples nomes!

    4.2 A n l i s e d e T r f e g o

    Bmonhttp://people.suug.ch/~tgr/bmon/ um pequeno console da largura de bandas e pode exibir o fluxo de diferentes interfaces.

    Sniff com tcpdump

    # tcpdump -nl -i bge0 not port ssh and src \(192.168.16.121 or 192.168.16.54\)# tcpdump -n -i eth1 net 192.168.16.121 # select to/from a single IP# tcpdump -n -i eth1 net 192.168.16.0/24 # select traffic to/from a network# tcpdump -l > dump && tail -f dump # Buffered output# tcpdump -i rl0 -w traffic.rl0 # Write traffic headers in binary file# tcpdump -i rl0 -s 0 -w traffic.rl0 # Write traffic + payload in binary file# tcpdump -r traffic.rl0 # Read from file (also for ethereal# tcpdump port 80 # The two classic commands# tcpdump host google.com# tcpdump -i eth0 -X port \(110 or 143\) # Check if pop or imap is secure# tcpdump -n -i eth0 icmp # Only catch pings# tcpdump -i eth0 -s 0 -A port 80 | grep GET # -s 0 for full packet -A for ASCII

    Adiciona importante opes:

    -A Imprime cada pacotes na limpeza do texto (sem cabealho)-X Imprime pacotes em hex e ASCII-l Faa a linha de sada do buffer-D Imprime todas as interfaces disponveis

    No Windows usa o windump www.winpcap.org. Usa windump -D para listar as interfaces.

    Scan com nmap

    Nmaphttp://insecure.org/nmap/ a porta scanner com SO, isto normalmente so instalados nas distribuies e tambm estodisponveis para windows. Se voc no scan seus servidores, hackers fazem isso para voc...# nmap cb.vu # scans todas portas reservadas TCP na mquina# nmap -sP 192.168.16.0/24 # Procura IP de fora e so usados pela mquina na mquina 0/24# nmap -sS -sV -O cb.vu # Faz a descrio SYN scan com a verso e SO detectadasPORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 3.8.1p1 FreeBSD-20060930 (protocol 2.0)25/tcp open smtp Sendmail smtpd 8.13.6/8.13.680/tcp open http Apache httpd 2.0.59 ((FreeBSD) DAV/2 PHP/4.[...]Running: FreeBSD 5.XUptime 33.120 days (since Fri Aug 31 11:41:04 2007)

    Outro padro mais usados so as ferramentas hping (www.hping.org) um pacote IP assembler/analyzer e fping(fping.sourceforge.net). fping pode checar multiplos rund-robin fashion.

    4.3 C o n t r o l e d e t r f e g o ( Q o S )Controle de trfego gerencia a fila, polcia, programao e outros parmetros de trfego para uma rede. Os exemplos seguintesso simples usos prticos do Linux e FreeBSD capacidades para uma melhor utilizao da largura de banda disponvel. limiteupload

    Limite de upload

    Modens DSL ou de cabo tm uma longa fila para melhorar o rendimento upload. No entanto preenchendo a fila com umdispositivo rpido (ethernet, por exemplo) ir diminuir drasticamente a interatividade. Por conseguinte, til para limitar a taxade upload dispositivo para coincidir com a capacidade fsica do modem, isso deve melhorar muito a interatividade. Situado acerca de 90% da mxima modem (cabo) de velocidade.

    Linux

    Para a 512 Kbit upload modem.# tc qdisc add dev eth0 root tbf rate 480kbit latency 50ms burst 1540

    # tc -s qdisc ls dev eth0 # Status# tc qdisc del dev eth0 root # Delete the queue# tc qdisc change dev eth0 root tbf rate 220kbit latency 50ms burst 1540

    FreeBSD

    FreeBSD usa o dummynet trfego afiado que so configuradosipfw. Tubos so usados para aumentar seus limites da largura dabanda na nica do[K|M]{bit/s|Byte/s}, 0 meios ilimitados. Usando igual ao nmero do tubo reconfigurar isto. Por exemplo olimite do upload da largura da banda para 500 Kbit.# kldload dummynet # carrega os mdulos se necessrio# ipfw pipe 1 config bw 500Kbit/s # cria um tubo com limitado pela largura da banda# ipfw add pipe 1 ip from me to any # diverte todos os upload tambm pelo tubo

    Qualidade de Servio

    Linux

    Prioridade nas filas comtc para otimizar VoIP. Veja o total exemplo no voip-info.org ou www.howtoforge.com. Suposto VoIPusados udp na porta 10000:11024 e dispositivos eth0 (tambm poderia ser ppp0 ou assim). Seguindo os comandos define oQoS para as filas das rvores e fora o trfego VoIP para as filas The following commands com QoS0x1e (todos os bits). O padrodo fluxo em 3 filas e QoS Mnimo-atraso fluxo em 2 filas.# tc qdisc add dev eth0 root handle 1: prio priomap 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 0# tc qdisc add dev eth0 parent 1:1 handle 10: sfq# tc qdisc add dev eth0 parent 1:2 handle 20: sfq# tc qdisc add dev eth0 parent 1:3 handle 30: sfq# tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \match ip dport 10000 0x3C00 flowid 1:1 # usa a faixa de portas para os servidoresmatch ip dst 123.23.0.1 flowid 1:1 # e/ou usa IP do servidor

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    13/34

    Status and remove with# tc -s qdisc ls dev eth0 # status da fila# tc qdisc del dev eth0 root # deleta todos QoS

    Calcula a faixa das portas e a mscara

    O filtro tc define a faixa das portas ea mscara que voc calculou. Encontra o 2^N finalizando a faixa da porta, deduzi a faixa econverte para HEX. Essa a sua mscara. Exemplo para 10000 -> 11024, a faixa 1024.# 2^13 (8192) < 10000 < 2^14 (16384) # finalizando 2^14 = 16384# echo "obase=16;(2^14)-1024" | bc # mask is 0x3C00

    FreeBSD

    O max largura da banda 500Kbit/s e ns definimos 3 filas com a prioridade 100:10:1 para VoIP:ssh:all the rest.

    # ipfw pipe 1 config bw 500Kbit/s# ipfw queue 1 config pipe 1 weight 100# ipfw queue 2 config pipe 1 weight 10# ipfw queue 3 config pipe 1 weight 1# ipfw add 10 queue 1 proto udp dst-port 10000-11024# ipfw add 11 queue 1 proto udp dst-ip 123.23.0.1 # e/ou usa o IP do servidor# ipfw add 20 queue 2 dsp-port ssh# ipfw add 30 queue 3 from me to any # reinicia todos

    Status e remove com# ipfw list # status das regras# ipfw pipe list # status do tubo# ipfw flush # deleta todas as regras por padro

    4.4 N I S D e b u g g i n g

    Alguns comandos que deveria trabalhar ser bem configuradas NIS cliente:# ypwhich # Obtem a conexo NIS do servidor de nomes# domainname # Configura o nome do domnio NIS# ypcat group # Mostra o grupo do servidor NIS

    # cd /var/yp && make # Reconstri o yp banco de dados# rpcinfo -p servername # Relatrio de servio RPC do servidor

    Est ypbind executando?# ps auxww | grep ypbind/usr/sbin/ypbind -s -m -S servername1,servername2 # FreeBSD/usr/sbin/ypbind # Linux# yppoll passwd.bynameMapeia o passwd.byname tm outro nmero 1190635041. Seg Sep 24 13:57:21 2007O servio master servername.domain.net.

    Linux# cat /etc/yp.confypserver nomeservidordomain domain.net broadcast

    4.5 N e t c a t

    Netcathttp://netcat.sourceforge.net (nc) o melhor conhecido como "network Swiss Army Knife", isto pode ser manipulado, cria oul/escreve TCP/IP coneces. Aqui so usados alguns exemplos, l alguns mais no net, por exemplo g-loaded.eu[...]http://www.g-loaded.eu/2006/11/06/netcat-a-couple-of-useful-examples e herehttp://www.terminally-incoherent.com/blog/2007/08/07/few-useful-netcat-tricks .Voc precisa usar comandos netcat em vez de nc. Tambm veja um comando similar socat.

    Transferncia de arquivo

    Copia a largura do diretrio sobre uma conexo. A transferncia muito rpido (no em cima do protocolo) e voc no precisapara bagunar com NFS ou SMB ou FTP ou ento, faa um simples arquivo avaliado no servidor, e coloque isso no cliente. Aqui192.168.1.1 o endereo do servidor.server# tar -cf - -C VIDEO_TS . | nc -l -p 4444 # Diretrio tar na porta do servidor 4444client# nc 192.168.1.1 4444 | tar xpf - -C VIDEO_TS # Puxa o arquivo na porta 4444server# cat largefile | nc -l 5678 # O nico arquivoclient# nc 192.168.1.1 5678 > largefile # Puxa o nico arquivoserver# dd if=/dev/da0 | nc -l 4444 # Imagem da partioclient# nc 192.168.1.1 4444 | dd of=/dev/da0 # Puxa a partio para o cloneclient# nc 192.168.1.1 4444 | dd of=da0.img # Puxa a partio para o arquivo

    Outros hacks

    Especialmente aqui, voc conhece mais do que voc faz.

    Shell remota

    Opo -e somente para a verso Windows? Ou usa nc 1.10.# nc -lp 4444 -e /bin/bash # Fornece um shell remoto (servidor clandestino)# nc -lp 4444 -e cmd.exe # shell remoto para Windows

    Servidor de emergncia web

    Servidor nico arquivo na porta 80 no loop.# while true; do nc -l -p 80 < unixtoolbox.xhtml; done

    Bate-papo

    Alice e Bob pode conversar com um socket TCP simples. O texto transferido com a chave de entrada.alice# nc -lp 4444bob # nc 192.168.1.1 4444

    5 S S H S C PChave Pblica | Fingerprint | SCP |Tunelamento

    5.1 A u t e n t i c a o p o r c h a v e p b l i c a

    Conecte na m uina sem senha utilizando a autentica o or chave blica. A idia acrescentar sua chave blica ara a

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    14/34

    authorized_keys2 arquivo na mquina remota. Para isso veja o exemplo: conecte mquina-cliente para mquina-servidor, a chave gerada no cliente. Com cygwin voc poderia ter criada em sua casa um diretrio e o diretrio do .sshutilizando # mkdir -p /home/USER/.ssh

    Usa ssh-keygen para gerar o par de chaves. ~/.ssh/id_dsa is the private key, ~/.ssh/id_dsa.pub chave pblica.Copia somente a chave pblica para acrescentar o arquivo no servidor ~/.ssh/authorized_keys2 em sua casa no servidor.

    # ssh-keygen -t dsa -N ''# cat ~/.ssh/id_dsa.pub | ssh you@host-server "cat - >> ~/.ssh/authorized_keys2"

    Utilizando o cliente Windows ssh.com

    A verso no comercial do cliente ssh.com pode ser feito o download no site ftp: ftp.ssh.com/pub/ssh/. Chaves geradas pelo

    cliente ssh.com precisa ser convertido para o servidor OpenSSH. Isso pode ser feito com o comando ssh-keygenCria o par de chaves com o cliente ssh.com: Configuraes - Autenticao do Usurio - Gerar Novo...Eu uso o tipo de chave DSA; comprimento da chave 2048.Copia a gera chave pblica pelo ssh.com cliente para o servidor tambm o ~/.ssh diretrio.As chaves esto no C:\Documents and Settings\%USERNAME%\Application Data\SSH\UserKeys.Usa o comando ssh-keygen no servidor para converter a chave:# cd ~/.ssh# ssh-keygen -i -f keyfilename.pub >> authorized_keys2

    Aviso: Ns usamos a chave DSA, RSA tambm possvel. A chave no protegida por senha.

    Usando o putty para Windows

    Puttyhttp://www.chiark.greenend.org.uk/~sgtatham/putty/download.html simples e livre o cliente ssh para Windows.

    Cria o par de chaves com o programa puTTYgen.

    Salve a chave pblica (por exemplo em C:\Documents and Settings\%USERNAME%\.ssh).Copia a chave pblica para o servidor no ~/.ssh folder:# scp .ssh/puttykey.pub [email protected]:.ssh/

    Usa o comando ssh-keygen no servidor para converter a chave para OpenSSH:# cd ~/.ssh# ssh-keygen -i -f puttykey.pub >> authorized_keys2

    Ponto da chave privada localizada nas configuraes putty: Conexo - SSH - Auth

    5.2 C h e c a fi n g e r p r i n t

    No primeiro login, ssh perguntar se a mquina for desconhecida com o fingerprint tem que ser armazenada no na mquinadesconhecida. Para evitar um man-in-the-middle ataque o administrador do servidor pode ser enviado para seu servidorfingerprint que comparado no primeiro login. Usa ssh-keygen -l para obter o fingerprint (no servidor):# ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub # Para chave RSA2048 61:33:be:9b:ae:6c:36:31:fd:83:98:b7:99:2d:9f:cd /etc/ssh/ssh_host_rsa_key.pub# ssh-keygen -l -f /etc/ssh/ssh_host_dsa_key.pub # Para DSA (padro)2048 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee /etc/ssh/ssh_host_dsa_key.pub

    Agora o cliente se conectar a esse servidor, pode verificar que ele est se conectando ao servidor direito:# ssh lindaA autenticao da mquina 'linda (192.168.16.54)' no pode ser estabelecida.Chave DSA fingerprint 14:4a:aa:d9:73:25:46:6d:0a:48:35:c7:f4:16:d4:ee.Voc tem certeza que deseja continuar a conexo (sim/no)? sim

    5.3 T r a n s f e r n c i a s e g u r a d e a r q u i v o s

    Alguns comandos simples:# scp file.txt host-two:/tmp# scp joe@host-two:/www/*.html /www/tmp# scp -r joe@host-two:/www /www/tmp

    No Konqueror ou Midnight Commander isso possvel para o acesso do s istema remoto com o endereo fish://[email protected] a implementao muito lenta.Alm disso possvel para montar o diretrio remoto com sshfs um sistema de arquivo baseada no SCP. Vejasshfshttp://fuse.sourceforge.net/sshfs.html.

    5.4 T u n e l a m e n t o

    Tunelamento SSH permite o encaminhamento ou reverte para frente de uma porta atravs da conexo SSH, garantindo assim otrfego e o acesso das portas que de outra fora so bloqueadas. Isso s com TCP. A nomenclatura geral para oencaminhamento e o reverso (veja tambm ssh and NAT example):# ssh -L localport:desthost:destport user@gate # desthost como pode ser visto a partir do porto# ssh -R destport:desthost:localport user@gate # porta local encaminha para o seu destino # desthost: localport como pode ser visto a partir do cliente do incio do tnel# ssh -X user@gate # Para forar encaminhamento X

    Este conectar na porta e encaminhar a porta local para a mquina desthost: destport. Nota desthost a mquina de destinocomo pode ser visto pela porta, ento se a conexo para a porta, ento o desthost o localhost. Mais do que uma porta parao encaminhamento possvel.

    Encaminha direto para a porta

    Vamos dizer que ns queremos acessar o CVS (porta 2401) e http (porta 80) que esto executando na porta. Esse

    simplesmente exemplo, na mquina destino assim a mquina local, e ns usamor a porta 8080 localmente instanciada de 80por isso no precisa ser o root. Primeiro a sesso ssh aberta, ambos os services so acessveis nas portas locais.# ssh -L 2401:localhost:2401 -L 8080:localhost:80 usuario@porta

    Netbios e desktop remoto encaminham para um segundo servidor

    Vamos dizer que um servidor smb Windows a porta est por trs e no est executando o ssh. Ns precisamos de acesso aocompartilhamento SMB e desktop remoto tambm para o servidor.

    - -

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    15/34

    - -

    O compartilhamento SMB pode agora ser acessado com \\127.0.0.1\, mas somente se o local do compartilhamentodesabilitado, porque o local do compartilhamento ouvido na porta 139.Isto possvel para manter o local compartilhado habilitado, para isso ns precisamos criar um novo dispositivo virtual com umnovo endereo IP para o tunelamento, o compartilhamento smb conectar atravs do endereo. Alm disso o local RDP estpronto para ser ouvido na porta 3389, ento ns escolhemos 3388. Para isso vamos usar um IP virtual 10.1.1.1.

    Com putty usa-se Origem porta=10.1.1.1:139. possvel a criao mltipla de dispositivos de loop e o tnel. No Windows2000, somente putty funcionou comigo. No Windows Vista tambm encaminhar a porta 445 na adio para a porta 139.Tambm no Vista o pacote KB942624 impede a porta 445 para ser encaminhada, ento eu tive que desinstalar essepacote no Vista.Com o cliente ssh.com, desabilite "Permite somente conexo local". Desde que ssh.com vincular todos os endereos,

    apenas uma parte nica pode ser conectado.Agora cria a interface loopback com o IP 10.1.1.1:

    # Sistema->Painel de Controle->Adicionar Hardware # Sim, Hardware est pronto para ser conectado # Adiciona umnovo hardware (em baixo).# Instala o hardware que manualmente selecionado # Adaptador de Rede # Microsoft , Microsoft Adaptador Loopback.Configura o endereo IP do dispositivo falso para 10.1.1.1 mask 255.255.255.0, sem gateway.avanado->WINS, Habilita LMHosts Lookup; Desabilita NetBIOS sobre TCP/IP.# Habilita Cliente para Microsoft redes. # Desabilita compartilhamento de arquivo e impressora para a rede Microsoft.

    Tive que reiniciar para esse trabalho. Agora conecta para o compartilhamento com \\10.1.1.1 e o desktop remoto para10.1.1.1:3388.

    Debug

    Se no funcionar

    So as portas encaminhadas: netstat -an? Veja isto 0.0.0.0:139 ou 10.1.1.1:139Faz telnet 10.1.1.1 139 conectado?Voc precisa checar o box "Portas local aceita conexes de outras mquinas". o "Compartilhamento de arquivo e impressora para redes Microsoft" desabilitou na interface loopback?

    conexo de dois clientes atrs do NAT

    Suponhamos dois clientes esto fazendo o gateway NAT e o cliente cliadmin tm conexo para cliente cliusuario (destino),ambos podem logar para a porta com ssh e so executados no Linux com sshd. Voc no precisar ter acesso root emnenhum lugar desde que as portas do porto esto acima de 1024. Ns usamos 2022 na porta. Tambm porque a porta usada localmente, a opo GatewayPorts no necessrio.No cliente cliusuario (de destino para a porta):# ssh -R 2022:localhost:22 usuario@porta # encaminha o cliente 22 para a porta: 2022

    No cliente cliadmin (da mquina da porta):# ssh -L 3022:localhost:2022 admin@porta # encaminha o cliente 3022 para a porta:2022

    Agora o administrador pode ligar diretamente para o cliente cliusuario com:# ssh -p 3022 admin@localhost # local:3022 -> porta:2022 -> cliente:22

    Conecta com VNC por trs do NAT

    Suponhamos um cliente Windows VNC escutando na porta 5900 tem que ter o acesso por trs do NAT. No cliente cliwin aporta:# ssh -R 15900:localhost:5900 user@gate

    On client cliadmin (from host to gate):# ssh -L 5900:localhost:15900 admin@gate

    Agora o administrador pode conectar diretamente ao cliente VNC com:# vncconnect -display :0 localhost

    Escave um tnel ssh multi-hop

    Suponhamos que voc no possa alcanar o servidor diretamente com ssh, mas somente atravs de vrias mquinas (por

    exemplo, por causa de questes de roteamento). s vezes, ainda necessrio para obter um cliente direto - conexo com oservidor, por exemplo, para copiar arquivos com scp ou encaminhar outras portas como SMB ou VNC. Uma maneira de fazerisso a cadeia de tneis em conjunto para avanar com uma porta para o servidor ao longo do lpulo. Este transportador portos chega ao seu destino final na ltima conexo com o servidor.Suponha que queremos transmitir a porta SSH a partir de um cliente para um servidor mais de dois saltos. Uma vez que o tnel construdo, possvel se conectar ao servidor diretamente do cliente (e tambm adiciona outra porta para oencaminhamento).

    Criando tnel no shell

    cliente -> maquina1 -> maquina2 -> servidor e escavar tnel 5678cliente># ssh -L5678:localhost:5678 mquina1 # 5678 uma porta arbitraria para o tnelmaquina_1># ssh -L5678:localhost:5678 mquina2 # sequncia 5678 da mquina1 para a mquina2maquina_2># ssh -L5678:localhost:22 servidor # No final do tnel na porta 22 no servidor

    Utilizando tnel com outro shell

    cliente -> usando o tnel 5678 no servidor# ssh -p 5678 localhost # conecta diretamente do cliente para o servidor# scp -P 5678 myfile localhost:/tmp/ # ou copia o arquivo diretamente utilizando o tnel# rsync -e 'ssh -p 5678' myfile localhost:/tmp/ # ou rsync o arquivo diretamente para o servidor

    Autoconnect script e manter vivo

    Eu uso as variaes do script a seguir para manter uma mquina alcanveis por um tnel SSH reverso. A conexo automaticamente reconstruda se fechado. Voc pode adicionar vrios -L or -R tneis em uma linha.#!/bin/sh

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    16/34

    COMMAND="ssh -N -f -g -R 3022:localhost:22 [email protected]"pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMANDexit 0

    1 * * * * colin /home/colin/port_forward.sh # crontab entrada (aqui a cada hora)

    6 V P N C O M S S H

    A partir da verso 4.3, o OpenSSH pode usar o dispositivo tun/tap para encriptar um tunnel. Isto muito semelhante a outrassolues VPN baseada em TLS como o OpenVPN. Uma vantagem com o SSH que no h a necessidade de instalar econfigurar um software adcional. Alm disso o tunel utiliza a autenticao SSH como a chave compartilhada. A desvantagem que o encapsulamento feito atravs do TCP que poderiam resultar em um desempenho ruim em um link lento. Alm disso, otnel est confiando em uma nica conexo TCP (frgil). Esta tcnica muito til para a configurao rpida de uma VPN

    baseada em IP. No h nenhuma limitao quanto nica porta TCP, todas os protocolos de camadas 3/4 como o ICMP,TCP/UDP, etc so transmitidos atravs da VPN. Em qualquer caso, as seguintes opes so necessrias no arquivo sshd_conf:PermitRootLogin yesPermitTunnel yes

    6.1 C o n e x o P 2 P n i c a

    Aqui estamos conectando dois hosts, e hclient hserver com um tnel peer to peer. A conexo started from hclientpara ohserver feito como root. Os pontos de extremidade do tnel so 10.0.1.1 (servidor) e 10.0.1.2 (cliente) e criamos umdispositivo tun5 (isso tambm poderia ser um outro nmero). O procedimento muito simples:

    Conectar com SSH usando o tnel, opo-wConfigure os endereos IP do tnel. Uma vez no servidor e uma vez o cliente.

    Conectar ao servidor

    Conexo iniciada no cliente e os comandos so executados no servidor.

    Linux o Servidor

    cli># ssh -w5:5 root@hserversrv># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # Executada no shell do servidor

    FreeBSD o Servidor

    cli># ssh -w5:5 root@hserversrv># ifconfig tun5 10.0.1.1 10.0.1.2 # Executada no shell do servidor

    Configure o Cliente

    Comandos executados no cliente:cli># ifconfig tun5 10.0.1.2 netmask 255.255.255.252 # Cliente um Linuxcli># ifconfig tun5 10.0.1.2 10.0.1.1 # Cliente um FreeBSD

    Os dois hosts esto conectados de forma transparente e podem se comunicar com qualquer protocolo de camada 3/4 usandoos endereos IP do tnel.

    6.2 C o n e c t a r D u a sR e d e sAlm da instalao p2p acima, mais til conectar duas redes provadas com uma VPN SSH usando dois gateways. Supondo oexemplo, netA 192.168.51.0/24 e netB 192.168.16.0/24. O procedimento semelhante ao citado acima, ns precisamossomente adicionar o roteamento. O NAT deve ser ativado na interface privada somente se os gateways no so padro da suarede.192.168.51.0/24 (netA)|gatewayA gatewayB|192.168.16.0/24 (netB)

    Conectar com SSH usando o tnel, opo-wConfigure os endereos IP do tnel. Uma vez no servidor e uma vez o cliente.Adicione o roteamento para as duas redes.Se necessrio, ative o NAT na interface privada do gateway.

    A instalao started from gatewayA in netA.

    Conectar do GatewayA para o GatewayB

    A conexo iniciada a partir gatewayA e os comandos so executados em gatewayB

    GatewayB o Linux

    gatewayA># ssh -w5:5 root@gateBgatewayB># ifconfig tun5 10.0.1.1 netmask 255.255.255.252 # Executada no shell do GatewayBgatewayB># route add -net 192.168.51.0 netmask 255.255.255.0 dev tun5gatewayB># echo 1 > /proc/sys/net/ipv4/ip_forward # Somente necessrio se o gateway no for padrogatewayB># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    GatewayB o FreeBSD

    gatewayA># ssh -w5:5 root@gateB # Cria o dispositivo tun5gatewayB># ifconfig tun5 10.0.1.1 10.0.1.2 # Executada no shell do GatewayBgatewayB># route add 192.168.51.0/24 10.0.1.2gatewayB># sysctl net.inet.ip.forwarding=1 # Somente necessrio se o gateway no for padrogatewayB># natd -s -m -u -dynamic -n fxp0 # veja NATgatewayA># sysctl net.inet.ip.fw.enable=1

    Configure GatewayA

    Comando executado no GatewayA

    GatewayA o Linux

    gatewayA># ifconfig tun5 10.0.1.2 netmask 255.255.255.252gatewayA># route add -net 192.168.16.0 netmask 255.255.255.0 dev tun5gatewayA># echo 1 > /proc/sys/net/ipv4/ip_forwardgatewayA># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    17/34

    GatewayA o FreeBSD

    gatewayA># ifconfig tun5 10.0.1.2 10.0.1.1gatewayA># route add 192.168.16.0/24 10.0.1.2gatewayA># sysctl net.inet.ip.forwarding=1gatewayA># natd -s -m -u -dynamic -n fxp0 # veja NATgatewayA># sysctl net.inet.ip.fw.enable=1

    Agora as duas redes privadas esto conectadas transparentemente via VPN SSH. O NAT soemten necessrio se os gatewaysno forem o padro da rede. Neste caso os clientes no sabem para onde encaminhar a resposta,e o nat dever ser ativado.

    7 R S Y N C

    Rsync quase pode substituir completamente o cp e scp, alm disso, se interromper as transferncias so eficientementereiniciado. A pgina do manual boa... Aqui alguns Exemplos:Copia o contedo completo do diretrio:# rsync -a /home/colin/ /backup/colin/ # modo "arquivo". manter o mesmo# rsync -a /var/ /var_bak/# rsync -aR --delete-during /home/user/ /backup/ # utilizao relativa (veja abaixo)

    Mesmo que a anterior, porm sobre a rede com com compresso. O Rsync usa o SSH por padro para o transporte e usar aschaves ssh se for definido. Use ":" como o SCP. Uma tpica cpia remota:# rsync -axSRzv /home/user/ user@server:/backup/user/ # Cpia remota# rsync -a 'user@server:My\ Documents' My\ Documents # Simula a cpia para uma shell remota

    Excluir qualquer diretrio tmp dentro de /home/user/ e manter a hierarquia de pastas relativa, que o diretrio remoto ter aestrutura /backup/home/user/. Isto tipicamente usado para backups.# rsync -azR --exclude=tmp/ /home/user/ user@server:/backup/

    Usa a porta 20022 para a conexo ssh:# rsync -az -e 'ssh -p 20022' /home/colin/ user@server:/backup/colin/

    Usando o daemon rsync (usado com "::") muito rpido, porm no encriptografados por ssh. A localizao do /backup definido pela configurao em /etc/rsyncd.conf. A varivel RSYNC_PASSWORD pode ser ajustado para evitar a necessidade dedigitar a senha manualmente.# rsync -axSRz /home/ ruser@hostname::rmodule/backup/# rsync -axSRz ruser@hostname::rmodule/backup/ /home/ # Para copiar de volta

    Algumas opes importantes:

    -a, --archive modo arquivo; mesmo que -rlptgoD (sem -H)-r, --recursive recursivo em diretrios-R, --relative usar nome de diretrios relativo-H, --hard-links preserva os links-S, --sparse manipula os arquivos de forma eficiente-x, --one-file-system no atravessa o limite do sistema de arquivos--exclude=PATTERN Exclui os arquivos padres--delete-during exclui receptor durante xfer, no antes--delete-after exclui receptor aps a transferncia, no antes

    7.1 R s y n c e m W i n d o w sRsync est disponvel para Windows atravs do Cygwin ou empacotado em cwrsynchttp://sourceforge.net/projects/sereds. Isto muito conveniente para backups automatizados. Instalar um deles (not both) e adicione o caminho para as variveis do sistemaWindows: # Painel de controle -> Sistema -> aba Avanado, boto Variveis de Ambiente. Edite a "Pasta" variveis de sistema eadicione o caminho completo para o rsync instalado, exemplo: C:\Program Files\cwRsync\bin ou C:\cygwin\bin. Desta forma oscomandos rsync e ssh esto disponveis no shell do Windows.

    Autenticao via Chave Pblica

    Rsync automaticamente encapsulada por SSH e, portanto, usa a autenticao no servidor SSH. os backups automticos paraevitar a interao do usurio usa autenticao SSH via chave pblica e pode ser usado o comando rsync que ser executadosem uma senha.Todos os seguintes comandos so executados dentro de um console do Windows. Em um console (Iniciar -> Executar ->cmd) crie e carregue a chave conforme descrito no SSH, altere o "user" e "server" as appropriate. If the file authorized_keys2does not exist yet, simply copy id_dsa.pub to authorized_keys2 and upload it.conforme o caso. Se o arquivo authorized_keys2ainda no existe, basta copiar id_dsa.pub para authorized_keys2 e carreg-lo.# ssh-keygen -t dsa -N '' # Cria a chave pblica e privada# rsync user@server:.ssh/authorized_keys2 . # Copia o arquivo localmente do server# cat id_dsa.pub >> authorized_keys2 # Ou usar um editor para adicionar a chave# rsync authorized_keys2 user@server:.ssh/ # Copia o arquivo de volta para o server# del authorized_keys2 # Remove a cpia local

    Agora teste com (em uma linha):rsync -rv "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \'user@server:My\ Documents/'

    Backup Automtico

    Use um arquivo em lotes para automatizar o backup e adicionar o arquivo nas tarefas agendadas (Programas -> Acessrios ->Ferramentas do Systema -> Tarefas Agendadas). Por exemplo crie o arquivo backup.bat e substitua user@server.@ECHO OFFREM rsync o diretrio My DocumentsSETLOCALSET CWRSYNCHOME=C:\PROGRAM FILES\CWRSYNCSET CYGWIN=nontsecSET CWOLDPATH=%PATH%

    REM descomente a linha seguinte, se usar cygwinSET PATH=%CWRSYNCHOME%\BIN;%PATH%echo Pressione Control-C para Abortarrsync -av "/cygdrive/c/Documents and Settings/%USERNAME%/My Documents/" \'user@server:My\ Documents/'pause

    8 S U D O

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    18/34

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    19/34

    # gpg --gen-key # This can take a long time

    The keys are stored in ~/.gnupg/ on Unix, on Windows they are typically stored inC:/Documents and Settings/%USERNAME%/Application Data/gnupg/.~/.gnupg/pubring.gpg # Contains your public keys and all others imported~/.gnupg/secring.gpg # Can contain more than one private key

    Short reminder on most used options:

    -e encrypt data-d decrypt data-r NAME encrypt for recipient NAME (or 'Full Name' or 'email@domain')-a create ascii armored output of a key-o use as output file

    The examples use 'Your Name' and 'Alice' as the keys are referred to by the email or full name or partial name. For example I canuse 'Colin' or '[email protected]' for my key [Colin Barschel (cb.vu) ].

    Encrypt for personal use only

    No need to export/import any key for this. You have both already.# gpg -e -r 'Your Name' file # Encrypt with your public key# gpg -o file -d file.gpg # Decrypt. Use -o or it goes to stdout

    Encrypt - Decrypt with keys

    First you need to export your public key for someone else to use it. And you need to import the public say from Alice to encrypta file for her. You can either handle the keys in simple ascii files or use a public key server.For example Alice export her public key and you import it, you can then encrypt a file for her. That is only Alice will be able todecrypt it.# gpg -a -o alicekey.asc --export 'Alice' # Alice exported her key in ascii file.

    # gpg --send-keys --keyserver subkeys.pgp.net KEYID # Alice put her key on a server.# gpg --import alicekey.asc # You import her key into your pubring.# gpg --search-keys --keyserver subkeys.pgp.net 'Alice' # or get her key from a server.

    Once the keys are imported it is very easy to encrypt or decrypt a file:# gpg -e -r 'Alice' file # Encrypt the file for Alice.# gpg -d file.gpg -o file # Decrypt a file encrypted by Alice for you.

    Key administration# gpg --list-keys # list public keys and see the KEYIDS The KEYID follows the '/' e.g. for: pub 1024D/D12B77CE the KEYID is D12B77CE# gpg --gen-revoke 'Your Name' # generate revocation certificate# gpg --list-secret-keys # list private keys# gpg --delete-keys NAME # delete a public key from local key ring# gpg --delete-secret-key NAME # delete a secret key from local key ring# gpg --fingerprint KEYID # Show the fingerprint of the key# gpg --edit-key KEYID # Edit key (e.g sign or add/del email)

    1 0E N C R Y P T P A R T I T I O NLinux with LUKS | Linux dm-crypt only | FreeBSD GELI | FBSD pwd only

    There are (many) other alternative methods to encrypt disks, I only show here the methods I know and use. Keep in mind thatthe security is only good as long the OS has not been tempered with. An intruder could easily record the password from thekeyboard events. Furthermore the data is freely accessible when the partition is attached and will not prevent an intruder tohave access to it in this state.

    1 0.1 L i n u x

    Those instructions use the Linuxdm-crypt (device-mapper) facility available on the 2.6 kernel. In this example, lets encrypt thepartition /dev/sdc1, it could be however any other partition or disk, or USB or a file based partition created with losetup. In thiscase we would use /dev/loop0. See file image partition. The device mapper uses labels to identify a partition. We use sdc1 in thisexample, but it could be any string.

    dm-crypt with LUKS

    LUKS with dm-crypt has better encryption and makes it possible to have multiple passphrase for the same partition or to changethe password easily. To test if LUKS is available, simply type # cryptsetup --help, if nothing about LUKS shows up, use theinstructions below Without LUKS. First create a partition if necessary: fdisk /dev/sdc.

    Create encrypted partition

    # dd if=/dev/urandom of=/dev/sdc1 # Optional. For paranoids only (takes days)# cryptsetup -y luksFormat /dev/sdc1 # This destroys any data on sdc1# cryptsetup luksOpen /dev/sdc1 sdc1# mkfs.ext3 /dev/mapper/sdc1 # create ext3 file system# mount -t ext3 /dev/mapper/sdc1 /mnt# umount /mnt# cryptsetup luksClose sdc1 # Detach the encrypted partition

    Attach

    # cryptsetup luksOpen /dev/sdc1 sdc1# mount -t ext3 /dev/mapper/sdc1 /mnt

    Detach

    # umount /mnt# cryptsetup luksClose sdc1

    dm-crypt without LUKS# cryptsetup -y create sdc1 /dev/sdc1 # or any other partition like /dev/loop0# dmsetup ls # check it, will display: sdc1 (254, 0)# mkfs.ext3 /dev/mapper/sdc1 # This is done only the first time!# mount -t ext3 /dev/mapper/sdc1 /mnt# umount /mnt/

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    20/34

    # cryptsetup remove sdc1 # Detach the encrypted partition

    Do exactly the same (without the mkfs part!) to re-attach the partition. If the password is not correct, the mount command willfail. In this case simply remove the map sdc1 (cryptsetup remove sdc1) and create it again.

    1 0.2 F r e e B S D

    The two popular FreeBSD disk encryption modules are gbde and geli. I now use geli because it is faster and also uses the cryptodevice for hardware acceleration. See The FreeBSD handbook Chapter 18.6http://www.freebsd.org/handbook/disks-encrypting.html for allthe details. The geli module must be loaded or compiled into the kernel:options GEOM_ELIdevice crypto # or as module:# echo 'geom_eli_load="YES"' >> /boot/loader.conf # or do: kldload geom_eli

    Use password and keyI use those settings for a typical disk encryption, it uses a passphrase AND a key to encrypt the master key. That is you needboth the password and the generated key /root/ad1.key to attach the partition. The master key is stored inside the partition andis not visible. See below for typical USB or file based image.

    Create encrypted partition

    # dd if=/dev/random of=/root/ad1.key bs=64 count=1 # this key encrypts the mater key# geli init -s 4096 -K /root/ad1.key /dev/ad1 # -s 8192 is also OK for disks# geli attach -k /root/ad1.key /dev/ad1 # DO make a backup of /root/ad1.key# dd if=/dev/random of=/dev/ad1.eli bs=1m # Optional and takes a long time# newfs /dev/ad1.eli # Create file system# mount /dev/ad1.eli /mnt

    Attach

    # geli attach -k /root/ad1.key /dev/ad1# fsck -ny -t ffs /dev/ad1.eli # In doubt check the file system# mount /dev/ad1.eli /mnt

    Detach

    The detach procedure is done automatically on shutdown.# umount /mnt# geli detach /dev/ad1.eli

    /etc/fstab

    The encrypted partition can be configured to be mounted with /etc/fstab. The password will be prompted when booting. Thefollowing settings are required for this example:# grep geli /etc/rc.confgeli_devices="ad1"geli_ad1_flags="-k /root/ad1.key"# grep geli /etc/fstab/dev/ad1.eli /home/private ufs rw 0 0

    Use password only

    It is more convenient to encrypt a USB stick or file based image with a passphrase only and no key. In this case it is notnecessary to carry the additional key file around. The procedure is very much the same as above, simply without the key file.Let's encrypt a file based image /cryptedfile of 1 GB.# dd if=/dev/zero of=/cryptedfile bs=1M count=1000 # 1 GB file# mdconfig -at vnode -f /cryptedfile# geli init /dev/md0 # encrypts with password only# geli attach /dev/md0# newfs -U -m 0 /dev/md0.eli# mount /dev/md0.eli /mnt# umount /dev/md0.eli# geli detach md0.eli

    It is now possible to mount this image on an other system with the password only.# mdconfig -at vnode -f /cryptedfile# geli attach /dev/md0# mount /dev/md0.eli /mnt

    1 1S S L C E R T I F I C A T E S

    So called SSL/TLS certificates are cryptographic public key certificatesand are composed of a public and a private key. Thecertificates are used to authenticate the endpoints and encrypt the data. They are used for example on a web server (https) ormail server (imaps).

    1 1.1 P r o c e d u r e

    We need a certificate authority to sign our certificate. This step is usually provided by a vendor like Thawte, Verisign, etc.,however we can also create our own.Create a certificate signing request. This request is like an unsigned certificate (the public part) and already contains allnecessary information. The certificate request is normally sent to the authority vendor for signing. This step also createsthe private key on the local machine.Sign the certificate with the certificate authority.If necessary join the certificate and the key in a single file to be used by the application (web server, mail server etc.).

    1 1.2 C o n fi g u r e O p e n S S L

    We use /usr/local/certs as directory for this example check or edit /etc/ssl/openssl.cnf accordingly to your settings so you knowwhere the files will be created. Here are the relevant part of openssl.cnf:[ CA_default ]dir = /usr/local/certs/CA # Where everything is keptcerts = $dir/certs # Where the issued certs are keptcrl_dir = $dir/crl # Where the issued crl are keptdatabase = $dir/index.txt # database index file.

    Make sure the directories exist or create them

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    21/34

    # mkdir -p /usr/local/certs/CA# cd /usr/local/certs/CA# mkdir certs crl newcerts private# echo "01" > serial # Only if serial does not exist# touch index.txt

    If you intend to get a signed certificate from a vendor, you only need a certificate signing request (CSR). This CSR will then besigned by the vendor for a limited time (e.g. 1 year).

    1 1.3 C r e a t e a c e r t i fi c a t e a u t h o r i t y

    If you do not have a certificate authority from a vendor, you'll have to create your own. This step is not necessary if one intend touse a vendor to sign the request. To make a certificate authority (CA):# openssl req -new -x509 -days 730 -config /etc/ssl/openssl.cnf \

    -keyout CA/private/cakey.pem -out CA/cacert.pem

    1 1.4 C r e a t e a c e r t i fi c a t e s i g n i n g r e q u e s t

    To make a new certificate (for mail server or web server for example), first create a request certificate with its private key. If yourapplication do not support encrypted private key (for example UW-IMAP does not), then disable encryption with -nodes.# openssl req -new -keyout newkey.pem -out newreq.pem \-config /etc/ssl/openssl.cnf# openssl req -nodes -new -keyout newkey.pem -out newreq.pem \-config /etc/ssl/openssl.cnf # No encryption for the key

    Keep this created CSR (newreq.pem) as it can be signed again at the next renewal, the signature onlt will limit the validity of thecertificate. This process also created the private key newkey.pem.

    1 1.5 S i g n t h e c e r t i fi c a t e

    The certificate request has to be signed by the CA to be valid, this step is usually done by the vendor.Note: replace"servername" with the name of your server in the next commands.# cat newreq.pem newkey.pem > new.pem# openssl ca -policy policy_anything -out servernamecert.pem \-config /etc/ssl/openssl.cnf -infiles new.pem# mv newkey.pem servernamekey.pem

    Now servernamekey.pem is the private key and servernamecert.pem is the server certificate.

    1 1.6 C r e a t e u n i t e d c e r t i fi c a t e

    The IMAP server wants to have both private key and server certificate in the same file. And in general, this is also easier tohandle, but the file has to be kept securely!. Apache also can deal with it well. Create a file servername.pem containing both thecertificate and key.

    Open the private key (servernamekey.pem) with a text editor and copy the private key into the "servername.pem" file.Do the same with the server certificate (servernamecert.pem).

    The final servername.pem file should look like this:

    -----BEGIN RSA PRIVATE KEY-----MIICXQIBAAKBgQDutWy+o/XZ/[...]qK5LqQgT3c9dU6fcR+WuSs6aejdEDDqBRQ-----END RSA PRIVATE KEY----------BEGIN CERTIFICATE-----MIIERzCCA7CgAwIBAgIBBDANB[...]iG9w0BAQQFADCBxTELMAkGA1UEBhMCREUx-----END CERTIFICATE-----

    What we have now in the directory /usr/local/certs/:

    CA/private/cakey.pem(CA server private key)CA/cacert.pem (CA server public key)certs/servernamekey.pem (server private key)certs/servernamecert.pem (server signed certificate)certs/servername.pem (server certificate with private key)

    Keep the private key secure!

    1 1.7 V i e w c e r t i fi c a t e i n f o r m a t i o nTo view the certificate information simply do:# openssl x509 -text -in servernamecert.pem # View the certificate info# openssl req -noout -text -in server.csr # View the request info# openssl s_client -connect cb.vu:443 # Check a web server certificate

    1 2C V SServer setup | CVS test | SSH tunneling | CVS usage

    1 2.1 S e r v e r s e t u p

    Initiate the CVS

    Decide where the main repository will rest and create a root cvs. For example /usr/local/cvs (as root):# mkdir -p /usr/local/cvs# setenv CVSROOT /usr/local/cvs # Set CVSROOT to the new location (local)# cvs init # Creates all internal CVS config files# cd /root# cvs checkout CVSROOT # Checkout the config files to modify them# cd CVSROOTedit config ( fine as it is)# cvs commit configcat >> writers # Create a writers file (optionally also readers)colin^D # Use [Control][D] to quit the edit# cvs add writers # Add the file writers into the repository# cvs edit checkoutlist

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    22/34

    # cat >> checkoutlistwriters^D # Use [Control][D] to quit the edit# cvs commit # Commit all the configuration changes

    Add a readers file if you want to differentiate read and write permissionsNote: Do not (ever) edit files directly into the main cvs,but rather checkout the file, modify it and check it in. We did this with the file writers to define the write access.There are three popular ways to access the CVS at this point. The first two don't need any further configuration. See theexamples on CVSROOT below for how to use them:

    Direct local access to the file system. The user(s) need sufficient file permission to access the CS directly and there is nofurther authentication in addition to the OS login. However this is only useful if the repository is local.Remote access with ssh with the ext protocol. Any use with an ssh shell account and read/write permissions on the CVSserver can access the CVS directly with ext over ssh without any additional tunnel. There is no server process running on

    the CVS for this to work. The ssh login does the authentication.Remote access with pserver (default port: 2401/tcp). This is the preferred use for larger user base as the users areauthenticated by the CVS pserver with a dedicated password database, there is therefore no need for local usersaccounts. This setup is explained below.

    Network setup with inetd

    The CVS can be run locally only if a network access is not needed. For a remote access, the daemon inetd can start the pserverwith the following line in /etc/inetd.conf (/etc/xinetd.d/cvs on SuSE):cvspserver stream tcp nowait cvs /usr/bin/cvs cvs \--allow-root=/usr/local/cvs pserver

    It is a good idea to block the cvs port from the Internet with the firewall and use an ssh tunnel to access the repository remotely.

    Separate authentication

    It is possible to have cvs users which are not part of the OS (no local users). This is actually probably wanted too from thesecurity point of view. Simply add a file named passwd (in the CVSROOT directory) containing the users login and password in

    the crypt format. This is can be done with the apache htpasswd tool.Note: This passwd file is the only file which has to be editeddirectly in the CVSROOT directory. Also it won't be checked out.More info with htpasswd --help# htpasswd -cb passwd user1 password1 # -c creates the file# htpasswd -b passwd user2 password2

    Now add :cvs at the end of each line to tell the cvs server to change the user to cvs (or whatever your cvs server is runningunder). It looks like this:# cat passwduser1:xsFjhU22u8Fuo:cvsuser2:vnefJOsnnvToM:cvs

    1 2.2 T e s t i t

    Test the login as normal user (for example here me)# cvs -d :pserver:[email protected]:/usr/local/cvs loginLogging in to :pserver:[email protected]:2401/usr/local/cvsCVS password:

    CVSROOT variable

    This is an environment variable used to specify the location of the repository we're doing operations on. For local use, it can bejust set to the directory of the repository. For use over the network, the transport protocol must be specified. Set the CVSROOTvariable with setenv CVSROOT string on a csh, tcsh shell, or with export CVSROOT=string on a sh, bash shell.# setenv CVSROOT :pserver:@:/cvsdirectoryFor example:# setenv CVSROOT /usr/local/cvs # Used locally only# setenv CVSROOT :local:/usr/local/cvs # Same as above# setenv CVSROOT :ext:user@cvsserver:/usr/local/cvs # Direct access with SSH# setenv CVS_RSH ssh # for the ext access# setenv CVSROOT :pserver:[email protected]:/usr/local/cvs # network with pserver

    When the login succeeded one can import a new project into the repository: cd into your project root directorycvs import cvs -d :pserver:[email protected]:/usr/local/cvs import MyProject MyCompany START

    Where MyProject is the name of the new project in the repository (used later to checkout). Cvs will import the current directory

    content into the new project.

    To checkout:# cvs -d :pserver:[email protected]:/usr/local/cvs checkout MyProjector# setenv CVSROOT :pserver:[email protected]:/usr/local/cvs# cvs checkout MyProject

    1 2.3 S S H t u n n e l i n g f o r C V S

    We need 2 shells for this. On the first shell we connect to the cvs server with ssh and port-forward the cvs connection. On thesecond shell we use the cvs normally as if it where running locally.on shell 1:# ssh -L2401:localhost:2401 colin@cvs_server # Connect directly to the CVS server. Or:# ssh -L2401:cvs_server:2401 colin@gateway # Use a gateway to reach the CVS

    on shell 2:

    # setenv CVSROOT :pserver:colin@localhost:/usr/local/cvs# cvs loginLogging in to :pserver:colin@localhost:2401/usr/local/cvsCVS password:# cvs checkout MyProject/src

    1 2.4 C V S c o m m a n d s a n d u s a g e

    Import

  • 7/28/2019 Caixa de Ferramentas UNIX.pdf

    23/34

    The import command is used to add a whole directory, it must be run from within the directory to be imported. Say the directory/devel/ contains all file