quinta-feira, 19 de dezembro de 2013

Loop for em Bash

Em bash script também é possível fazer um loop usando o for.

#!/bin/bash
for i in 1 2 3
do
  echo $i
done 



Resultado:

1
2
3

Será feito a ação compreendida entre "do" e "done" para cada valor após o "in" que será armazenado na variável $i. Para fazer um ação em todos os arquivos:

#!/bin/bash
for i in *
do
  ls $i
done

Para contar de 1 até 100:

#!/bin/bash
for i in `seq 100`
do
  echo $i
done

Vamos supor que você queria descobrir o primeiro endereço ip da rede disponível. Você pode usar o "break" para parar o loop ao primeiro host que responder.

#!/bin/bash
for i in `seq 255`
do
  echo -n Testando 172.20.16.$i ...
  ping -c 1 172.20.16.$i 2>/dev/null >/dev/null
  if [ $? == 0 ]
  then
    echo "Host encontrado : " 172.20.16.$i
    break
  else
    echo .
  fi
done

Resultado:

Testando 172.20.16.1 ....
Testando 172.20.16.2 ....
Testando 172.20.16.3 ...Host encontrado :  172.20.16.3


sexta-feira, 13 de dezembro de 2013

Fliperama no Linux

Para quem gosta de fliperama, o Linux tem um joguinho bem legal. É o Emilia Pinball.


Há duas "máquinas" que você pode escolher. Use as teclas "shift" para mover os flips, "enter" para soltar a bolinha, e "espaço" para dar aquela famosa batidinha.

Para instalá-lo, digite:

# apt-get install pinball


Para executá-lo, digite "pinball" na linha de comando, ou acesse o ícone criado no grupo "Jogos" da interface gráfica.

quarta-feira, 4 de dezembro de 2013

Distribuição Linux Sernet já pode substituir o Active Directory

Você não precisa mais comprar uma licença do Windows Server para poder usar os recursos do Active Directory. A Sernet desenvolveu uma distribuição Linux que usa o Samba 4 para fazer o mesmo que o Active Directory da Microsoft. A distribuição pode ser baixada pelo endereço http://ftp.sernet.de/pub/samba4AD/sernet-samba4-appliance/

Entre os recursos da Sernet estão:
  • Baseado em Linux Debian;
  • Assistente para configuração do Samba 4 como um controlador de domínios;
  • Suporte a GPO;
  • Suporte a DNS NTP seguros;
  • Suporte ao Zarafa groupware.
No tutorial abaixo usei o VirtualBox para virtualizar uma máquina com 256Mb de memória para fazer a instalação e mostrar o funcionamento do Sernet. Após baixar a imagem iso e queimar o cd, dê boot no equipamento. A seguinte tela irá aparecer.
 

 Escolha "Install" e tecle ENTER.



A instalação não pergunta sobre o particionamento. Ela faz tudo sozinha. Portanto, tenha certeza de que esse equipamento é exclusivo para essa função, pois a instalação vai apagar todos os dados do disco antes de prosseguir. Escolha YES e tecle ENTER.


Após o sistema formatar as partições e copiar os dados, o equipamento será reiniciado e um assistente vai te ajudar a configurar o sistema. Escolha START SETUP e tecle ENTER.


Digite o nome do equipamento e tecle ENTER.


Digite o domínio e tecle ENTER.


Digite o nome NETBIOS do domínio. Geralmente é o nome padrão. Tecle ENTER.


Digite a senha que será usada pelo administrador e tecle ENTER.


Confirme a senha e tecle ENTER.


Escolha YES para configurarmos o DNS e tecle ENTER.


Entre com o ip do teu DNS. Aqui, digitei o do Google. Tecle ENTER.


Confira os dados e tecle ENTER.


Sistema instalado. Tecle ENTER para iniciar o Samba 4.


Tecle ENTER.


Se você possui o Zarafa, então pode configurar os schema do Ldap para ele agora. No nosso caso, escolha NO e tecle ENTER.


Digite a senha que será usada pelo usuários SERNET. Da próxima vez que ligar o equipamente, esse usuário deverá ser usado para logar. Tecle ENTER.



Confirme e senha e tecle ENTER.


É recomendável desabilitar o auto login. Tecle ENTER.


Um resumo da instalação. Tecle ENTER.


É aconselhável reiniciar o equipamento agora. Tecle ENTER.


Agora, você pode logar na máquina com o usuário "sernet". Para administrar o "Active Directory" você pode usar inclusive as ferramentas da Microsoft como faria com qualquer domínio Windows.

segunda-feira, 2 de dezembro de 2013

Cliente de FTP FileZilla

