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
quinta-feira, 10 de outubro de 2013
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
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:
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
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
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
-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:
>> – 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
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
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.
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 <e 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:
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
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
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 ~
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 ~
Efetue o download do driver
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
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:
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:
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.
quarta-feira, 12 de junho de 2013
/etc/default/useradd TRADUZIDO
#Os valores padrão para useradd
#
#A variável SHELL especifica o shell de login padrão em seu
#sistema.
#Semelhante ao DHSELL em adduser. No entanto, usamos "sh" aqui porque
#useradd é um utilitário de baixo nível e deve ser o mais geral
#possível
SHELL=/bin/sh
#
#O grupo padrão para usuá¡rios
#100 = usuários em sistemas Debian
#Mesmo que USERS_GID em adduser
#Esse argumento é usado quando a opção-n é especificado.
#O comportamento padrão (quando-n e-g não são especificadas) é a criação de um
#grupo principal utilizador com o mesmo nome que o utilizador a ser adicionada ao
#sistema.
# GROUP=100
#
#O diretório padrão. Mesmo que DHOME para adduser
#HOME=/home
#
#O número de dias após a senha expirar até que a conta
#está permanentemente desativado
# INACTIVE=-1
#
#O padrão data de expirar
# EXPIRE=
#
#A variável SKEL especifica o diretório contendo usuá¡rio "esquelético"
#arquivos; em outras palavras, os arquivos tais como um exemplo de perfil, que será
#copiados para o diretório home do novo usuário quando ele é criado.
# SKEL=/etc/skel
#
#Define se o spool de email deve ser criado enquanto
#a criação da conta
# CREATE_MAIL_SPOOL=yes
#
#A variável SHELL especifica o shell de login padrão em seu
#sistema.
#Semelhante ao DHSELL em adduser. No entanto, usamos "sh" aqui porque
#useradd é um utilitário de baixo nível e deve ser o mais geral
#possível
SHELL=/bin/sh
#
#O grupo padrão para usuá¡rios
#100 = usuários em sistemas Debian
#Mesmo que USERS_GID em adduser
#Esse argumento é usado quando a opção-n é especificado.
#O comportamento padrão (quando-n e-g não são especificadas) é a criação de um
#grupo principal utilizador com o mesmo nome que o utilizador a ser adicionada ao
#sistema.
# GROUP=100
#
#O diretório padrão. Mesmo que DHOME para adduser
#HOME=/home
#
#O número de dias após a senha expirar até que a conta
#está permanentemente desativado
# INACTIVE=-1
#
#O padrão data de expirar
# EXPIRE=
#
#A variável SKEL especifica o diretório contendo usuá¡rio "esquelético"
#arquivos; em outras palavras, os arquivos tais como um exemplo de perfil, que será
#copiados para o diretório home do novo usuário quando ele é criado.
# SKEL=/etc/skel
#
#Define se o spool de email deve ser criado enquanto
#a criação da conta
# CREATE_MAIL_SPOOL=yes
quinta-feira, 23 de maio de 2013
CERTIFICAÇÃO LPI - COMANDO FIND - LOCALIZAR ARQUIVOS
Estava eu estudando para prova de certificação LPI-101, e percebi que o comando find é um dos comandos que mais possui paramêtros, então resolvi dedicar uma boa parte dos meus estudos para esse enorme comando.
O find procura por arquivos em um diretório (recursivamente) com determinadas caracteristicas. É um comando bastante flexível e repleto de opções.
Principais paramêtros:
■-atime +n | -n | n — Procura por arquivos que foram acessados há menos do que n (-n), mais do que n(+n) ou exatamente n (n) dias.
■-ctime +n | -n | n — Procura por arquivos que foram alterados há menos tempo do que n (-n), mais do que n (+n), ou há exatamente n (n) dias.
■-exec comando {} \; — Executa “comando” para cada arquivo achado pelo find.
■-name padrão — Especifica um nome de arquivo ou padrão a ser procurado. Suporta alguns caracteres curinga, que devem ser especificados entre aspas simples para não serem expandidos pelo shell.
■-iname padrão — Faz o mesmo que o parametro “-name”, porém ignora a diferença entre letras maisculas e minúsculas.
■-perm — Permissão (modo) do arquivo, especificado em octal.
■-type — Especifica um tipo de arquivo, podendo ser f para arquivo regular, d para diretório e l para link simbólico.
■-user usuario — Faz buscas por documentos os quais o “usuário” seja dono.
Vejamos alguns exemplo agora:
find /home -name documento.txt
Faz a procura na árvore de diretórios, a partir de /home, arquivos com o nome de documento.txt
find . -name '*.txt'
Faz a procura, partindo do diretório corrente en diante(note o ponto antes do paramêtro -name), todos os arquivos com a extensão txt. É importante observar aqui que o ponto é opcional(caso o ponto seja suprimido, estará subentendido que a busca partirá do diretório atual onde o usuário se localiza, varrendo os sub-diretórios e arquivos desse diretório).
find /tmp -type d -iname '*[0-9]'
Procura no diretório /tmp, por nomes de diretórios (paramero -type d especificando o diretório e iname especificando procura por nomes, não diferenciando maiúsculas de minúsculas), que iniciem por qualquer caractere (asterisco), mas que sejam finalizados por algum número(indicados entre os colchetes, de 0 a 9).
find / -name '*.rpm' -type f -perm 644 -user vitor
Faz a procura iniciando pelo diretório raiz, por nomes de arquivos regulares(-type f) que possuam a extensão .rpm, com permissão 644(leitura e escrita para o dono, leitura para o grupo e para outros) e que pertençam ao usuário vitor.
find /usr -atime -2 -exec ls -l {} \;
find -name "arquivo.doc" -exec rm -fv {} \; ("find ." ou "find " indica que é no diretório corrente)
Procura por arquivos, a partir do diretório /usr, que tenham sido acessados nos últimos dois dias, e à medida em que forem encontrados, lista-os mostrando seus atributos.
find /tmp -type f -atime +2 -delete
Limpa a pasta tmp de arquivos de dois dias.
O comando abaixo exibe arquivos modificados a mais de 7 dias (somente o nome e data)
find ~/ -mtime +7 -printf "%f %AD\n"
melhorando o desempenho do seu Desktop
A pasta ~/.thumbnails guarda miniatura de imagens para agilizar a visualização
mas quando tem muito thumbnail o que era solução passa a ser um problema, para resolver
find ~/.thumbnails -type f -atime +7
xargs rm -fbusca arquivos no path
find ${PATH//:/ } -iname "*admin*" -executable -type f
find ${PATH//:/ } -executable -type f -printf "%f\n" #exibe só o nomeEditar o arquivo mais recentemente criado
vim `find -type f -cmin -10
head -n1`doc ou odt?
find ~/ -iregex ".*\(doc\
odt\)"mais sobre expressões regulares com o find
find . -regextype posix-egrep -iregex '.*/.*teeworlds' -print0
xargs -0 rm -rf Para buscar por vários tipos de imagens
find -regextype posix-extended -regex '.*\.(jpg
png)'localizando arquivos de hoje
find . -type f -ctime -1Uma variação possível - Mostrando de forma detalhada
find . -type f -ctime -1 -lslocalizando arquivos modificados em um intervalo de tempo
find ./ -mtime +6 -mtime -8 -printlocalizando arquivos em um intervalo de tempo
•fonte: command-line-fu
find . -type f -newermt "3 years ago" ! -newermt "2 years ago"combinando o find com o xargs
find . -type f -maxdepth 1 -name '*.ext' -print0
\
xargs -0 comandocopiando estrutura de pastas (somente pastas)
(cd /home/user/source/; find -type d -print0)
xargs -0 mkdir -pAtribuindo propriedade
isto tem que ser feito como root
find ~ ! -user fulano -print0
xargs -0 chown fulano:fulanoOutra opção seria
chown -R fulano.fulano
melhorar desempenho do firefox
find ~ -name '*.sqlite' -exec sqlite3 '{}' 'VACUUM;' \;deletar diretórios vazios
find . -type d -empty -delete
find
adicionando extensão a arquivos
Eu tinha um monte de arquivos sem extensão e queria colocar
no final txt, segue a solução.
find ./ -maxdepth 1 -type f -print0
xargs -0 -i mv ./{} ./{}.txt
Procurando por um padrão no $PATH
find ${PATH//:/ } -iname "*pattern*"
Apagando somente arquivos de um tipo
find ./clipart -type f -iregex '.*\.[^svg]$'
xargs rm -fSe a intenção é apagar apenas
find . -name '*' -print0
xargs -0 rmlocalizando arquivos duplicados usando md5sum
find -type f -exec md5sum '{}' ';'
sort
uniq --all-repeated=separate -w 33
cut -c 35-outra opção
find "$@" -type f -print0
xargs -0 -n1 md5sum
sort --key=1,32
uniq -w 32 -d --all-repeated=separate
1) Find all files.
2) Pipe the filenames to xargs.
3) Which will run md5sum on each filename and pipe the output to sort.
4) Which will sort the output based on the first 32 characters (the checksum) and pipe the output to uniq.
5) Which will find the unique checksums by only looking at the first 32 characters. The options to the uniq command cause it to print each duplicate (and only duplicates) on a separate line.usando alternativas
find -iname *.doc -o -iname *.odt
find -atime +5 \( -name "*.o" -o -name "*.tmp" \)
find + tar
find /home/zago/guiaz -mtime -1 -type f -print
tar jcvf meusarq.tar.bz2 -T -
Localizando arquivos maiores que 3G
find . -type f -size +3G
xargs -I% du -sh %
find + rsync
rsync -avz -e ssh --files-from=<(find -mtime +30 -mtime -60) origem destino
find . -name "whatever.*" -print0
rsync -av --files-from=- --from0 ./ .
copiar arquivos
find /originalPath/ -iname \*.mp3 -print0
xargs -0 -i cp ./{} /destinationPath/
# ou
find . -name '*.mp3' -print0
xargs -i -0 cp {}
outro exemplo
find . -name "*.pdf" -print0
xargs -0 cp -ft downloads/Observe também a opção -u do comando cp que faz com que o cp
copie apenas se o arquivo copiado for mais novo, ou seja, se
no destino houver o mesmo arquivo que está sendo copiado, a cópia
só será efetivada se o arquivo de origem for mais novo.
Arquivos criados a menos de dez minutos e "-and -a" com extensão txt
find ~/ -cmin -10 -a -iname *.txt
find ~/ -size +500M
find ~ -size +10000 -a -iname *.pdf
arquivos com exatamente 1000 caracteres
find . -size 1000c
Arquivos entre 599 e 701 caracteres
find . -size +599c -and -size -701c
Buscando em dois diretórios htdocs e cfi-bin
find htdocs cgi-bin -name "*.cgi" -type f -exec chmod 755 {} ;
Contar quantos txt há em minha pasta pessoal "~/" (combinando com o comando wc)
find ~/ -iname *.txt
wc -l
Mostra todos os arquivos pdf que não sejam maiores que 2000 bytes
tudo que estiver após a exclamação será negado.
find ~/ -iname *.pdf ! -size +2000
Invertendo a lógica do comando acima no primeiro caso tirando a exclamação, no segundo invertendo o sinal de + para menos, veja:
find ~/ -iname *.pdf -size +2000
ou
find ~/ -iname *.pdf ! -size -2000
Procura pdf's de tamanho maiores que 2000 bytes e mostra somente o nome sem o caminho "basename"
find ~/ -iname *.pdf -a -size +2000 -exec basename {} ;
Procurar por arquivos de um usuário especifico
find / -user sergio
find . -user root
Busca com opções. No caso arquivos html ou htm
find ~/ ( -name *.htm -o -name *.html ) -atime +5
find ~/ -iregex '.*html?' -atime +5
**Observações importantes** mudar permissão somente em diretórios "-d"
find . -type d -exec chmod 755 {} ;
Note: chmod -R 755 ./* também aplica a modificação mas também pega arquivos
!!Usando o find com o xargs
Usando o parâmetro -exec ele executa cada vez que acha o arquivo, repassando via pipe "
" para o comando xargs o find faz primeiro as buscas tornando-se mais rápido.
find ~/ -type f -print
xargs rm -rf
find /originalPath/ -iname *.mp3 -print0
xargs -0 -i cp ./{} /destinationPath/
Procure no diretório atual "." arquivos "f" imprima a lista "-print" filtre com o egrep ignorando maiúsculas e minúsculas "i" a "expressao".
find . -type f -print
xargs egrep -i "expressao"
Procurando todos os mp3 e exibindo o espaço ocupado por eles
find . -name \*.mp3 -print0
xargs -0 du -ch
Encontrando arquivos que não contenham extensão .c ou .o
find ~/docs -type f
egrep -v '.[oc]'
Qual a diferenca entre os comandos abaixo?
% find . -user queiroz -exec ls {} ;
% find . -user queiroz -print
xargs ls
A diferenca e que no primeiro find o comando ls e executado uma vez para cada arquivo encontrado. Se forem encontrados 1000 arquivos o comando ls sera executado 1000 vezes.
Ja no segundo exemplo, com a saida do find redirecionada para o comando xargs, o comando ls sera executado sobre um grupo de arquivos de cada vez e nao uma vez para cada arquivo. O que ira determinar o numero de vezes que o comando xargs executara o comando ls e justamente o tamanho da linha de comandos. O comando xargs ira dividir a saida gerada pelo comando find em blocos compativeis com a capacidade do sistema de maneira a que nao ocorra um erro quando da execucao, em nosso caso, do comando ls.
Em outras palavras, suponhamos que o comando find descubra 2000 arquivos sobre os quais o comando xargs devera executar o comando ls. O limite maximo de arquivo sobre os quais o comando ls pode atuare de 500. O comando xargs automaticamente realizara a divisao desta entrada em quatro blocos de 500 arquivos.
Concluindo, o comando xargs e bem mais eficiente do que a diretiva -exec do comando find, por exigir menos recursos computacionais para executar a mesma tarefa. uma vez sobre todos os arquivos encontrados.
Veja o comando abaixo (ainda não testado) procure em /tmp arquivos com tempo de acesso superior a sete dias "-atime +7" e "and" usuário corrente $USER, redirecione através do xargs para o comando de remoção "rm", sem fazer perguntas -f
find /tmp -atime +7 -type f -a -user $USER
xargs rm -rf
find /tmp -atime +7 -type f
xargs rm -f
Procura todos os arquivos suid e setgid executables:
find / ( -perm -4000 -o -perm -2000 ) -type f -exec ls -ldb {} ;
!!Redirecionando o erro padrão "2>/dev/null" para desviar as mensagens
de erro por acesso não root
find / -type f -name dummy 2>/dev/null
!!Parâmetros
-ctime
-mtime
-atime
-cmin
-amin
-mmin
-user
-nouser
-uid
-gruop
-gid
-and ou -a
-or ou -o
-size
-name
-iname
!!Usando ''printf''
O argumento -printf pode receber vários parâmetros
find ~/ -iname *.txt -printf %f\n "\n faz quebra de linha"
These are used the most:
%p imprime o nome do arquivo com o caminho
%m permissions of file, displayed in octal.
%f imprime o nome do arquivo sem o caminho
%g name of the group the file belongs to.
%G gid
%U uid
%h display name of directory file is in, filename isn't included.
%u username of the owner of the file
%c imrprime -ctime
%a tempo de acesso
%m imprime modo de permissão (formato octal)
%A(caractere) - devolve o "atime" (tempo de acesso)
%AD imprime a data tipo dia/mes/ano (data de acesso)
%AH imprime a hora
%AT /hh/mm/ss
%A+ data e tempo separados pro "+"
%Ax mm/dd/aaaa
find ~/ -iname *.txt -printf "%f %Ax %AT \n"
O comando acima exibe arquivos assim:
nome data hora
serii.txt 04-01-2007 12:42:07
%C(caractere) "ctime"
%T(caractere) "mtime"
Um último exemplo
find . -iname *.txt -printf "%p %m %AA %Ad de %AB de %AY %AX\n" isto retorna algo como:
/caminho/leia-me.txt 644 sexta 23 de junho de 2006 10:30:53
Para imprimir o nome do arquivo com o modo de permissão octal use
find ~ -iname *.txt -printf "%p %m\n"
acrescentando o parâmetro %a retorna o ultimo acesso de acordo com "-ctime"
find ~ -iname *.txt -printf "%p %a %m\n"
printf com os parâmetros "%p %m %Ax\n" retorna algo como
/caminho/leia-me.txt 644 23/06/06
printf com os parâmetros "%p %m %g %u %Ax\n" retorna algo como
/caminho/leia-me.txt usuario grupo 644 23/06/06
-printf "%f %u %g %m %Ax %AX\n" veja detalhes abaixo
%f nome sem o caminho
%u usuário
%g grupo
%m modo de permissão
%Ax dada de acesso no modo dd/mm/aa
%AX hora de acesso do tipo 18:15:23
\n quebra de linha
!!Usando Expressões regulares
$ find . -regex './ch0[1-2]_0[1-3].*'
./ch01_01.html
./ch01_02.html
./ch02_01.html
./ch02_02.html
./ch02_03.html
How do I search for files, then do something with the result?
* Find all .conf files, then search through them to see if they contain any IP addresses, then print the filename, line number and the line containing the address
find /etc -name *.conf -exec grep -Hn '[0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*[.][0-9][0-9]*' {} ;
!Fazendo um backup
tar -zcvf ultimamod.tar.gz `find . -mtime -1 -type f -print`
!Outros exemplos
Localizar todos os arquivos do tipo txt gerados nos últimos 20 minutos, menos os cookies do navegador, que são cosntantemente gerados e não devem ser buscados
find ~/ -iname *.txt -cmin -20
grep -v "cookies"
Usando expressões regulares
find . -regex './ch0[1-2]_0[1-3].*'
./ch01_01.html
./ch01_02.html
./ch02_01.html
./ch02_02.html
./ch02_03.html
Limpando miniaturas de imagens no nautilus
find ~/.thumbnails -type f -atime +7 -exec rm {} ;
Assinar:
Postagens (Atom)