segunda-feira, 27 de julho de 2015

INSTALAR E CONFIGURAR O X11VNC PARA UBUNTU

1º – Para instalar use o comando:

sudo apt-get install x11vnc

2º – Para criar a senha:

sudo x11vnc -storepasswd A_SUA_PASSWORD /etc/x11vnc.pass

3º – Para dar permissão ao arquivo de senha:

sudo chmod 744 /etc/x11vnc.pass

4º – O comando a seguir vai rodar o X11vnc:

 sudo x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /etc/x11vnc.pass -forever -bg -rfbport 5900 -o /tmp/x11vnc.log

Bom, até aí o aplicativo vai funcionar direitinho. Contudo, após reiniciar a máquina ele não mais estará rodando. Para fazer com que o programa inicie com o Sistema Operacional, será necessário criar um script dentro de /etc/init.d/, dar permissão de execução e executar o comando "update-rc.d" para fazer com que isso aconteça.

Passos:

Criar o arquivo:
=====================================================
# vim /etc/init.d/vnc-server

adicionar as linhas de comando dentro do arquivo:

#!/bin/bash
 
start() {
    echo "Iniciando VNC-Server..."
    x11vnc -env FD_XDM=1 -display :0 -forever -rfbauth /root/.vncpasswd &>> /var/log/vnc-server.log &
    echo "[OK]"
}
 
stop() {
    echo "Desligando VNC-Server..."
    killall x11vnc &>> /var/log/vnc-server.log
    echo "[OK"]
}
    case "$1" in
    start) start
    ;;
    stop) stop
    ;;
    restart) stop; start
    ;;
    *) echo "Uso correto: (start|stop|restart)"
    ;;
esac
- See more at: http://www.aprendendolinux.com/x11vnc-o-vnc-do-linux/#sthash.n3AoC9ho.dpuf
#!/bin/bash

start() {
   echo "Inciar VNC..."
   x11vnc -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth  /etc/x11vnc.pass -forever -bg -rfbport 5900 -o ~/.Log-x11vnc.log
   echo"VNC Funcionando..."
}

stop() {
    echo "Parando o VNC..."
    killall x11vnc &>> ~/.Log-vnc-server.log
    echo "VNC parado..."
}
    case "$1" in
    start) start
    ;;
    stop) stop
    ;;
    restart) stop; start
    ;;
    *) echo "Uso correto: (start|stop|restart)"
    ;;

esac
========================================================
Para dar permissão de execução para ao script:

# chmod +x /etc/init.d/vnc-server

Agora, vamos temos que colocar o script para iniciar com o sistema:

# cd /etc/init.d/
# update-rc.d vnc-server defaults

OK. O x11vnc já está configurado para iniciar com o sistema e você pode fazer o STOP e START com os comandos abaixo:

Exemplos:
# /etc/init.d/vnc-server start
# /etc/init.d/vnc-server stop
# /etc/init.d/vnc-server restart

Caso você não precise mais que ele suba junto com o sistema operacional, faça o comando abaixo:

# cd /etc/init.d/
# update-rc.d -f vnc-server remove


OBS.: A porta padrão de execução do VNC é a 5900
# vim /etc/init.d/vnc-server
Deixe-o assim:
# vim /etc/init.d/vnc-server
Deixe-o assim:

terça-feira, 11 de fevereiro de 2014

INSTALAR GOOGLE EARTH 7.1 NO UBUNTU 13.10

Muita gente postando nos seus blogs, mas nenhum funcionou comigo. Acabei encontrando a solução num site em inglês do ask.ubuntu.com:

- Baixe o pacote com extensão .deb:

http://www.google.com.br/intl/pt-BR/earth/download/ge/agree.html

  1. Abra o Terminal, Copiar e Colar seguinte comando e pressione Enter
    sudo apt-get install libc6: i386 lsb-core
    
  2. Abrir pasta de downloads
  3. Clique com o botão direito no Google Earth. Deb e selecione a opção "Extrair Aqui".
  4. Abra a pasta onde os arquivos forão extraídos.
  5. Abra a pasta DEBIAN
  6. Abra e edite o arquivo controle.
  7. Remova toda esta linha: Depende: lsb-core (> = 3.2), ia32-libs
  8. Agora Clique em Salvar.
  9. Agora elimine o arquivo original Google Earth. DEB pacote que você baixou.
  10. Crie uma pasta chamada getfi, Agora mova a pasta extraída do Google Earth para a pasta getfix