Ftp é um protocolo transferência de arquivos (File Transfer Protocol) muito utilizado, principalmente por empresas. Ele é usado para transferir arquivos de uma forma segura a controlada. Ela usa o conceito de cliente/servidor. E o melhor cliente de FTP que conheço é o FileZilla.



Ele tem suporte a:
  • FTPS e SFTP;
  • IPv6;
  • Mais de 40 linguages;
  • Transfere arquivos maiores do que 4Gb;
  • Pode pausar e continuar downloads e uploads;
  • Fácil de usar;
  • Pode gerenciar favoritos;
  • Arrastar e soltar;
  • Limitação de banda;
  • Filtros de nome de arquivo;
  • Comparação de diretórios;
  • Assistente para configuração;
  • Edição remota de arquivos;
  • Sincronização de arquivos/diretórios;
  • Pesquisa remota de arquivos;
  • Múltiplas seções em múltiplos servidores;
  • Multiplataforma.

Sua interface é tão intuitiva que dispensa maiores explicações. Do lado esquerdo estão as pastas e arquivo do meu computador, enquanto que do lado direito estão os do servidor. Ele pode ser instalado através do gerenciador de pacotes da tua distribuição Linux. No Debian e derivados, use:

# apt-get install filezilla


sexta-feira, 29 de novembro de 2013

Será que esse arquivo .txt é realmente um texto?

No mundo Windows, a extensão de um arquivo diz o tipo que ele é. Por exemplo, um .doc é um documento de texto do Word, .txt é um arquivo de texto puro do Bloco de Notas, etc. No Linux, apesar de também trabalhar com extensões, o sistema operacional tem outra forma de descobrir o tipo de arquivo. E o programa "file" mostra isso muito bem.

$ file 20131101.txt
20131101.txt: UTF-8 Unicode text

Acima, o arquivo 20131101.txt é um arquivo de texto unicode utf-8.

$ file ipv6-02.jpeg
ipv6-02.jpeg: JPEG image data, JFIF standard 1.01

Agora um arquivo jpeg.


$ file instalar.sh
instalar.sh: Bourne-Again shell script, UTF-8 Unicode text executable

Um script bash executável.

$ file disco1
disco1: data

Um arquivo do tipo data. 

$ file Livro.pdf
Livro.pdf: PDF document, version 1.4

Um pdf.

$ file teste.iso
teste.iso: data

Outro data.

Agora, se eu renomear o arquivo Livro.pdf para Livro.txt, o que será que o "file" vai mostrar?

$ cp Livro.pdf Livro.txt
$ file Livro.txt
Livro.txt: PDF document, version 1.4

Apesar do arquivo ter extensão .txt, vemos que ele é, nas verdade, um pdf.

quinta-feira, 28 de novembro de 2013

Multitarefa sem ambiente gráfico

Muita gente não sabe, mas é possível trabalhar com várias tarefas ao mesmo tempo no Linux sem usar o ambiente gráfico. Vou mostrar neste pequeno artigo como trabalhar com várias aplicações diferentes ao mesmo tempo, no modo texto, e como alternar entre elas.

Primeiramente, vamos abrir um editor de texto qualquer.

$ nano text.php


Agora tecle CTRL + Z.


Reparem que o serviço foi parado. Ele ainda está na memória, mas está congelado, conforme podemos ver com o comando ps


Reparem no número entre []. Esse é o número da tarefa que colocamos em segundo plano. Vamos iniciar uma segunda tarefa em segundo plano. Para isso, usamos "&" ao final do comando.


Para alterarmos entre as tarefas, basta usar o comando "fg" seguido do número da tarefa. Podemos também colocar uma tarefa em segundo plano com o comando "bg". Por exemplo, para fazer um download, podemos chamar o comando "links" para navegar através do site e começar o download. Após, tecle "CTRL + Z". A tarefa vai ser congelada. Execute então "bg" e a tarefa vai continuar em segundo plano. Para voltarmos ao "links" basta digitar "fg" seguido do número da tarefa.

Uso isso quando vou conectar máquinas via vnc. Após a conexão, digito "CTRL + Z" no terminal e depois "bg", liberando o terminal para outras tarefas.






terça-feira, 26 de novembro de 2013

Conversão de arquivos de midia com ffmpeg

Se você está com problemas para assitir, ouvir, ou converter arquivos de mídia, como audio e video, experimente o ffmpeg.


O ffmpeg é uma espécie de faz-tudo para audio e video. Ele consegue converter de e para os mais variados formatos de video/audio. Seu uso é simples:

# ffmpeg -i arquivo_origem arquivo_final

O software identifica o formato de origem e converte para o formato especificado na extensão do nome do arquivo. No exemplo abaixo eu converti um arquivo wmv para avi.

# ffmpeg -i Californiadreaming.wmv California.avi

