terça-feira, 24 de maio de 2016

Configurando Interface e desabilitando ipv6 no Debian 8 Jessie

Mudar para o endereço IP estático, se você usar o Debian como um servidor.


root@dlp:~#
vi /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
# comment out

#
iface eth0 inet dhcp
# add follows

iface eth0 inet static
address 10.0.0.30
# IP address

network 10.0.0.0
# network address

netmask 255.255.255.0
# subnet mask

broadcast 10.0.0.255
# broadcast address

gateway 10.0.0.1
# default gateway

dns-nameservers 10.0.0.10
# name server
root@dlp:~#
systemctl restart ifup@eth0

Desabilitar IPv6 caso necessário.

root@dlp:~#echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf

root@dlp:~#sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1

root@dlp:~#ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0c:29:9d:56:58
          inet addr:10.0.0.30  Bcast:10.0.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:346 errors:0 dropped:0 overruns:0 frame:0
          TX packets:263 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:33839 (33.0 KiB)  TX bytes:32449 (31.6 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

segunda-feira, 16 de maio de 2016

Montando partições automaticamente

Entendendo o FSTAB

Quem usa Windows e Linux no mesmo computador (dual boot) com certeza já usou o comando mount para poder "enxergar" os arquivos do Windows no Linux. Com o passar do tempo fica muito cansativo ter que ficar digitando o mesmo comando toda vez que o Linux é iniciado. Seria muito bom se o sistema de arquivos fosse montado automaticamente na inicialização e com o arquivo fstab isso é possível.

O arquivo /etc/fstab é responsável pela entrada de partições e/ou dispositivos que possuam os sistemas de arquivos. Abaixo segue um exemplo do arquivo /etc/fstab:

# cat /etc/fstab

/dev/hda3     swap         swap       defauts                  0   0
/dev/hda2     /            reiserfs   defaults                 0   0
/dev/fd0      /mnt/floppy  auto       defaults,user,noauto     0   0
/dev/cdrom    /mnt/cdrom   iso9660    defaults,user,noauto,ro  0   0




Coluna 3 - Curto e grosso, é onde informamos o sistema de arquivo do disco/partição. Temos disponíveis "algumas" opções:

adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs.

Para mais tipos de sistema e detalhes, veja a página de manual do mount:

$ man mount

Uma ressalva a fazer é a opção "auto", que diz para o sistema automaticamente detectar o sistema de arquivo presente na partição.
É possível excluir ou adicionar partições e/ou dispositivos seguindo os seguintes significados das colunas:

1ª Coluna
Especificação do arquivo do dispositivo que será montado.


2ª Coluna

É o local (diretório) onde o dispositivo especificado na 1ª será montado, Ex:

Disco 1: /boot, /, /var e o Swap
Disco 2: /home
Disco 3: /backup
Disco 4: /backup2 


3ª Coluna
É o tipo de sistema sistema de arquivos.

    ext2 - Sistema de arquivos do Linux;
    ext3 - Sistema de arquivos journaling (ext2 + journaling);
    reiserfs - Sistema de arquivos journaling do Linux;
    msdos - Sistema de arquivos MS-DOS;
    vfat - Sistema de arquivos Win9x;
    ntfs - Sistema de arquivos Win2k, XP;
    iso9660 - Sistema de arquivos do CD-ROM;
    auto - Detecta o tipo de sistema automaticamente.

e outros:

adfs, affs, autofs, coda, coherent, cramfs, devpts, efs, ext2, ext3, hfs, hpfs, iso9660, jfs, minix, msdos, ncpfs, nfs, ntfs, proc, qnx4, reiserfs, romfs, smbfs, sysv, tmpfs, udf, ufs, umsdos, vfat, xenix, xfs.


 
Para mais tipos de sistema e detalhes, veja a página de manual do mount:
$ man mount

4ª ColunaA coluna 4 descreve as opções de montagem da partição/disco associadas ao sistema de ficheiros. Aqui podemos fazer várias configurações afim de personalizarmos nosso sistema.

Uma opção muito utilizada por administradores de sistemas é a opção de bloquear o uso da unidade de disquetes e cdrom (não que eu seja de acordo, sou a favor da liberdade).

Vamos as opções:

  • auto, noauto - Diz para o sistema se deve ou não montar automaticamente. Se colocar a opção "auto", o sistema irá montar no boot, se estiver "noauto", terá que montar o disco/partição manualmente. Default: auto.
  • user, nouser - Aqui é onde permitimos ou não os usuários montarem o disco/partição. Colocando "user", qualquer usuário consegue montar, se colocarmos "nouser", apenas o super usuário conseguirá montar (root). Default: user.
  • exec, noexec - Permite ou não a execução de binários no sistema de arquivos. Default: exec (imagine que, por engano, coloque noexec no /).
  • rw - Monta o sistema de ficheiros com a opção Read-Write, ou seja, leitura e escrita.
  • ro - Monta o sistema de ficheiros com a opção Read-Only, ou seja, somente leitura.
  • sync, async - Diz ao sistema como deve ser a sincronização de dados (Input/output). Explicando melhor, diz como o sistema deve proceder quando tem que escrever no disco, se deve guardar em memória primeiro, aguardar confirmação e então escrever ou se escreve directamente (fisicamente) no disco/partição/disquete.

    Um exemplo, são as "pendrives", quando você escreve um documento de texto na sua pen, se estiver a opção sync, o sistema escreve na hora o documento na pen, se estiver async, o sistema apenas escreve o documento quando você for desmontar a pen. O grande problema coloca-se quando o utilizador esquece de desmontar o drive. Default: async.
  • suid, nosuid - Habilita/desabilita o bit de set-user-identifier ou set-group-identifier.
  • defaults - Diz ao sistema para carregar as opções padrão, que são: rw, suid, dev, exec, auto, nouser e async.

5ª Coluna


Dump para o dispositivo.Esta coluna é a opção de dump do sistema, que nada mais é do que um utilitário de backup do sistema. O dump "lê" aqui o número e decide se o sistema deve ou não ser feito backup. Se estiver 0 (zero), o dump simplesmente ignora o disco/partição. 

    0 - Não faz dump;
    1 - Faz dump.


6ª Coluna
Verificação e reparo do dispositivo.
Esta coluna é utilizada pelo fsck para a verificação dos discos/partições. Partições/discos de sistema normalmente tem esta opção como 1, outras partições do sistema como 2. Sistemas de arquivos no mesmo disco são verificados sequencialmente, enquanto que sistemas de arquivos em discos diferentes são verificados ao mesmo tempo, utilizando a função de paralelismo (se o hardware permitir). Se colocar esta opção como 0 (zero), o fsck conclui não ser necessário a verificação aqui.     

0 - Não faz a verificação e reparo.
1 - Faz a verificação e reparo.
 

Montando os dispositivos

Vamos imaginar o seguinte cenário: você tem o Windows e o Linux instalados no seu HD de 40GB, teoricamente você teria 3 partições: 1 ntfs ou fat para Windows, 1 ext2, ext3 etc e 1 swap, ambas para o Linux. E se quisermos montar a partição Windows no Linux automaticamente toda vez que ele for iniciado?

Primeiro crie um diretório que será usado para montar o dispositivo:

# mkdir /mnt/windows

Agora acrescente a seguinte linha no /etc/fstab:

mount /dev/hda1  /mnt/windows    ntfs   defaults,user,auto    0  0

Essa linha monta o conteúdo do hda1 (c:) dentro do diretório /mnt/windows automaticamente, que pode montado/desmontado por qualquer usuário do sistema. Detalhe: quando o tipo de partição for ntfs, será necessário colocar o rw na 4ª coluna, caso contrário você não poderá criar ou excluir arquivos e/ou pastas. Ex:

mount /dev/hda1    /mnt/windows    ntfs    defaults,user.rw,auto    0    0 
Exemplo do meu fstab:
cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>

#Entry for /dev/sda6 :
UUID=7ef92b10-48c6-44c3-b5fd-5056f3774ea0    /    ext4    errors=remount-ro    0    1
 
#Entry for /dev/sda3 :
UUID=2CA42702A426CE60    /media/Dados    ntfs-3g    defaults,locale=pt_BR.UTF-8    0    0
 
#Entry for /dev/sda5 :
UUID=8f22e3df-9de3-4a71-a4a1-99cfea9ee734    none    swap    sw    0    0
Comando para descobrir o UUID do Disco:
ls -lh /dev/disk/by-uuid/*
ou
sudo blkid

VNC (Virtual Network Computing) Raspberry Pi

Às vezes não é conveniente para trabalhar diretamente sobre o Raspberry Pi. Talvez você gostaria de trabalhar com ele a partir de outro computador por controle remoto.
VNC é um sistema de compartilhamento de desktop gráfico que lhe permite controlar remotamente a interface de desktop de um computador a partir de outro. Ele transmite os eventos de teclado e mouse do controlador, e recebe atualizações para a tela através da rede do host remoto.
Você verá a área de trabalho do Raspberry Pi dentro de uma janela no seu computador. Você será capaz de controlá-lo como se você estivesse trabalhando no próprio Raspberry Pi.
  • Em seu Pi (usando um monitor ou via SSH ), instale o pacote TightVNC:
     sudo apt-get install tightvncserver 
     
  • Em seguida, execute TightVNC servidor que irá pedir-lhe para digitar uma senha e uma vista só de senha opcional:
     tightvncserver 
     
  • Iniciar um servidor VNC a partir do terminal: Este exemplo inicia uma sessão em exibição VNC (uma :1 ) com resolução full HD:
     
     vncserver :1 -geometry 1920x1080 -depth 24 
     
    Note-se que, uma vez por padrão uma sessão X é iniciada no visor zero, você receberá um erro no caso de você usar :0 .
     
  • Desde há agora dois X sessões em execução, o que, normalmente, seria um desperdício de recursos, sugere-se para parar o displaymanager execução em :0 usando
     service lightdm stop 
     
  • Agora, no seu computador, instalar e executar o cliente VNC:
    • Em uma máquina Linux instalar o pacote xtightvncviewer
     
     sudo apt-get install xtightvncviewer 
     
    • Caso contrário, TightVNC está disponível para download a partir tightvnc.com

Automação e execução durante o boot

Você pode criar um arquivo simples com o comando para executar o servidor VNC na Pi, para salvar ter que se lembrar que:
  • Criar um arquivo que contém o seguinte script shell:
     #!/bin/sh vncserver :1 -geometry 1920x1080 -depth 24 -dpi 96 
     
  • Salve como vnc.sh (por exemplo)
     
  • Torne o arquivo executável:
     chmod +x vnc.sh 
     
  • Em seguida, você pode executá-lo a qualquer momento com:
     ./vnc.sh 
     
  • Se preferir o ponteiro do mouse no cliente de VNC para aparecer como uma seta em oposição a um "x", que é padrão, no /home/pi/.vnc/xstartup adicione o seguinte parâmetro para xsetroot :
     -cursor_name left_ptr 
Para rodar na inicialização:
  • Faça login em um terminal no Pi como root:
     sudo su 
     
  • Navegue até o diretório /etc/init.d/ :
     cd /etc/init.d/ 
     
  • Criar um novo arquivo aqui contendo o seguinte script:

    #! /bin/sh
    # /etc/init.d/vncboot
    
    ### BEGIN INIT INFO
    # Provides: vncboot
    # Required-Start: $remote_fs $syslog
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: Start VNC Server at boot time
    # Description: Start VNC Server at boot time.
    ### END INIT INFO
    
    USER=pi
    HOME=/home/pi
    
    export USER HOME
    
    case "$1" in
     start)
      echo "Starting VNC Server"
      #Insert your favoured settings for a VNC session
      su - $USER -c "/usr/bin/vncserver :1 -geometry 1280x800 -depth 16 -pixelformat rgb565"
      ;;
    
     stop)
      echo "Stopping VNC Server"
      /usr/bin/vncserver -kill :1
      ;;
    
     *)
      echo "Usage: /etc/init.d/vncboot {start|stop}"
      exit 1
      ;;
    esac
    
    exit 0
     
  • Faça este arquivo executável:
     chmod 755 vncboot 
  • Ativar sequenciamento de inicialização baseada em dependência:
    update-rc.d -f lightdm remove 
    update-rc.d vncboot defaults 
  • Se permitindo sequenciação de inicialização baseada em dependência era bem sucedido, você vai ver isso:
     update-rc.d: using dependency based boot sequencing 
  • Reinicie o seu Raspberry Pi e você deve encontrar um servidor VNC já começou.
Agora você vai usar um programa cliente de VNC no seu PC / laptop para se conectar ao servidor VNC e assumir o controle do mesmo. Siga as instruções para o sistema operacional do seu computador:

Instalar Transmission CLI

Para Instalar:
sudo apt-get install transmission transmission-cli transmission-common transmission-daemon transmission-remote-cli

Editar os Parametros:
sudo vim settings.json em /etc/transmission-daemon/

{
    "alt-speed-down": 50,
    "alt-speed-enabled": false,
    "alt-speed-time-begin": 540,
    "alt-speed-time-day": 127,
    "alt-speed-time-enabled": false,
    "alt-speed-time-end": 1020,
    "alt-speed-up": 50,
    "bind-address-ipv4": "0.0.0.0",
    "bind-address-ipv6": "::",
    "blocklist-enabled": false,
    "blocklist-url": "http://www.example.com/blocklist",
    "cache-size-mb": 4,
    "dht-enabled": true,
    "download-dir": "/var/lib/transmission-daemon/downloads",
    "download-limit": 100,
    "download-limit-enabled": 0,
    "download-queue-enabled": true,
    "download-queue-size": 5,
    "encryption": 1,
    "idle-seeding-limit": 30,
    "idle-seeding-limit-enabled": false,
    "incomplete-dir": "/var/lib/transmission-daemon/Downloads",
    "incomplete-dir-enabled": false,
    "lpd-enabled": false,
    "max-peers-global": 200,
    "message-level": 1,
    "peer-congestion-algorithm": "",
    "peer-id-ttl-hours": 6,
    "peer-limit-global": 200,
    "peer-limit-per-torrent": 50,
    "peer-port": 51413,
    "peer-port-random-high": 65535,
    "peer-port-random-low": 49152,
    "peer-port-random-on-start": false,
    "peer-socket-tos": "default",
    "pex-enabled": true,
    "port-forwarding-enabled": false,
    "preallocation": 1,
    "prefetch-enabled": 1,
    "queue-stalled-enabled": true,
    "queue-stalled-minutes": 30,
    "ratio-limit": 2,
    "ratio-limit-enabled": false,
    "rename-partial-files": true,
    "rpc-authentication-required": true,
    "rpc-bind-address": "0.0.0.0",
    "rpc-enabled": true,
    "rpc-password": "{317de5a74a1f14ce8f4b4673757cd5c34c09d8d0KEE2x6WI",
    "rpc-port": 9091,
    "rpc-url": "/transmission/",
    "rpc-username": "transmission",
    "rpc-whitelist": "127.0.0.1",
    "rpc-whitelist-enabled": true,
    "scrape-paused-torrents-enabled": true,
    "script-torrent-done-enabled": false,
    "script-torrent-done-filename": "",
    "seed-queue-enabled": false,
    "seed-queue-size": 10,
    "speed-limit-down": 100,
    "speed-limit-down-enabled": false,
    "speed-limit-up": 100,
    "speed-limit-up-enabled": false,
    "start-added-torrents": true,
    "trash-original-torrent-files": false,
    "umask": 18,
    "upload-limit": 100,
    "upload-limit-enabled": 0,
    "upload-slots-per-torrent": 14,
    "utp-enabled": true
}


O usuario e senha padrão é transmission.

20 comandos Linux que você talvez não conheça

1 – Armazenando arquivos e diretórios na memória RAM com tmpfs


mount -t tmpfs tmpfs /mnt -o size=1024m,mode=0755

Este comando cria uma partição temporária na memória RAM. Muito útil para quem precisa realizar operações que utilizam muito o disco, tais como: extração de texto e ordenação de arquivos. Assim, é bem mais prático você copiar esses arquivos para uma partição tmpfs, realizar as operações, e por fim, copiar o resultado final de volta para o disco.

Sendo assim, você diminuirá o tempo total das operações significantemente.

2 – Diretório de arquivos pelo navegador web


python -m SimpleHTTPServer

Por fim, acesse http://localhost:8000/

3 – Execute um comando sem salvar no ‘history’


comando

Simplesmente, dê um espaço antes de inserir qualquer comando no shell

4 – Crie um arquivo facilmente


> arquivo.txt

Crie um arquivo facilmente utilizando o ‘sinal maior que’ (>) precedendo ao nome e tipo de arquivo desejado

5 – Lista de partições amigável


mount | column -t

6 – Obtenha o IP público da sua rede


curl ifconfig.me

7 – O histórico de usuários que acessaram o sistema


last

8 – Abrir um arquivo/URL no programa padrão


xdg-open ARQUIVO

xdg-open URL

9 – Lista somente diretórios


ls -d */

10 – Aplicações usando conexões de internet no momento



lsof -P -i -n

Este comando, exibe somente o nome das aplicações:
lsof -P -i -n | cut -f 1 -d ” “| uniq | tail -n +2

11 – Criptografando seus arquivos facilmente


Encriptar:
gpg -c ARQUIVO

Decifrar:
gpg ARQUIVO.gpg

12 – Encontre o path/manual/binário de um comando


whereis COMANDO

13 – Crie um arquivo com tamanho determinado


dd if=/dev/zero of=teste_arquivo.txt bs=1M count=10

Neste exemplo é criado um arquivo ‘teste_arquivo.txt’ com tamanho de 10MB, preenchidos com bits ‘zero’


14 – Grave sua Área de Trabalho facilmente



ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/minha-area-trabalho.mpg

Para versões do Debian/Ubuntu, é recomendado o uso deste comando:
avconv -f x11grab -show_region 1 -video_size hd720 -framerate 24
-i :0.0 -threads 2 -q 1 -bt 8000000 -b 8500000 /tmp/minha-area-trabalho.avi

15 – Apague os arquivos antigos


Cuidado na escolha do diretório. NUNCA escolha o raiz (/), pois irá apagar arquivos importantes do sistema!

find /tmp/ -type f -mtime +7 -exec rm -f {} ;

Neste exemplo, será apagado todos os arquivos, contidos na pasta tmp, que foram criados a mais de 7 dias.

16 – Dividindo arquivos gigantes em partes menores


Primeiro comprima o arquivo escolhido:
tar -cvvzf teste.tar.gz ARQUIVO

Depois, quebre o arquivos em vários tamanhos de 10MB (fica a seu critério):
split -b 10M teste.tar.gz partes_video

Por fim, para reagrupar novamente o arquivo:
cat partes_video * > teste_final.tar.gz

17 – Baixando o código HTML de um site


wget -O html.txt http://meusite.com

18 – Listando todos os comandos do seu sistema


compgen -c

Ou pesquise por um comando específico: compgen -c | grep find

19 – Descubra qual distribuição você está usando


lsb_release -a

20 – Listando detalhes de hardware do seu sistema


sudo lshw -short -html > info.txt && xdg-open info.txt