Agora vamos reconstruir O Google Earth deb Package.:
  1. Abra o Terminal, copiar / colar o seguinte comando, em seguida, pressione Enter :
    dpkg -b ./getfix/google-earth-stable_current_amd64
    
  2. Copie / cole o seguinte comando (isto irá instalar. deb)
    sudo dpkg -i ./getfix/google-earth-stable_current_amd64.deb


quarta-feira, 5 de fevereiro de 2014

BAIXAR E COMPILAR O OPENVPN NO DEBIAN WHEEZY

1º - FAÇA O DOWNLOAD VIA WGET

wget http://swupdate.openvpn.org/community/releases/openvpn-2.3.2.tar.gz


2º - EXTRAIA O ARQUIVO.

tar xf openvpn-2.3.2.tar.gz
cd openvpn-2.3.2

3º - ANTES DE COMPILAR, BAIXE AS BIBLIOTECAS LIBSSL-DEV, LIBLZO2-DEV, LIBPAM0G-DEV E INSTALE O BUILD-ESSENTIAL PARA COMPILAR.

apt-get install libssl-dev liblzo2-dev libpam0g-dev build-essential

4º - AGORA SIGA OS PROCEDIMENTOS NORMAIS.

./configure
make
make install

quinta-feira, 10 de outubro de 2013

CONFIGURAR O ARQUIVO SYSCTL.CONF

Essa postagem é pra ajudar a quem queira configurar um firewall limpo. Sendo assim, ativando algumas funções no arquivo sysctl.conf não será necessário colocar no script do firewall. Como por exemplo: HABILITAR O NAT, E HABILITAR A SEGURANÇA CONTRA ATAQUES.


O GNU Linux possui a chamada de sistema sysctl, que é usado para visualizar ou alterar os parâmetros dos arquivos encontrados dentro de /proc/sys/ sem a necessidade de editar o código fonte do Kernel, recompilá-lo e depois reinicializa-lo.

# Se ativo, permite o encaminhamento de pacotes IPV4.
# o parâmetro abaixo deve ser ativado (1) para o mascaramento ser automatico

net.ipv4.ip_forward = 1

# If active, enables source route verification # Se ativo, habilita a verificação da origem da rota.

net.ipv4.conf.all.rp_filter = 1

net.ipv4.conf.default.rp_filter = 1


# If active, enables the magic-sysrq key (alt+sysRq)
kernel.sysrq = 1

# If active, logs 'impossible' source addresses

net.ipv4.conf.all.log_martians = 1

# If active, rewrites outgoing IP packets if address changes

net.ipv4.ip_dynaddr = 0

# If active, ignores ICMP with broadcast destination

net.ipv4.icmp_echo_ignore_broadcasts = 1

# If active, accepts IP packets with source route info

net.ipv4.conf.all.accept_source_route = 0

# If active, ignores all ICMP requests

net.ipv4.icmp_echo_ignore_all = 0

# Mask made of ICMP types for which rates are being limited.

# Default: 6168
# Note: 6168 = 0x1818 = 1<
#       1<
#       dest unreachable (3), source quench (4), time exceeded (11)
#       and parameter problem (12) ICMP packets are rate limited
#       (check values in icmp.h)
# 6169 also limits echo_reply's

net.ipv4.icmp_ratemask = 6169

# ICMP ratelimit, in jiffies
# 1 jiffie = 1/100s in Intel, 1/1024s in Alpha

net.ipv4.icmp_ratelimit = 100

# If active, uses TCP SYN cookies

net.ipv4.tcp_syncookies = 1

# If active, accepts ICMP redirect orders

net.ipv4.conf.all.accept_redirects = 0

# rtc setup (you have to load rtc kernel module in /etc/rc.modules
# for this work properly.)

#dev.rtc.max-user-freq = 1024

sexta-feira, 27 de setembro de 2013

CALCULO DE MÁSCARA DE SUB-REDE

A grande verdade é que as máscara de sub-rede já são pré-definidas.

exemplo com classe C:

255.            255.             255.           0
11111111.11111111.11111111.00000000  =  /24