Se você possui vários clipes que gostaria de ouvir em seu mp3, o ffmpeg também pode converter arquivos de video para vários formatos de audio.

# ffmpeg -i Californiadreaming.wmv California.mp3

Mas não se engane com a simplicidade da ferramenta. Ele possui opções que não acabam mais. No exemplo abaixo eu converti o video para o formato FullHD.

# ffmpeg -i Californiadreaming.wmv California.vob -s hd1080

O formato 4k (6400x4096) também já é suportado através da opção -s whuxga.

O ffmpeg já vem em muitas distribuições, pois é o backend de várias aplicações gráficas. Mas, caso não esteja instalada, basta usar o comando:

$ apt-get intall ffmpeg

Para mais opções, veja a página de manual.

$ man ffmpeg

segunda-feira, 25 de novembro de 2013

Como descobrir as regras do IPTables que não estão sendo usadas

Quanto menos regras um firewall tiver, melhor. E um firewall de borda costuma ter centenas, ou mesmo milhares de regras. Quanto mais regras ele tiver, pior será seu desempenho. Portanto, é aconselhável verificar periodicamente o uso das regras do firewall, tanto para desabilitar regras não usadas quando para priorizar as regras mais utilizadas.

No IPTables, isso pode ser feito com o seguinte comando:

# iptables -nL --verbose


Chain INPUT (policy DROP 8513K packets, 940M bytes)
 pkts bytes target     prot opt in     out     source               destination        
    0     0 REJECT     all  --  *      *       172.20.19.149        0.0.0.0/0            reject-with icmp-port-unreachable
   31  1860 REJECT     all  --  *      *       172.20.15.202        0.0.0.0/0            reject-with icmp-port-unreachable
   16  1112 REJECT     all  --  *      *       149.20.56.0/24       0.0.0.0/0            reject-with icmp-port-unreachable
    1    60 REJECT     all  --  *      *       172.20.15.177        0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       172.20.50.56         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       10.90.1.0/24         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       172.20.15.79         0.0.0.0/0            reject-with icmp-port-unreachable
1003M 1142G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
 132K 7916K ACCEPT     tcp  --  eth0   *       172.20.1.82          0.0.0.0/0            multiport dports 10050,10051
35371 2971K ACCEPT     icmp --  eth0   *       172.20.1.82          0.0.0.0/0          
    0     0 ACCEPT     icmp --  eth1   *       200.136.27.146       0.0.0.0/0          
5005K  300M ACCEPT     tcp  --  lo     *       0.0.0.0/0            0.0.0.0/0            multiport dports 3000,3128,8080,16667
   45  2700 ACCEPT     tcp  --  eth0   *       172.20.120.4         0.0.0.0/0            multiport dports 22,81,139,445,666,3000,4200,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.5         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.7         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.6         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.2         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.1         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.120.8         0.0.0.0/0            multiport dports 22,25,81,666,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.1.130         0.0.0.0/0            multiport dports 22,25,81,3000,10000
    0     0 ACCEPT     tcp  --  eth0   *       172.20.1.146         0.0.0.0/0            multiport dports 22

Reparem que essa listagem traz o número de pacotes e o tamanho total dos dados trafegados pela regra. Regras zeradas significam que não estão sendo usadas. Esses valores consideram o período compreendido entre a última ativação do firewall (ou boot o servidor) até o momento presente.

terça-feira, 29 de outubro de 2013

Auditoria de sistemas com Lynis

Após fazer uma instalação de um servidor, independente do sistema operacional, é aconselhável fazer uma auditoria de segurança. Há várias ferramentas para isso. No Linux temos uma bem simples, mas que ajuda muito, chamado Lynix.

Para instalá-lo, digite, como root:

# apt-get install lynis

Antes de usá-lo é importante atualizar seu banco de dados.

# lynis --check-update

 == Lynis ==

  Version         :   1.3.0 [ Outdated ]
  Release date    :   28 April 2011
  Update location :   http://www.rootkit.nl/

 == Databases ==
                      Current          Latest           Status
  -----------------------------------------------------------------------------
  Malware         :   2008062700       2008062700       Up-to-date
  File perms      :   2008053000       2008053000       Up-to-date


Copyright 2007-2012 - Michael Boelen, http://www.rootkit.nl/

Agora vamos executá-lo. A cada tela, ou fase, o programa fará uma pausa para que você possa ver o que está sendo feito. No final, uma resumo do que foi encontrado e as dicas do que pode ser feito é listada.

# lynis -c

[ Lynis 1.3.0 ]

################################################################################
 Lynis comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
 welcome to redistribute it under the terms of the GNU General Public License.
 See LICENSE file for details about using this software.

 Copyright 2007-2012 - Michael Boelen, http://www.rootkit.nl/
################################################################################

