Encontrando arquivos pela data no Linux

Há momentos em que você precisa encontrar arquivos no linux que foram criados ou modificados em um determinado intervalo de tempo.

Por exemplo, você tem aquele WordPress de um cliente que não costuma atualizar os plugins e o próprio WordPress e acaba sendo vítima daquele código malicioso que muitas vezes acaba gerando um alerta no Google e o site acaba bloqueado com aquele aviso vermelho quando você tenta editar.

Então você cadastra o site no Google Webmaster Tools e descobre quais arquivos estão infectados.

Mas acredite, isso é só o começo.

Além dessa ferramenta do Google e outras ferramentas não dizerem todos os arquivos infectados, eles normalmente não dizem como resolver.

Mas você é esperto, você tinha um backup do site sem os arquivos infectados.

Então você sobe os arquivos do backup substituindo todos os infectados e problema resolvido.

#SóQueNão!

É bem comum eles criarem novos arquivos infectados, pois esperam que a primeira coisa que o dono do site faça é jogar um backup lá.

Então qual a solução?

São várias, mas uma bem prática é o assunto desse artigo.

Vamos encontrar arquivos editados dentre um intervalo de datas, pois como você já identificou um ou mais arquivos, é bem provável que os outros sejam da mesma data.

Encontrando arquivos mais novos do que a data X (sempre no formato americano yyyy-mm-dd):

find ./ -newermt "2016-03-05"

Encontrando arquivos editados nos últimos 15 dias:

find ./ -mtime -15 -print

Lembrando que você pode procurar em tipos espefíficos de arquivos, como arquivos PHP, adicionando no comando:

-iname "*.php"

Então ficaria:

find ./ -iname "*.php" -mtime -15 -print

Encontrando arquivos do dia X ao dia Y:

find ./ -newermt "2016-02-04" -and -not -newermt "2016-03-03"

 

Referências:
http://www.cyberciti.biz/faq/howto-finding-files-by-date/
http://www.cyberciti.biz/faq/linux-unix-osxfind-files-by-date/
http://stackoverflow.com/questions/158044/how-to-use-find-to-search-for-files-created-on-a-specific-date

 

Habilitando o mod_rewrite no apache

Habilitar o modo rewrite é essencial para que o seu wordpress ou qualquer outro site funcione com a URL amigável.

Por exemplo, um wordpress sem a URL amigável ficaria assim:

www.seusite.com.br/?p=123

E com a URL amigável seria:

www.seusite.com.br/viajens

Isso além de ser melhor para o usuário, também ajuda muito na indexação do Google e outros mecanismos de buscas.

Então, mãos à obra!

Antes de tudo temos que ter permissão de administrador no linux.

Para isso, digite no terminal o seguinte comando:

sudo su

Então confirme sua senha e pronto.

Vamos agora, verificar se ele está instalado.

Se você instalou o apache2 pelo meu tutorial então você já tem esse módulo, mas vamos verificar mesmo assim.

Utilize o seguinte comando:

ls /usr/lib/apache2/modules/mod_rewrite.so

Se o arquivo existir, o nome dele será impresso logo abaixo do seu comando executado.

Se não existir dará uma mensagem que o arquivo não pode ser encontrado.

Mais ou menos assim:

ls: cannot access /usr/lib/apache2/modules/mod_rewrite.so1: No such file or directory

Habilitando o modo rewrite no apache2

Agora que sabemos que o módulo existe vamos liga-lo.

Execute o comando:

a2enmod rewrite

Você verá algo semelhante a isso:

Enabling module rewrite.
Run '/etc/init.d/apache2 restart' to activate new configuration!

Isso significa que já está habilitado.

O próximo passo é habilitar o modo rewrite no seu site, pois normalmente vem desativado.

Abra o arquivo 000-default.conf no seu editor de preferência e localize a configuração do site que você deseja ativar.

O arquivo fica em: /etc/apache2/sites-available/000-default.conf

Encontre DocumentRoot /var/www/html

E adicione logo abaixo:

<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
</Directory>

Agora é só reiniciar o apache e tudo estará funcionando.

Execute o seguinte comando no seu terminal:

/etc/init.d/apache2 restart

Instalando um servidor SMTP no Linux (postfix)

O servidor SMTP é o servidor de e-mail.

A instalação do servidor SMTP é muito simples.

No terminal digite:

sudo apt-get install postfix

Quando ele te pedir uma senha você deve definir uma de sua preferência.

Depois disso ele concluirá a instalação.

Para futuras configurações no servidor SMTP apenas digite no terminal:

sudo dpkg-reconfigure postfix

E é isso, agora você já tem o servidor rodando no seu Linux.

Com isso você já poderá enviar e-mails utilizando a função mail() do php.

Se quiser configurar algum programa de e-mail para enviar usando seu servidor você deve configurar o programa para o IP ou domínio da sua máquina e usar a porta 25 que é a padrão.

Viu?! Foi rápido e fácil!

Como Importar e Exportar grandes bancos de dados no MySQL