a) 10000000=128 = 2 redes    | 128 hosts        /25
b) 11000000=192 = 4 redes    | 64 hosts          /26
c) 11100000=224 = 8 redes    | 32 hosts          /27
d) 11110000=240 = 16 redes  | 16 hosts         /28
e) 11111000=248 = 32 redes   | 8 hosts         /29
f) 11111100=252 = 64 redes    | 4 hosts        /30
g) 11111110=254 = 128 redes | 2 hosts        /31

---------------------------------------------------------------------------
a) ex.: 255.255.255.128
b) ex.: 255.255.255.192
.
.
.
----------------------------------------------------------------------------

a) 256/128= 2 redes     | 256-((27)=128) = 128 hosts
b) 256/192= 4 redes     | 256-((26)=192) = 64 hosts
c) 256/224= 8 redes     | 256-((25)=224) = 32 hosts
d) 256/240= 16 redes   | 256-((24)=240) = 16 hosts
e) 256/248= 32 redes   | 256-((2³)=248) = 8 hosts
f) 256/252= 64 redes    | 256-((2²)=252) = 4 hosts
g) 256/254= 128 redes | 256-((2¹)=254) = 2 hosts



terça-feira, 3 de setembro de 2013

LOGIN POR RECONHECIMENTO FACIAL NO UBUNTU

PARA COMEÇAR PRECISAMOS DE DUAS APLICAÇÕES COM SUAS DEPENDÊNCIAS: PAM-FACE-AUTHENTICATION E OPENCV. NO MEU CASO ESTOU INSTALANDO NO UBUNTU 13.04 (Raring Ringtail)

Procedimentos:

1 - Instalar OpenCV e suas dependêcnias:

sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev

Faça o Download do OPENCV-2.4.6

http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.6.1/opencv-2.4.6.1.tar.gz/download
tar -xvf OpenCV-2.4.6.1.tar.bz2

cd OpenCV-2.4.6.1/
# cmake .
# make
# make install


2 - Instalar o PAM-FACE-AUTHENTICATION

segue o Link do download do Projeto:
http://code.google.com/p/pam-face-authentication/downloads/detail?name=pam-face-authentication-0.3.tar.gz

É bem chato, mas é muito empolgante quando o resultado é atingido.



Primeiro Instale as dependências:

sudo apt-get install build-essential cmake qt4-qmake libx11-dev libcv-dev libcvaux-dev libhighgui2.4 libhighgui-dev libqt4-dev libpam0g-dev checkinstall python-opencv

Descompacte o arquivo:
tar -xzf pam-face-authentication.tar.gz

Entre no diretório onde descompactou a pasta:
cd pam-face-authentication-0.3

Copie o arquivo "OpenCVConfig.cmake" para dentro "pam-face-authentication-0.3/cmake/modules/FindOpenCV.cmake


Edite o arquivo: gedit ./cmake/modules/FindOpenCV.cmake

Localize os textos abaixo e substitua para os que estão em negrito:

SET(OpenCV_INCLUDE_DIRS "${OpenCV_INSTALL_PATH}/include/opencv;${OpenCV_INSTALL_PATH}/include")

SET(OpenCV_INCLUDE_DIRS "/usr/include/opencv;/usr/include")

Salve o arquivo e entre novamente em outro arquivo:

gedit ./CMakeLists.txt Faça a mesma coisa substituindo os valores para os que estão em negrito:

INCLUDE_DIRECTORIES(${OPENCV_INCLUDE_DIR})

INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})

TARGET_LINK_LIBRARIES( pam_face_authentication ${PAM_LIBRARIES} ${OPENCV_LIBRARIES})

TARGET_LINK_LIBRARIES( pam_face_authentication ${PAM_LIBRARIES} ${OpenCV_LIBS})

TARGET_LINK_LIBRARIES( qt-facetrainer ${QT_LIBRARIES} ${OPENCV_LIBRARIES})

TARGET_LINK_LIBRARIES( qt-facetrainer ${QT_LIBRARIES} ${OpenCV_LIBS})

Salve o arquivo e saia dele;

Crie o diretório build:
mkdir build

Entre no diretório build:
cd build

Execute o comando:
cmake -D CMAKE_INSTALL_PREFIX=/usr ..

Execute o comando:
make

Execute o comando:
sudo make install

---------------------------------------------------------------------------------
O ainda deu um probleminha, e realizei mais este procedimento:

cat << EOF | sudo tee /usr/share/pam-configs/face_authentication /dev/null

**Name:** face_authentication profile  
**Default:** yes  
**Priority:** 900   
**Auth-Type:** Primary  
**Auth:** [success=end default=ignore] pam_face_authentication.so enableX 
EOF

 sudo pam-auth-update --package face_authentication

Depois executei o o programa cadastrei meu rosto (5 vezes).

Execute o programa:
qt-facetrainer

Para a autenticação funcionar no login, tem que ir em "/etc/pam.d/common-auth".

auth    sufficient      pam_face_authentication.so enableX

Para a autenticação via sudo, tem que ir no "/etc/pam.d/sudo"

auth    sufficient      pam_face_authentication.so enableX

Reiniciar a máquina, pelo menos no meu a tela ficou piscando, só parou quando reiniciei.

terça-feira, 27 de agosto de 2013

Estava eu estudando Shell Script e senti a necessidade de aprender mais sobre REDIRECIONAMENTO (STDIN, STDOUT, STDERR, PIPE) e descobri que esse assunto é tão o mais importante do que qualquer outro no mundo UNIX. Então resolvi pegar um pouco de cada blog que explicava bem alguns tópicos. Então vamos lá:


No Linux é possível trabalhar redirecionando pra onde vai o resultado de um comando, quando um processo precisa acessar um arquivo, ele faz isso através do descritor do arquivo (um número inteiro positivo, que o processo usa para referenciar a um determinado arquivo aberto). Assim, todo processo em um sistema UNIX mantém uma tabela de referências aos descritores de arquivos usados pelo mesmo. Os descritores propriamente dito são mantidos pelo kernel. O tamanho dessa tabela varia de sistema para sistema. Nos linux atuais, o tamanho padrão é 256. Cada processo UNIX dispõe de 20 descritores de arquivo, ordenados de 0 a 19.
Quando um programa é executado, 3 arquivos são automaticamente abertos e associados à esse processo. Abaixo, temos a listagem desses três arquivos:
stdin - 0 - entrada padrão - teclado
stdout - 1 - saída padrão - tela
stderr - 2 - erro padrão - tela
Obs: Os outros 17 descritores estão disponíveis para arquivos.
O arquivo stderr ( descritor 2) é usado pelos programas para imprimir as mensagens de erro(geralmente na tela). Podemos redirecionar a saída de um descritor de arquivo para um arquivo com a seguinte sintaxe:
Sintaxe:


numero-descritor> nome_do_arquivo

Exemplos (assumindo que o arquivo teste.txt não existe no diretório corrente):
$ rm teste.txt


rm: imposível remover