[+] Initializing program
------------------------------------
  - Detecting OS...                                           [ DONE ]
  - Clearing log file (/var/log/lynis.log)...                 [ DONE ]

  ---------------------------------------------------
  Program version:           1.3.0
  Operating system:          Linux
  Operating system name:     Linux
  Operating system version:  3.2.0-4-686-pae
  Kernel version:            3.2.0-4-686-pae
  Hardware platform:         i686
  Hostname:                  fpawks0703
  Auditor:                   [Unknown]
  Profile:                   /etc/lynis/default.prf
  Log file:                  /var/log/lynis.log
  Report file:               /var/log/lynis-report.dat
  Report version:            1.0
  ---------------------------------------------------

[ Press [ENTER] to continue, or [CTRL]+C to stop ]

  - Checking profile file (/etc/lynis/default.prf)...
  - Program update status...                                  [ UPDATE AVAILABLE ]

      ===============================================================================
        Notice: Lynis update available
          Current version : 130   Latest version : 131
          Please update to the latest version for new features, bug fixes, tests
          and baselines.
      ===============================================================================


[ Press [ENTER] to continue, or [CTRL]+C to stop ]


[+] System Tools
------------------------------------
  - Scanning available tools...
  - Checking system binaries...
    - Checking /bin...                                        [ FOUND ]
    - Checking /sbin...                                       [ FOUND ]
    - Checking /usr/bin...                                    [ FOUND ]
    - Checking /usr/sbin...                                   [ FOUND ]
    - Checking /usr/local/bin...                              [ FOUND ]
    - Checking /usr/local/sbin...                             [ FOUND ]
    - Checking /usr/local/libexec...                          [ NOT FOUND ]
    - Checking /usr/libexec...                                [ NOT FOUND ]
    - Checking /usr/sfw/bin...                                [ NOT FOUND ]
    - Checking /usr/sfw/sbin...                               [ NOT FOUND ]
    - Checking /usr/sfw/libexec...                            [ NOT FOUND ]
    - Checking /opt/sfw/bin...                                [ NOT FOUND ]
    - Checking /opt/sfw/sbin...                               [ NOT FOUND ]
    - Checking /opt/sfw/libexec...                            [ NOT FOUND ]
    - Checking /usr/xpg4/bin...                               [ NOT FOUND ]
    - Checking /usr/css/bin...                                [ NOT FOUND ]
    - Checking /usr/ucb...                                    [ NOT FOUND ]

[ Press [ENTER] to continue, or [CTRL]+C to stop ]