Quando você não consegue fazer operações como exportar e importar arquivos no banco de dados pelo PHPMyAdmin por causa do tempo limite então o jeito é ir pelo comando mesmo.

No linux você faz isso com esses comandos:

  • Exportar:

mysqldump -uusuario_do_banco -psenha nome_do_banco > nomedoarquivo.sql

  • Importar:

mysql -uusuario_do_banco -psenha nome_do_banco < nomedoarquivo.sql

No WINDOWS os comandos são iguais, porém você precisa estar na pasta bin do seu mysql.

Caso use o EasyPHP por exemplo você precisa estar em C:\EasyPHP\mysql\bin\ quando usar o comando.

Permissão de arquivos (CHMOD)

Todo arquivo ou pasta tem seu conteúdo e seu nome visível para qualquer usuário.

Mas além disso eles tem um dono e permissões de arquivos que podem ser vistos nas propriedades do arquivo ou da pasta.

Uma outra forma de visualizar a permissão do arquivo é pelo FTP ou digitando o comando abaixo no terminla do seu Linux:

ls -l

Que teria mais ou menos esse resultado:

-rw-r–r– 1 surrealad surrealad 2267 2011-04-14 18:39 insertLogo.php
drwxr-xr-x 2 surrealad surrealad   69 2011-05-26 14:47 npub/
-rw-r–r– 1 surrealad surrealad 2749 2011-03-09 15:52 pictogramaBranco.png
-rw-r–r– 1 surrealad surrealad 2545 2011-03-09 15:52 pictogramaPreto.png

A primeira, a terceira e a quarta linha são arquivos e a segunda um diretórios. Sabemos disso pela letra d no começo da segunda linha.

Se fossemos ver esses arquivos no FTP eles teriam a permissão 755 para a pasta e 644 para os arquivos.

Isso porque no FTP a permissão é representada em números e no terminal do Linux ou SSH ela é representada em letras.

Essa representação da permissão é dividida em 3 partes que são:

1 – Permissão para o dono ou usuário
2 – Permissão para usuários do mesmo grupo
3 – Permissão para todos os usuários

Cada número (para o FTP) ou letra (para o terminal do Linux ou SSH) significa um tipo de permissão, que são:

0 : — (nenhuma permissão)
1 : –x (somente execução)
2 : -w- (somente escrita)
3 : -wx (escrita e execução)
4 : r– (somente leitura)
5 : r-x (leitura e execução)
6 : rw- (leitura e escrita)
7 : rwx (leitura, escrita e execução)

Algumas vezes, acontece de um usuário colocar permissão 777 para todos os arquivos e pastas de seu site e isso não é seguro.

A permissão 777 só deve ser utilizada em pastas que terão seu conteúdo alterado, como pastas de upload ou de cache por exemplo.

Utilizando de um bom cliente FTP como o FileZilla, você pode “rapidamente” corrigir isso, pois ele te dar a opção de aplicar a mesma permissão às subpastas e/ou arquivos das subpastas.

Já no linux isso é um pouco diferente, embora você possa diferenciar arquivos de pastas pelo comando o CHMOD não pode.

Para isso, você precisará da ajuda do comando find e do xargs.

Use este comando para mudar a permissão de todos os arquivos daquela pasta:

find -type f | xargs -i chmod 644 {}

Use esse comando para aplicar a permissão apenas para a pasta e as subpastas:

find -name '*' -type d | xargs -i chmod 755 {}

Basicamente é isso.

Já da pra brincar um pouco ou sair de uma furada.

Compactando/Descompactando arquivos no linux pelo terminal

Compactar e descompactar aquivos no linux pelo terminal pod ser um tanto quanto complicado, não pela complexidade dos comandos, mas pela diversidade deles já que cada tipo de arquivo tem uma forma diferente de fazer isso. Lembrando que se você não tiver alguma desses comandos disponíveis no seu Ubuntu, basta instalar os pacotes com o comando apt-get install, por exemplo pro zip seria:

apt-get install zip

Os comandos são:

  • .zip

Compactando:

zip -r nomedoarquivo.zip nome_do_arquivo_ou_pasta

Descompactando:

unzip nomedoarquivo.zip
  • .rar

Compactando:

rar a -r  nomedoarquivo.rar arquivo1 pasta1 arquivo2 pasta2

Descompactando:

rar x nomedoarquivo.rar
  • .tar

Compactando:

tar -zcvf nomedoarquivo.tar arquivo1 pasta1 arquivo2 pasta2

Descompactando:

tar -xvf nomedoarquivo.tar
  • .tar.gz

Compactando:

tar -czfv nomedoarquivo.tar.gz pasta1 arquivo1 pasta2 arquivo2

Descompactando:

tar -vzxf nomedoarquivo.tar.gz
  • .tar.bz2

Compactando:

tar -cjfv nomedoarquivo.tar.bz2 arquivo1 pasta1 arquivo2 pasta2

Descompactando:

tar -jxvf nomedoarquivo.tar.bz2