`teste.txt’: Arquivo ou diretório inexistente
Por isso no Linux é comum usar o conceito “entrada padrão” e “saída padrão”. A princípio dá pra se imaginar que, numa interface de console, a entrada padrão é o teclado e saída padrão a tela. Na verdade isso é redirecionado pra um socket, um arquivo em /dev. Chamado de stdout e stdin.
-stdin
Entrada padrão de dados para o programa
-stdout
Saída padrão de dados do programa
 -stderr
Saída padrão de erro


Redirecionamentos
É possível tratar a entrada padrão e a saída padrão usando apenas alguns caracteres especiais. São eles:
> – Redireciona a saída padrão para um arquivo
>> – Redireciona a saída padrão pra um arquivo sem apagar o conteúdo do arquivo
< – Redireciona a entrada padrão usando um arquivo
2> – Redireciona a saída de erro para arquivo
2>> – Redireciona a saída de erro anexando o conteúdo em um arquivo
>&2 – Redireciona a saída padrão para saída de erro
2>&1- Redireciona saída de erro para saída padrão
– Conecta a saída padrão na entrada padrão de outro arquivo

Todos esse redirecionamentos são muito usados. Apesar de parecer complicado não é tanto assim. Usando exemplos práticos fica simples:
echo TESTE > arquivo.txt
escreve TESTE em um arquivo chamado arquivo.txt porém o arquivo é apagado caso já exista
ls foobar 2>> error.log
caso a arquivo foobar não exista (ls falhou) a mensagem de erro é anexada em error.log
cat ls -l | grep evandro
Lista na sáida o no Evandro dentro de um diretório, caso exista.
Por isso é possível criar scripts e arquivos executando varáveis e comandos com textos usando um tipo especial de redirecionamento de saída usando quotes chamado (here document) que permite que você inicie com << PALAVRA e termine com PALAVRA que geralmento é usado <EOF (End Of File – Final de Arquivo). Caractere << é usado para indicar que o texto seja usado para leitura a partir de uma palavra < com marcação e encerrado depois que encontra PALAVRA, como exemplo abaixo:
2
3
1
2
3


----------------------------------------------------------

Descritores de arquivo e ponteiros para os arquivos

Foi visto que o nó de indexação de um arquivo é a estrutura de identificação do arquivo dentro de um sistema. Quando um processo quiser manipular um arquivo, ele vai simplesmente utilizar um inteiro chamado descritor de arquivo. A associação desse descritor ao nó de indexação deste arquivo se faz durante a chamada da primitiva open() (ver 1.5.4), com o descritor tornando-se então o nome local de acesso desse arquivo no processo. Cada processo UNIX dispõe de 20 descritores de arquivo, numerados de 0 a 19. Por convenção, os três primeiros são sempre abertos no início da vida de um processo:
  • O descritor de arquivo 0 é a entrada padrão (geralmente o teclado);
  • O descritor de arquivo 1 é associado a saída padrão (normalmente a tela);
  • O descritor de arquivo 2 é a saída de erro padrão (normalmente a tela).
Os outros 17 descritores estão disponíveis para os arquivos. Esta noção de descritor de arquivo é usada para a interface de Entrada/Saída de baixo nível, especialmente com as primitivas open()write(), etc. Por outro lado, quando as primitivas da biblioteca padrão de entrada/saída são usadas, os arquivos são encontrados através dos ponteiros para os objetos do tipo FILE (tipo definido dentro da ).
Existem três ponteiros definidos neste caso:
  • stdin que aponta para o buffer da saída padrão (geralmente o teclado);
  • stdout que aponta para o buffer da saída padrão (normalmente a tela);
  • stderr que aponta para o buffer da saída de erro padrão (normalmente a tela).


terça-feira, 30 de julho de 2013

VISUALIZAR O TIPO DE MEMÓRIA NO UBUNTU

Para saber o tipo de memória (DIM, DDR, DDR2, DDR3, ETC) instalada na sua máquina linux, digite o seguinte comando:

como root:
# dmidecode -t memory

-t ou --type

Como saber qual o tipo de memória instalada no meu Ubuntu

segunda-feira, 22 de julho de 2013

INSTALAR MODULO WIRELESS BROADCOM BCM4311 NO UBUNTU








Driver Broadcom BCM4311 para Linux Ubuntu e Slackware

Acredito que esta dica sirva não apenas para o Ubuntu como também para Slackware, e outras distribuições Linux que não configure esta placa de rede automaticamente.


Para iniciarmos é necessário que você tenha acesso ao sistema como usuário " root ", e que esteja conectado a internet por modem USB ou cabo lan, para fazer os downloads, ou baixe os arquivos em um Pc ou outro notebook e transfira os arquivos que vamos usar utilizando um Pendrive.




Siga os passos a baixo :

1 - É necessário que você efetue login no sistema com o usuário “ root ”.
Vamos compilando o b43-fwcutter ", Este utilitário será usado para extrair os firmwares da placa de rede broadcom para que a mesma funcione corretamente no Linux.

2 - Abra o terminal, para digitar as linhas de instrução

3 - Faça o download b43-fwcutter-011.tar.bz2

Download b43-fwcutter-011.tar.bz2




 4 - Agora vamos descompactar e compilar

root@Ubuntu: ~# tar xvjf b43-fwcutter-011.tar.bz2 -C /usr/src/
root@Ubuntu: ~# cd /usr/src/b43-fwcutter-011
root@Ubuntu: /usr/src/b43-fwcutter-011# make
root@Ubuntu: /usr/src/b43-fwcutter-011# cd ~

5 - Extraindo os Firmwares da placa de rede

Efetue o download do driver


broadcom-wl-4.150.10.5.tar.bz2

Broadcom-wl-4.150.10.5


Agora vamos “Extrair e Instalar” os firmwares, vá até a pasta onde vc fez op download utilizando o terminal e digite os comando a baixo.

root@Ubuntu: ~# tar xvjf broadcom-wl-4.150.10.5.tar.bz2 -C /usr/src/
root@Ubuntu: ~# export FIRMWARE_INSTALL_DIR=”/lib/firmware”
root@Ubuntu: ~# cd /usr/src/broadcom-wl-4.150.10.5/driver
root@Ubuntu: /usr/src/broadcom-wl-4.150.10.5/driver# /usr/src/b43-fwcutter-011/b43-fwcutter -w “$FIRMWARE_INSTALL_DIR” wl_apsta_mimo.o


várias linhas serão exibidas neste passo.
6 - Agora vamos ativar o módulo da placa de rede, digite os comando a baixo

root@Ubuntu: /usr/src/broadcom-wl-4.150.10.5/driver# rmmod b43
root@Ubuntu: /usr/src/broadcom-wl-4.150.10.5/driver# modprobe b43

7 - Protinho. Neste ponto sua Wireless já deverá estar funcionando. Para efetuar um teste execute o comando abaixo:

root@Ubuntu: /usr/src/broadcom-wl-4.150.10.5/driver# iwlist wlan0 scan

Deverão ser exibidas informações de sua rede Wireless.

8 - Alguns problemas que eventualmente poderão ocorrer

1) Em outras versões do Slackware com kernel 2.6.24 ou mais antigas, talvez os firmwares precisem da versão mais antiga, então faça o download destes firmwares:


b43-fwcutter-009.tar.bz2 b43-fwcutter-012.tar.bz2

b43-fwcutter-014.tar.bz2 b43-fwcutter-016.tar.bz2

, o processo é o mesmo para a extração do firmware.

2) Em versões mais antigas do , o driver da era o “bcm43xx”, logo pode ser que o Kernel insista em inicializar ele no lugar do “b43″. Logo recomendo que remova este módulo ou então coloque-o numa blacklist ou ainda se preferir no seu rc.local, coloque os comandos:

rmmod bcm43xx
modprobe b43


O problema de conexão de meu notebook resolvi assim, espero ter ajudados a você que tem uma placa igual a minha .

referência:
http://www.tutorialgratis.com.br/linux/650-drive-wireless-broadcom-bcm4311-para-ubuntu-e-outras-distribuicoes-linux






segunda-feira, 8 de julho de 2013

EMBARALHAR CONTEÚDO DE UM ARQUIVO - COMANDO SHRED

Remover arquivos faz parte da rotina diária de qualquer usuário de um sistema operacional, não é mesmo? Provavelmente você deve fazer isso algumas dezenas de vezes ao longo de um dia de trabalho em frente ao computador. Caso um arquivo qualquer (como uma ISO de um sistema operacional, por exemplo) esteja sendo apagado simplesmente para liberar espaço em seus meios de armazenamento, que mal há utilizar o bom e velho “rm”? Por outro lado, tenho a impressão de que você não gostaria de saber que aquele script que contém todas as suas regras de firewall, por exemplo, ou qualquer outro arquivo com alguma informação sensível pode cair em mãos erradas se você confiar no apenas no “rm”.
Bem, primeiramente, permita que eu me desculpe por ‘descortinar’ essa verdade caso você ainda achasse, até o parágrafo anterior, que um “rm -f” era um comando forte e com tanta ‘personalidade’ ao ponto de mandar pro espaço qualquer arquivo ou diretório. O fato é que ao remover um arquivo com esse comando o sistema operacional, em poucas palavras, simplesmente retira os “ponteiros” para os blocos de dados que formavam o arquivo. Por outro lado, esses blocos estão lá em seu HD e podem, com a ajuda de algumas ferramentas, ser recuperados. Provavelmente esses blocos irão ser sobrescritos apenas quando novos arquivos forem utilizando aqueles mesmos espaços e isso pode demorar um tempo bastante considerável principalmente se o computador em questão não tiver operações um fluxo de gravação de arquivos muito intenso.
E, antes que você se pergunte, mas quem pode ter acesso ao meu HD? Bem, fácil. Seu computador pode ser invadido através da Internet, você pode perdê-lo, você pode ser roubado, você pode vendê-lo ou você pode mandá-lo para uma assistência técnica para consertar um problema, por exemplo. Enfim, são muitas as possibilidade, não é verdade? Pior ainda quando se está falando dos pequenos e portáteis pen drives que carregamos conosco o tempo todo para todo lugar. Quando é possível, pode-se utilizar os sistemas de arquivos criptografados. Entretanto, em situações onde não é possível utilizar essas soluções, é preciso tomar cuidado para garantir que arquivos sensíveis foram, de fato, removidos.
A notícia boa é que existe um “irmão” do rm que pode ser utilizado para fazer a remoção de arquivos cujo conteúdo você deseja manter longe das mãos dos curiosos. Trata-se do shred. E sabe o qué melhor? Provavelmente ele já encontra-se instalado em seu sistema GNU/Linux mesmo que você nunca o tenha utilizado. Vamos, então, dar uma olhada nesse comando?
Suponnha que você tenha um arquivo com algum dado sensível:
$ echo "Esse arquivo possui dados secretos." > /tmp/segredo.txt 
$ cat /tmp/segredo.txt 
Esse arquivo possui dados secretos.
Em seguida, utilize o comando shred simplesmente indicando o arquivo recém-criado:
$ shred /tmp/segredo.txt
E agora, tente dar uma olhada no conteúdo do arquivo utilizando o comando cat:
$ cat /tmp/segredo.txt
E aí, surpreso com o que você viu?
Caso você deseje que o shred remova o arquivo após “bagunçar” seus dados você pode utilizar a opção “-u”. E ainda, se quiser acompanhar de perto o que o shred está fazendo durante seu período de execução basta acrescentar, como em muitos outros comandos dos sistemas Unix, o parâmetro “-v”. Então, experimente executar o shred com a seguinte sintaxe:
$ shred -u -v /tmp/segredo.txt
shred: /tmp/segredo.txt: pass 1/3 (random)...
shred: /tmp/segredo.txt: pass 2/3 (random)...
shred: /tmp/segredo.txt: pass 3/3 (random)...
shred: /tmp/segredo.txt: removing
shred: /tmp/segredo.txt: renamed to /tmp/00000000000
shred: /tmp/00000000000: renamed to /tmp/0000000000
shred: /tmp/0000000000: renamed to /tmp/000000000
shred: /tmp/000000000: renamed to /tmp/00000000
shred: /tmp/00000000: renamed to /tmp/0000000
shred: /tmp/0000000: renamed to /tmp/000000
shred: /tmp/000000: renamed to /tmp/00000
shred: /tmp/00000: renamed to /tmp/0000
shred: /tmp/0000: renamed to /tmp/000
shred: /tmp/000: renamed to /tmp/00
shred: /tmp/00: renamed to /tmp/0
shred: /tmp/segredo.txt: removed
É interessante notar que durante sua execução, o shred preencheu o conteúdo do arquivo três vezes com dados aleatórios e depois, antes de removê-lo, o comando renomeou o arquivo 11 vezes.
Para promover um processo um pouco mais seguro, você pode ainda selecionar o número de interações que o shred irá fazer substituindo o conteúdo do arquivo utilizando o parâmetro “-n ”. Por exemplo:
$ shred -n 25 -u -v /tmp/segredo.txt
Observe que, nesse caso, alternou o processo de substituição do conteúdo com alguns padrões fixos e dados aleatórios. Outra opção interessante até para “esconder” a ação do shred é solicitar que depois de todas as interações, ele substitua os dados do arquivo com zeros. Isso pode ser feito por meio da adição do parâmetro “-z”:
$ shred -n 25 -u -v -z /tmp/segredo.txt
Como “tudo” em sistemas GNU/Linux (Unix, na verdade) é representado por meio de arquivos, você pode utilizar o shred como uma ferramenta para apagar HDs ou outros dispositivos de armazenamento inteiros. Isso pode ser útil quando você vai repassar esse equipamento para outra pessoa. Para isso, basta passar como argumento o arquivo que representa o seu dispositivo de armazenamento. Por exemplo:
# shred -n 30 -v -z /dev/sda
Duas observações importantes aqui: primeiro, essa operação, salvo alguma configuração prévia, requer privilégios de root (observe o prompt como “#” no exemplo anterior). Segundo, tome muito cuidado para não passar o dispositivo errado e apagar coisas erradas! Ou seja, esse comando não é recomendado se você não estiver em paz e bem tranquilo!
Sim, é certo que com algum investimento em tecnologias mais avançadas de hardware e software, é possível recuperar dados mesmo que eles tenham sido sobrescritos diversas vezes.

Quem é Almir JR