================================================================================

  -[ Lynis 1.3.0 Results ]-

  Tests performed: 181
  Warnings:
  ----------------------------
   - [15:17:02] Warning: Found one or more zombie processes (16988 16990 16992) [test:PROC-3612] [impact:L]
   - [15:19:27] Warning: Found BIND version in banner [test:NAME-4210] [impact:M]
   - [15:20:44] Warning: Found possible unused iptables rules (1 1 2 1 2 3 4 5 6 7 8 2 3 4 6 8) [test:FIRE-4513] [impact:L]
   - [15:21:06] Warning: Root can directly login via SSH [test:SSH-7412] [impact:M]
   - [15:21:28] Warning: PHP option register_globals option is turned on, which can be a risk for variable value overwriting [test:PHP-2368] [impact:M]
   - [15:21:28] Warning: PHP option expose_php is possibly turned on, which can reveal useful information for attackers. [test:PHP-2372] [impact:M]
   - [15:21:58] Warning: klogd is not running, which could lead to missing kernel messages in log files [test:LOGG-2138] [impact:L]
   - [15:22:37] Warning: Found one or more stratum 16 peers [test:TIME-3116] [impact:L]

  Suggestions:
  ----------------------------
   - [15:15:42] Suggestion: update to the latest stable release.
   - [15:17:02] Suggestion: Check the output of ps for dead or zombie processes [test:PROC-3612]
   - [15:17:21] Suggestion: Install a PAM module for password strength testing like pam_cracklib or pam_passwdqc [test:AUTH-9262]
   - [15:17:21] Suggestion: When possible set expire dates for all password protected accounts [test:AUTH-9282]
   - [15:17:21] Suggestion: Configure password aging limits to enforce password changing on a regular base [test:AUTH-9286]
   - [15:17:21] Suggestion: Default umask in /etc/profile could be more strict like 027 [test:AUTH-9328]
   - [15:17:21] Suggestion: Default umask in /etc/login.defs could be more strict like 027 [test:AUTH-9328]
   - [15:17:21] Suggestion: Default umask in /etc/init.d/rc could be more strict like 027 [test:AUTH-9328]
   - [15:19:10] Suggestion: Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [test:STRG-1840]
   - [15:19:10] Suggestion: Disable drivers like firewire storage when not used, to prevent unauthorized storage or data theft [test:STRG-1846]
   - [15:20:14] Suggestion: Purge removed packages (225 found) with aptitude purge command, to cleanup old configuration files, cron jobs and startup scripts. [test:PKGS-7346]
   - [15:20:44] Suggestion: Check iptables rules to see which rules are currently not used (iptables --list --numeric --verbose) [test:FIRE-4513]
   - [15:21:28] Suggestion: Change the register_globals line to: register_globals = Off [test:PHP-2368]
   - [15:21:28] Suggestion: Change the expose_php line to: expose_php = Off [test:PHP-2372]
   - [15:21:28] Suggestion: Change the allow_url_fopen line to: allow_url_fopen = Off, to disable downloads via PHP [test:PHP-2376]
   - [15:21:38] Suggestion: Check if Squid has been configured to restrict access to all safe ports [test:SQD-3624]
   - [15:21:38] Suggestion: Configure Squid option reply_body_max_size to limit the upper size of requests. [test:SQD-3630]
   - [15:21:58] Suggestion: Check why klogd is not running [test:LOGG-2138]
   - [15:22:18] Suggestion: Add legal banner to /etc/motd, to warn unauthorized users [test:BANN-7122]
   - [15:22:18] Suggestion: Add legal banner to /etc/issue, to warn unauthorized users [test:BANN-7126]
   - [15:22:18] Suggestion: Add legal banner to /etc/issue.net, to warn unauthorized users [test:BANN-7130]
   - [15:22:34] Suggestion: Enable sysstat to collect accounting [test:ACCT-9626]
   - [15:22:34] Suggestion: Enable auditd to collect audit information [test:ACCT-9628]
   - [15:22:37] Suggestion: Check ntpq peers output [test:TIME-3116]
   - [15:22:37] Suggestion: Check ntpq peers output for time source candidates [test:TIME-3128]
   - [15:23:26] Suggestion: One or more sysctl values differ from the scan profile and could be tweaked [test:KRNL-6000]
   - [15:23:41] Suggestion: Harden the system by removing unneeded compilers. This can decrease the chance of customized trojans, backdoors and rootkits to be compiled and installed [test:HRDN-7220]
   - [15:23:41] Suggestion: Harden compilers and restrict access to world [test:HRDN-7222]
================================================================================
  Files:
  - Test and debug information      : /var/log/lynis.log
  - Report data                     : /var/log/lynis-report.dat
================================================================================
  Notice: Lynis update available
  Current version : 130    Latest version : 131
================================================================================
  Hardening index : [64]     [############        ]
================================================================================
  Tip: Disable all tests which are not relevant or are too strict for the
       purpose of the particular machine. This will remove unwanted suggestions
       and also boost the hardening index. Each test should be properly analyzed
       to see if the related risks can be accepted, before disabling the test.
================================================================================
  Lynis 1.3.0
  Copyright 2007-2012 - Michael Boelen, http://www.rootkit.nl/
================================================================================


#

* Resumi a saida do comando acima

Veja quantas coisas eu posso fazer para melhorar a segurança do meu servidor.


segunda-feira, 7 de outubro de 2013

Criando partições com Fdisk

Uma das mais conhecidas ferramentas para manipular a tabela de partições no Linux é o Fdisk.

Para listarmos a tabela de partições de um disco use a opção "-l":

# fdisk -l /dev/sda

Disk /dev/sda: 500 GB, 500105249280 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       12158    97659103   83  Linux
Warning: Partition 1 does not end on cylinder boundary.
/dev/sda2           12158       36473   195310237   83  Linux
Warning: Partition 2 does not end on cylinder boundary.
/dev/sda3           36473       60801   195414660    f  Extended LBA
/dev/sda5           36473       60801   195414660   83  Linux
Warning: Partition 5 does not end on cylinder boundary.
#


Aqui temos um disco de 500Gb com 2 partições primárias (1 e 2), uma extendida (3) e uma lógica (5).

Para alteramos as partições, podemos chamar o Ddisk passando como parâmetro o disco (no nosso exemplo, /dev/sda).

# fdisk /dev/sda
GNU Fdisk 1.2.4
Copyright (C) 1998 - 2006 Free Software Foundation, Inc.
This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

Using /dev/sda
Command (m for help):


Para ajuda, tecle "m".

Command (m for help): m
Command action
   a   toggle bootable flag
   b   edit bsd disklabel
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help):  


O Fdisk pode assustar no início, mas ele tem opções bem interessantes, e sua ajuda realmente nos ajuda. Por exemplo, para listar as partições, tecle "p".

Command (m for help): p                                                  

Disk /dev/sda: 500 GB, 500105249280 bytes
255 heads, 63 sectors/track, 60801 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1       12158    97659103   83  Linux
Warning: Partition 1 does not end on cylinder boundary.                  
/dev/sda2           12158       36473   195310237   83  Linux
Warning: Partition 2 does not end on cylinder boundary.                  
/dev/sda3           36473       60801   195414660    f  Extended LBA
/dev/sda5           36473       60801   195414660   83  Linux
Warning: Partition 5 does not end on cylinder boundary.                  
Command (m for help):                                                    


Use "n" para criar uma nova partição, "d" para excluir, "p" para listar as partições, "l" para listar os tipos de partições que o Fdisk conhece, "w" para gravar as mudanças e "q" para sair.


sexta-feira, 4 de outubro de 2013

É usuário Linux mas o Windows veio instalado no PC? Saiba que é possível pedir reembolso!

Se você comprou um computador com Windows, mas prefere usar o Linux, saiba que você pode desinstalar o Windows e pedir reembolso do valor do software. 

No vídeo abaixo isso é explicado melhor.



quarta-feira, 2 de outubro de 2013

Compartilhamento de arquivos via nfs

A melhor forma de compartilhar arquivos entre máquinas Unix/Linux é usando o Nfs. Ao contrário de outros sistemas, como o Smb, o Nfs usa o protocolo Udp, o que agiliza a transferência dos dados. As permissões, por padrão, são dadas para as máquina, e não para um usuário como acontece no Smb.

Para instalar o servidor nfs, basta instalar o pacote nfs-kernel-server.

# apt-get install nfs-kernel-server

Após a instalação, edite o arquivo /etc/exportfs para configurar os compartilhamentos.

/home/ricardo/tmp    172.20.120.4(rw,no_subtree_check)

Nesta linha estou compartilhando a pasta /home/ricardo/tmp com o equipamento 172.20.120.4 no modo de leitura e escrita. Para habilitar as mudanças digite:

# exportfs -a

Na máquina cliente, execute:

# mount -t nfs 172.20.1.127:/home/ricardo/tmp /mnt/tmp

Para que o mapeamento seja montado no boot, crie uma entrada no arquivo /etc/fstab como a seguinte:

172.20.1.127:/home/ricardo/tmp /mnt/tmp nfs defaults 0 0

O nfs tem muitos parâmetros que podem ser ajustados. Para ter uma visão geral sobre eles consulte a página de manual.

$ man nfs

sexta-feira, 27 de setembro de 2013

Evolution, uma alternativa ao Outlook

Uma das dificuldades das pessoas que estão migrando do Windows para o Linux é encontrar programas semelhantes aos que usava no sistema anterior. O Outlook, muito usado em empresas, é um deles. Pois temos o Evolution, que é muito parecido e também pode ser integrado ao Exchange e ao Google (Calendário, Gmail, Lista de contatos, etc).


A Evolution tem cliente de e-mail, agenda, organizador de tarefas,  calendário, lista de contatos, memorandos e tudo o que o Outlook tem.  


Tem suporte a Imap, Imaps, Exchange, Usenet, Pop3, Pop3s, Smtp, Smtps, Entrega local (maildir) e muitos outros que podem ser instalado separadamente.



Vejam como é fácil enviar um e-mail usando uma conta do Gmail. Se você estiver usando o Gnome3, basta criar uma conta on-line usando o teu usuário do Google para que todas as configurações são feitas automaticamente.


quinta-feira, 26 de setembro de 2013

segunda-feira, 23 de setembro de 2013

Trabalhando com variáveis de ambiente.

A linha de comando do Linux tem uma característica muito útil que é o uso de variáveis e, ao contrário da maioria das linguagens de programação, não é necessário dizer que tipo de dado a variável contém. Por exemplo, vamos definir uma variável chamado IDADE.

$ IDADE=37

Para mostrar o valor da variável IDADE, eu digito:

$ echo $IDADE
37

Vamos agora multiplicar IDADE por 2:


$ echo $(($IDADE * 2))
74

Para concatenar um texto à variável IDADE não é necessário fazer nenhum conversão.

$ texto=`echo $IDADE "Teste"`
$ echo $texto
37 Teste

As variáveis comuns não são exportas para os sub-shell. Veja isso na sequência de comandos abaixo:

$ echo $texto
37 Teste
$ bash
$ echo $texto

$ exit
exit
$ echo $texto
37 Teste

Veja que a variável $texto só existe no bash corrente. Quando entro em um novo bash, ela não existe. Para que uma variável seja visível para os sub-shell é necessário torná-la uma variável de ambiente.

$ export texto

Agora vamos analisar a mesma sequência de comandos:

$ echo $texto
37 Teste
$ export texto
$ bash
$ echo $texto
37 Teste
$ exit
exit
$ echo $texto
37 Teste

O shell já configurar várias variáveis de ambiente que personalizam seu sistema. Para listá-las, digite:

$ env

Aqui eu apresento as principais:

  • SHELL=/bin/bash - Mostra o shell atual
  • TERM=xterm - O tipo de terminal atualmente em uso
  • USER=ricardo - O usuário corrente
  • DESKTOP_SESSION=gnome - O desktop atualmente em uso
  • PATH=/usr/games:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/brlcad/bin:/sbin:/usr/sbin:/sbin:/usr/sbin - As pastas onde o sistema vai procurar por executáveis quando estes forem digitados na linha de comando.
  • PWD=/home/ricardo/Downloads - A pasta atual
  • LANG=pt_BR.utf8 - A linguagem atual do sistema
  • HOME=/home/ricardo - O diretório de trabalho do usuário atual
  • OLDPWD=/home/ricardo - O diretório anterior (antes de um comando "cd" ter sido executado.

As variáveis de ambiente podem ser configuradas de uma forma geral através do arquivos /etc/profile, e pode ser personalizada através do arquivo ~/.profile de cada usuários.

sexta-feira, 20 de setembro de 2013

O drive de cd não abre. O que fazer?

Algumas vezes o drive de cd emperra e não abre, mesmo você apertando o botão open. Você clica com o botão direito e manda ejetar, mas mesmo assim ele não abre. O que fazer?

Antes de tentar usar um clip (daqueles de prender papel), tente usar o comando eject como root.

# eject

Segundo a própria documentação do eject, dependendo do tipo de midia há 4 maneiras de ejetá-la. O eject tenta todos os tipos possíveis, e serve não só para dvd, mas para fitas de backup, zip e jaz drive, hd externo, e muitos outros. 

Agora, se nem assim funcionar, só com clip, mesmo. Mas é bom desligar o equipamento antes.

quarta-feira, 18 de setembro de 2013

Script bash com cores

Quem escreve script bash pode trabalhar com cores. É simples:

$ echo -e '\e[34;43;1m teste \e[m'


Aqui, a cor do texto é azul (34) e o fundo amarelo (43) e negrito (1). Abaixo mostro um script simples que mostra todas as combinações possíveis.

#!/bin/bash
for atributo in 1 4 7
do
    for texto in `seq 30 37`
    do
        echo -n '|'
        for fundo in `seq 40 47`
        do
            echo -n -e '\e['$texto';'$fundo';'$atributo'm '$texto $fundo $atributo' \e[m'
            echo -n ' | '
        done
        echo   
    done
done

Ao executar esse script, a tela abaixo é mostrada. Cada célula contém os valores para a cor do texto, a cor do fundo, e o atributo.


Assim fica mais fácil escrever scripts elegantes.

sexta-feira, 13 de setembro de 2013

Como saber o tamanho de uma pasta

Uma forma de saber o tamanho de uma pasta é usando o du. Por padrão, du mostra o tamanho de cada arquivo e pasta dentro da pasta pesquisada, sumarizando. Por exemplo, para mostrar o tamanho das pastas e arquivos da pasta atual, de uma forma amigável, eu uso:

$ du -h
64K    ./Contas/Telefone
84K    ./Contas/Celular
100K    ./Contas/Outras
188K    ./Contas/Freitas
12K    ./Contas/Cursos
72K    ./Contas/Luz
236K    ./Contas/Transferencia
508K    ./Contas/Seguro
148K    ./Contas/Carro
56K    ./Contas/Casa
240K    ./Contas/Cartao
28K    ./Contas/Livros
8,0K    ./Contas/Net
12K    ./Contas/Escolinha
1,8M    ./Contas
6,2M    ./Apostilas/Rede
42M    ./Apostilas/Linux
2,9M    ./Apostilas/ShellScript
896K    ./Apostilas/Hardware
828K    ./Apostilas/Html
308K    ./Apostilas/Pesquisas
3,1M    ./Apostilas/Contos
173M    ./Apostilas/Linux Magazine
1,4M    ./Apostilas/Historia_da_informatica
64M    ./Apostilas/Ipv6
388K    ./Apostilas/Musica/Flauta Doce_files/capa_data
12K    ./Apostilas/Musica/Flauta Doce_files/index2_data
440K    ./Apostilas/Musica/Flauta Doce_files
8,0K    ./Apostilas/Musica/tecnicas_files/h_data
224K    ./Apostilas/Musica/tecnicas_files
52K    ./Apostilas/Musica/digitacao_files
2,5M    ./Apostilas/Musica
328K    ./Apostilas/Cubo-magico/rubik_sol_arquivos
768K    ./Apostilas/Cubo-magico
54M    ./Apostilas/Outras revistas
12M    ./Apostilas/Efemerides
1,6M    ./Apostilas/Normas
764K    ./Apostilas/Oracle
1,9M    ./Apostilas/Unimes/Gestao_financeira
22M    ./Apostilas/Unimes/Gestao
102M    ./Apostilas/Unimes/Economia
3,7M    ./Apostilas/Unimes/Infraestrutura_em_ti
980K    ./Apostilas/Unimes/Hardware
4,8M    ./Apostilas/Unimes/Gestao_Software_Livre
2,3M    ./Apostilas/Unimes/Gestao_de_negocios_da_informacao
336K    ./Apostilas/Unimes/Governanca_em_projetos
137M    ./Apostilas/Unimes
500M    ./Apostilas
4,2M    ./Outros
432K    ./Documentos/PFCodAcesso.aspx_arquivos
5,2M    ./Documentos
1,1M    ./Documentacao/Web
3,0M    ./Documentacao/Outros
180K    ./Documentacao/Vulnerabilidades
216K    ./Documentacao/Politica
20K    ./Documentacao/Feitos
512K    ./Documentacao/Backups
28K    ./Documentacao/Pendencias
20K    ./Documentacao/PJ x Clt
1,2M    ./Documentacao/Gateway
1,9M    ./Documentacao/Dr
20K    ./Documentacao/Sistemas de arquivos
8,0M    ./Documentacao
24K    ./Programacao/remoto
424K    ./Programacao
519M    .

Se você reparar bem, verá o tamanho total da pasta atual (última linha) bem como o tamanho de cada subpasta de primeiro nível, as de segundo nível, e assim por diante. Você quiser saber o tamanho somente das pastas, sem duas subpastas, digite:

$ du -sh *
500M    Apostilas
1,8M    Contas
8,0M    Documentacao
5,2M    Documentos
4,2M    Outros
424K    Programacao

Para saber somente o tamanho da pasta atual, digite:

$ du -sh .
519M    .


quarta-feira, 11 de setembro de 2013

Dropbox para Linux

Para quem ainda não conhece, o Dropbox é um serviço de armazenamento na nuvem que oferece 2Gb de espaço gratuito, e esse espaço ainda pode aumentar até 16Gb. Os arquivos podem ser acessados pela web. Aqui vou explicar como instalar o cliente do Dropbox no Linux e selecionar pastas para serem sincronizadas automaticamente com a nuvem.


A primeira coisa a fazer é se cadastrar no site www.dropbox.com. Em seguida, baixe o pacote no endereço abaixo de acordo com a tua distribuição.


No meu caso eu baixei o arquivo dropbox_1.6.0_i386.deb. Em seguida execute, como root, o comando:

# dpkg -i dropbox_1.6.0_i386.deb

Se a instalação ocorrer sem problemas, abra o Dropbox. No Gnome, ele fica em "Aplicativos/Internet".


A tela abaixo deverá aparecer.


Escolha "Já tenho uma conta no Dropbox" e clique em "Seguinte".


Digite os teus dados e clique em "Seguinte". 


Escolha a opção que desejar e clique em "Seguinte".


Escolha "Avançado" e clique em "Seguinte"


Escolha a opção padrão e clique em "Seguinte".

Escolha a segunda opção e clique em "Sincronização seletiva".


Como essa é a segunda máquina que faço, posso escolher qual pasta sincronizar. Essa relação que ele mostra é a que já está na nuvem. Só para efeito de ilustração, vou selecionar somente a pasta "ProgramasRFB". Clique em "Atualizar" e depois em "Instalar".


Agora o sistema abre um pequeno tutorial. Se você não conhece o Dropbox aconselho acompanhar esse manual para saber os recursos que o Dropbox tem. Por exemplo, nesta tela ele já afirma que qualquer alteração nos arquivos do Dropbox serão replicados para todos os equipamentos que a conta possui. Clique em "Pular Tour".


Clique em "Encerrar".


Já vai aparecer um ícone do Dropbox no canto superior direito (se você usa o Gnome clássico) ou no canto inferior direito (se você usa o Gnome Shell). Clicando nele com o botão direito um menu aparecerá mostrando as informações referentes do serviço.

E agora, o pulo do gato para quem usa Linux. Você não precisa mover seus arquivos para a pasta Dropbox para que eles sejam sincronizados. Basta criar um link. Por exemplo, se você quer colocar a pasta Vídeos no dropbox, primeiro crie um link clicando na pasta com o botão direito e escolhendo a opção "Criar link".


 Agora mova o link criado para a pasta do Dropbox e renomei-a para Vídeos. Veja como ficou na imagem abaixo.


A pasta com todos os seus arquivos já foram sincronizados com a nuvem e com a outra máquina que possuo.