Dicas de segurança para sites WordPress

Outra dica para ficarmos de olho está relacionada ao entendimento de como o código malicioso se aproveita para iniciar seus trabalhos em sites WordPress vulneráveis. Assim podemos evitar abrir brecha. É um pouco sobre isso que escrevo nesse POST.

Entenda o mecanismo

Normalmente é um processo em grande parte automatizado por sistemas preparados pra isso, mas que só vão ter sucesso, dentre outras, nas seguintes condições:

Condição 1 – Permissões

As permissões dos arquivos foram alteradas pelo administrador desavisado, dando permissão para quem não deveria.

Então muita atenção quando algum plugin ou tem algum erro e, para resolver, os tutoriais orientam ajustar as permissões. Existem incontáveis tutoriais condenáveis mandando colocar tudo 777 (isso é escancarar a segurança, como pendurar todas as chaves no portão na frente de casa).

Basta os robôs de varredura, que trabalham dia e noite (simples como um visitante acessando o site), descobrirem que determinado site está escancarado, e automaticamente ele vai executar um arsenal de explorações conhecidas até conseguir entrar mais a fundo.

Dica de como se proteger

Então a maneira de se proteger é entender como funcionam as permissões e monitorar para que estejam sempre em ordem. Aqui nesse link tem orientações do próprio wordpress.org sobre como devem estar as permissões em um site WordPress. E para quem administra servidores linux, aqui nesse post mostro um pouco mais detalhes sobre como isso funciona.

Condição 2 – Backdoor

A própria pessoa que ‘monta’ o site introduz um backdoor sem saber. Isso infelizmente acontece muito. Nesse caso, mesmo com as permissões OK, e outros mecanismos de segurança também OK, a backdoor já está lá, camuflada e prontinha esperando conexão de quem explorar, sejam humanos ou robôs. Daí basta os robôs explorarem injetando mais código malicioso através da backdoor e o cenário está montado para inúmeros tipos de atividade maliciosa ao mesmo tempo.

Dica de como se proteger

A maneira de se proteger é sempre olhar o código e buscar apenas plugins/temas oficiais do wordpress.org, que tenham reputação a zelar. Desconfiar sempre de plugins muito bons e gratuitos ou muito baratos.

Condição 3 – Novas vunlerabilidades

Algum dos componentes do site ou servidor até então seguro passa a estar vulnerável. Pode ser o sistema operacional, banco de dados, webserver, php, WordPress, plugins, temas… enfim, uma infinidade de componentes.

Pesquisadores e programadores passam dia e noite descobrindo erros em seus códigos e corrigindo, e quando publicam a correção o criminoso estuda e desenvolve o código da exploração para todo mundo que não atualizar o dado sistema com a última versão corrigida. Além disso, normalmente ele treina os robôs para varrerem a internet atrás de sites executando a versão. Essa informação é tão fácil de obter quando uma simples visita a um site. Por exemplo, aqui nesse link até pouco tempo atrás era possível saber, em milésimos de segundo, qual a versão desse plugin usado aqui no BLOG. Agora me diga: quanto tempo você acha que um desavisado leva pra atualizar um componente vulnerável pra última versão segura? Às vezes anos…

Daí os robôs exploram e injetam ainda mais códigos maliciosos dentro dos interesses de quem comanda essas redes maliciosas.

Dica de como se proteger

Então a maneira de se proteger é mantendo *tudo* sempre o mais atualizado possível.

Condição 4 – Zero-days

Algum componente vulnerável e nenhum dos interessados em corrigir sabe disso. São as chamadas vulnerabilidades “Zero-day”. Nesses casos apenas especialistas muito bem pagos conseguem se proteger, e mesmo assim muito desafiador. É por esses caminhos que muitos criminosos atuam nesse exato momento sem nem mesmo estarem sendo monitorados ou investigados. Estão completamente incógnitos.

Dica de como se proteger

Então não tem muito o que fazer a não ser monitorar a ‘pegada’ – footprint – atividade estranha no servidor. Se a vulnerabilidade estiver sendo explorada para efetuar tarefas leves, dificilmente será percebida, agora se estiver consumindo muito recurso, fica mais fácil de perceber. Normalmente WAFs (que são firewalls de aplicação web, tais como como Wordfence ou Cloudflare) ajudam nisso pois fornecem métricas interessantes.

Concluindo

Então é mais ou menos por aí. Existem ainda inúmeras outras condições. Essas quatro foram as primeiras que me vieram em mente ao escrever esse POST. Quanto mais conhecimento for obtido nessa área e melhor forem implementados os controles, mais seguro é o site. E quanto mais seguro, melhor é a continuidade do negócio ao qual o site pertence. Também mais fácil a atuação de analistas de segurança para uma resposta rápida caso algo aconteça, o que também é fundamental.

Ao mesmo tempo, mecanismos de segurança são importantes e podem ajudar, mas estão longe de ser garantia de segurança. É como se comparássemos com vigilantes ou câmeras de segurança. Melhoram a sensação de segurança e ajudam a resolver alguns problemas pontuais, mas sabemos que de certo tempo pra cá nós vemos a transmissão de barbaridades acontecendo justamente pelas imagens de câmeras de segurança. Elas não impedem, apenas registram.

Cabe a cada um de nós fazer nossa parte em busca de conhecimentos necessários e segurança nesse território perigoso que sempre foi a Internet. Assim ao menos nossos sites WordPress estarão um pouco mais seguros.

Como sempre, obrigado pela leitura.

Teve seu WhatsApp hackeado?

Fique tranquilo. Evite entrar em pânico.

Realmente, lamentavelmente a Internet anda muito pior do que a rua das cidades onde moramos, pois é acessível INTERNACIONALMENTE, e ali na rua só tem os bandidos que conseguem atuar fisicamente por aqui.

Mas não se desespere. Aqui tem algumas dicas úteis. Leia com calma pois não significa que seja um passo-a-passo a realizar no seu caso. Use essas dicas mais para aprender sobre o assunto. De cada frase aqui, tente entender as entrelinhas de como a maquinação funciona para saber agir no seu caso.

Se você tinha habilitada a autenticação de dois fatores (2FA), os criminosos não conseguirão habilitar seu WhatsApp em outro aparelho para ter acesso aos seus contatos e conteúdo de conversas.

Ainda não precisa sair mudando senhas desesperadamente.

Comece abrindo o boletim de ocorrência na delegacia de polícia civil (eles atendem pela internet mesmo, bem fácil). Informe no BO tudo o que ocorreu até agora, inclusive o número de telefone de quem está nessa atividade fraudulenta. Daí com as evidências que você vai informar, eles possivelmente devem tirar esse número de atividade assim que puderem.

São Paulo: https://www.delegaciaeletronica.policiacivil.sp.gov.br/

Rio de Janeiro: https://delegaciaonline.pcivil.rj.gov.br/

Santa Catarina: https://delegaciavirtual.sc.gov.br/

Entre em contato com um técnico de confiança ou alguém que entenda bem do assunto. Informe tudo o que ocorre e o que você já fez. Peça algumas dicas.

Tente perceber se foi apenas uma ação pontual, por exemplo de alguém usando sua foto para pedir dinheiro para uma pessoa de sua família em específico. Pode ser que o WhatsApp desse seu familiar tenha sido comprometido, e não o seu. Entende?

Alerta total aos seus ambientes virtuais partir de agora, não precisa ainda sair mudando senha de tudo. Mas é claro, se tiver algo muito valioso e que você ache que pode estar vulnerável, se puder mude a senha de acesso.

Prestar atenção à tudo que puder pra ver se algo mais está comprometido, ou se está em condições normais. (e-mails, SMS, mensagens, chats, contas bancárias, notificações). Se suspeitar que algo está comprometido, mude a senha.

Avise amigos ingênuos mais próximos que estejam mais propensos a ‘cair’ cegamente na lábia desse golpista.

Oriente os familiares que receberem esse tipo de contato a procurar esse botão de “Denunciar” ou “Reportar” na tela da conversa daquele número e denunciar. Quanto mais pessoas fizer melhor.

pelo WhatsApp Web é algo assim, “Denunciar”
pelo celular, clique no menu da conversa e use o botão “Mais”
Aí está a opção de “Denunciar”

É bom também incentivar os familiares a conhecer e configurar corretamente as preferências de privacidade do WhatsApp. Isso fica nas preferências -> conta -> privacidade, e lá temos as opções que podemos restringir como por exemplo:

1) Visto por último = ninguém (daí ninguém poderá saber a última vez que você abriu seu WhatsApp)

2) Foto do perfil = meus contatos (daí não é qualquer pessoa que terá acesso à sua foto do perfil)

3) Recado = ninguém (daí ninguém poderá ler o recado que você deixa no seu perfil)

4) Desativar confirmação de leitura (daí ninguém pode saber se você leu ou não leu a mensagem)

Quando estiver com tempo leia com calma nesse artigo: https://www.mentebinaria.com.br/artigos/o-que-fazer-antes-que-seu-celular-seja-roubado-r44/

(principalmente a lista do que têm que ser feito antes disso acontecer)

O Fernando atualmente é pesquisador de segurança numa empresa renomada (a Trend Micro). Ele que escreveu esse artigo. É muito bom esse conteúdo dele!! A comunidade ‘mente binária’ é fundada por ele. Recomendo fortemente que você leia o conteúdo desse link.

2FA é de longe o item mais importante dessa lista, e eu espero que você já tenha feito.

Importante incentivar nossos familiares a ativar isso também! Nosso aplicativo de 2FA não pode ter apenas uma ou duas contas cadastradas. Deve ter todas que puder, tem que ser recheado de contas lá! Então agora é hora de pensar em todas as contas e senhas mais importantes para ir ativando 2FA. Algumas pessoas usam o app do Google, mas tem da Microsoft também, dentre outros.

Seguindo essas dicas, o negócio a partir daí é ficar calmo e esperar passar. Ao ver que não consegue o que espera, o criminoso certamente vai parar de agir.

Conhece o Ventoy?

Volta e meia na vida dos geek de carteirinha aparecem projetos “maravilha da natureza” em que se faz necessário compartilhar com os amigos. É comum na vida de qualquer pessoa, incluindo o sysadmin, esquecer que existe uma solução e ficar batendo-cabeça em caminhos tortuosos por bastante tempo.. 😉

Por isso, dessa vez escrevo um parágrafo sobre o Ventoy (https://www.ventoy.net/). Apenas uma introdução com um olhar bem positivo.

Não sei se você já conhece esse projeto, e com certeza existem similares, há décadas, tal como o bom e velho YUMI (https://www.pendrivelinux.com/yumi-multiboot-usb-creator/), SARDU (https://www.sarducd.it/sardu-multiboot-creator), Easy2Boot (https://easy2boot.xyz/). Mas esse Ventoy agora mereceu um espaço aqui.

Basicamente, com qualquer solução desse tipo, não precisa mais ficar gravando ISO bootavel em pendrive pra fazer as manutenções. Basta deixar um pendrive instalado com o esse gerenciador de multi-boot, e ele fica como se fosse um pendrive vazio, onde o admin pode armazenar diferentes imagens ISO ao mesmo tempo. Ao bootar um computador por esse pendrive, ele abre um menu ‘boot manager’/gerenciador de boot, no caso do Ventoy de fato é um GRUB, permitindo iniciar o computador por qualquer uma das ISOS ali armazenadas.

E dependendo do espaço livre no pendrive, ele ainda pode ser usado pra armazenar outros arquivos quaisquer.

Ficar desperdiçando um pendrive pra cada ISO bootável? Nunca mais!
Ficar usando a miscelânea de infinitos programas (rufus, winusb, woeusb, unetbootin, mintstick.py, tuxboot, etc, etc, etc) pra gravar imagens de diferentes tipos de bios, sistema operacional ou sistema de arquivos? Nunca mais!

Não que esses nomes não sejam importantes, é claro que todos tem seu espaço e o momento apropriado de uso.

Mas agora é bem mais fácil. Basta apenas ir mantendo (armazenando ou removendo ou atualizando) as ISO ali dentro conforme a necessidade e sempre vai poder bootar em qualquer uma delas a qualquer momento. Mão-na-roda total!

Como sempre: Obrigado pela leitura.

Referência: Abhishek Prakash da It’s FOSS https://itsfoss.com/bootable-windows-usb-linux/

Nova funcionalidade do Google Hangouts Meet

Ao iniciar vídeo conferência de hoje de manhã, notamos nova funcionalidade do Meet. Nesse post vou tentar compartilhar um pouco de como foi nossa experiência testando essa nova funcionalidade logo hoje pela manhã em videoconferência para cerca de 175 pessoas.

Nova funcionalidade de apresentação de uma aba do navegador.

Trata-se de nova funcionalidade para apresentação da aba do navegador, e com sugestão de que é melhor para vídeo e animação. Uma quebra de paradigma enorme para quem vinha injetando as apresentações através de uma playlist do VLC. E que até pouco tempo atrás injetava a tela por um participante e o áudio vindo da caixinha de som e entrando pelo microfone do celular de outro participante. =P

Anteriormente, na hora de apresentar a tela, haviam as seguintes opções:

  • A tela inteira
  • Uma janela

Então a gente usava a opção “Uma janela” e apresentava o VLC para gravuras, vídeos e áudio. Agora aparecem:

  • A tela inteira
  • Uma janela
  • Uma aba do Chrome (Melhor para video e animação)

Logo após escolher esta última opção, o navegador pergunta qual aba deseja compartilhar:

Navegador perguntando qual aba compartilhar

Após selecionar a aba onde tem a gravura4.jpeg por exemplo, o botão de Compartilhar fica habilitado para iniciar o compartilhamento. Note também que, para casos em que vai compartilhar áudio e vídeo simultaneamente, existe um checkbox ao pé da janela para permitir ou não o compartilhamento do áudio.

Ao consultar alguns dos demais integrantes da equipe de som, antes da conferência começar, comentamos a respeito de como pareceu funcionar bem nos testes preliminares que realizamos. O grande ganho foi na qualidade do áudio, que mudou da água pro vinho!

Inicialmente fizemos os testes em um ambiente virtual de silêncio relativo. Posteriormente com mais gente conectada na videoconferência, e deu uma leve impressão de que piorou um pouco. O software talvez tenha diminuído um pouco a qualidade pra compensar algo, mas mesmo assim ficou perceptivelmente muito melhor do que pelo VLC.

Costumamos usar o VLC pra tudo. Muito bom também, por sinal. Mas era muito estranho, dependia de o microfone ficar aberto no software para que o áudio do VLC fosse injetado na conferência. Então acabava que eu tinha que ‘mutá-lo’ no hardware (felizmente meu fone de ouvido tem essa opção).

Sempre ficava aquela sensação de que nós estávamos injetando o áudio na videoconferência através de algum bug do Meet. Também percebemos uma vez que, se o microfone ficasse aberto no software onde estava apresentando a tela, mesmo não capturando nada pois estava no mudo pelo hardware, o som vindo de um participante ficava mais abafado que o normal para todos os ouvintes. Ao ‘mutar’ o microfone no software do apresentador, tudo voltava ao normal e o áudio daquele participante ficava bom para todo mundo novamente. Nossas conferências tem dado quase 200 pessoas e isso foi um problema relativamente sério. Mas hoje não teve nada disso e acredito que tenham corrigido essa falha.

Como sempre, tivemos problemas típicos de microfonia, microfones que não abrem na hora certa, microfones que abrem na hora errada, pessoas esquecendo de desligar sua câmera, pessoas ‘mutando’ outras pessoas indevidamente. Acho que tudo isso faz parte. E enquanto aguardamos o Google liberar essa possível futura (e tão aguardada) funcionalidade de não permitir que todos ‘mutem’ a todos, até preparamos uma arte para tentar auxiliar alguns a compreender o processo de microfonia ou retroalimentação. Talvez assim possam ajudar a evitá-la e nossos tímpanos agradecem:

Diagrama de como acontece microfonia em videoconferências

Conclusão? Resolvemos testar a nova funcionalidade do Meet e se mostrou funcionando muito bem! Um dos pontos que não gostamos muito foi que algumas gravuras o Chrome reduz o tamanho. Acredito que faz isso em função da resolução da gravura. Daí acaba que fica meio pequeno em tela de celular (coisa que talvez não precisava diminuir por já ser menor mesmo). Já pelo VLC, não importa as dimensões da gravura ele mostra em full-screen com o máximo da largura possível. Daí se a visualização não ficar boa no celular é porque não tem como melhorar mesmo. Mesmo assim vamos deixar o VLC um pouco de lado por enquanto e seguir experimentando o compartilhamento de aba do Chromium.

POST de TESTE – Gutenberg block editor

Um pouco melhor a cada dia =)

Depois de bem estável, resolvi testar e atualizar para a versão 5.1.1 do WordPress aqui no blog. Isso implica a aderência, por padrão, do novo editor Gutenberg (em detrimento ao bom e velho TinyMCE) que usa blocos na construção do conteúdo.

Enquanto muitos ficam com medo da nova tecnologia, saiba que é mais rápido e fácil do que o TinyMCE.. bem menos botões. Tudo ficou mais simples e fácil. Me sinto na frente de uma máquina de escrever olivetti, onde só o que se vê são as teclas do teclado e o texto sendo digitado, saindo logo acima.

Para quem preferir continuar com o editor clássico, o WordPress ainda dará suporte para o plugin do Editor Clássico até 2021.

O plugin Editor Clássico restaura o editor anterior do WordPress e a tela de edição de posts, do jeitão antigo. Para instalá-lo, visite sua página de plugins e clique no botão “Instalar agora” ao lado do “Editor Clássico”. Depois que a instalação do plugin terminar, clique em “Ativar” e pronto!

O WordPress também ressalta observação para usuários de tecnologia assistiva: se tiver problemas de usabilidade com o editor de blocos, recomendamos que continue usando o editor clássico.

Plugin este que hoje, 1º de Abril de 2019 conta com mais de 4 milhões instalações ativas e teve sua última atualização de código ha 1 mês.

Mas por enquanto, estou experimentando o Gutenberg e decidido a continuar com ele. Ao menos até que algo me mostre o contrário. Sendo que durante o período de experimento, tenho adicionado exemplos de código como este:

<?php

/* This 3 lines should be commented when finishing development */
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

Ou ainda texto pré formadato como este:

While I agree with this statement, it’s worth noting that in most cases, it is possible to send a mail merge or a group email to multiple recipients from a regular Gmail account, especially if the Gmail account being used has a long history with Google and is established as a legitimate account belonging to a real person.

Ou ainda block-quote (citações – tipo de bloco é o “Citar”) como esta que é bem usada aqui no blog e os fiéis leitores sabem:

Definitivamente não enviei mais de 500 mensagens, e mesmo assim o Gmail está rejeitando as mensagens.

Existe ainda outro tipo de citação maior, mais destacada, que é o bloco “Citação”:

O que me refiro quando digo mensagens (de 1 destinatário) não é que estou tendo este problema apenas com um destinatário. Mas sim que todas as mensagens que estou tendo esse problema, não são mensagens com vários destinatários, mas sim mensagens simples, enviadas para apenas um destinatário.

E ainda vídeos incorporados como este do YouTube, usando o bloco de código incorporado:

Então fica a dica. Tudo foi relativamente fácil de fazer. Únicos dois sustos que tive foram:

  1. Na hora de usar o botão “Visualizar” o que estou escrevendo como se já estivesse publicado. Não apareceu nada além do título. Então percebí que é porque lá em cima na barra de edição, ao lado do botão Visualizar, o status mostrava o link “Salvar como rascunho” ao invés de “Salvo.”. Um pouco lento esse intervalo de auto-save do Gutenbert, mas tudo bem.
  2. Ainda não consegui inserir um ícone no meio do texto, como por exemplo um smile, ou um check (v) em html. Mas deve ter alguma maneira de fazer. Anteriormente a gente variava entre as abas “Visualização” e “Texto” e fazia horrores.

Mas agora tudo parece apenas um pouco diferente. Sugiro que, se ainda não o fez, tire um tempo para exercitar. Nunca é tarde. Para quem for mais tradicionalista fique com o editor clássico, a opção do plugin está aí (e tem bastante aderência). Para quem for mais moderno, insista no Gutenberg e aprenda como fazer as coisas nele. Algo de bom Matt Mullenweg e sua comunidade devem ter visto nele para colocá-lo assim como padrão no WordPress.

Entenda as permissões em sistemas *nix

Algumas pessoas já me pediram explicação sobre permissões no Linux, alegando que não entendem como dar permissão pelo terminal, e essas coisas.
Recentemente tive a oportunidade de explicar a um amigo, lá pelo discord do Mente Binária (http://menteb.in/discord), e então já fomos anotando as informações para montar um POST. Assim, o mesmo conteúdo poderá ser utilizado outras vezes, com outras pessoas.

Então aqui vai uma breve explicação inicial sobre permissões nos sistemas semelhantes à Linux..Vale para *nix na realidade.
A explicação que segue foi preparada com as minhas próprias palavras e uma maneira simples de tentar explicar algo que muitos acham complexo.

Sempre começo informando que permissão é fácil duma vez.. e digo: – “421 – grava esse número.”

Permissões se resumem à possibilidade ou não de Leitura, Escrita e Execução em arquivos ou diretórios.

Cada uma dessas possibilidades, é expressa por números com valores:

Leitura = 4
Escrita = 2
Execução = 1

Por isso a dica de memorizar o número 421.

Leitura em inglês é traduzido como Read
Escrita em inglês é traduzido como Write
Execução em inglês é traduzido como eXecute

Note as letras em destaque em Read/Write/eXecute: r w x

Por isso, quando se dá um comando “ls -l” com o objetivo de listar os arquivos e pastas no diretório atual, se vê algo parecido com:

-rwxrwx--- e outros detalhes como dono, grupo e nome do arquivo

Essas letrinhas aí significam o seguinte:

r significa que esse arquivo tem permissão de leitura (Read)
w significa que tem permissão de escrita (Write)
x significa que tem permissão de execução (eXeCution)

♥Daí surge a pergunta: mas por quê não apenas rwx e sim rwxrwxrwx? Parece que está repetindo. Não parece?
Talvez isso é o que confunde muita gente.

É que são três grupos: rwx pro dono do arquivo… rwx pro grupo do arquivo… e rwx pra outros (ou qualquer um, enfim tudo que não for dono e grupo)
Sempre começa com um traço, e depois os três grupos. Assim:

-[---][---][---] e outros detalhes como dono, grupo e nome do arquivo

Se contarmos quantos rwx tem, vai ver que, em condições básicas de permissão, serão sempre 9. Sendo 3 pra dono 3 pra grupo 3 pra outros.

Agora o 421 numericamente falando, são as permissões de usuários. Para manipular as permissões de um arquivo, usa-se uma matemática de simples soma com esses números.
Se temos um arquivo aaa.txt e queremos deixar sem permissão pra nada, o comando seria:

$ chmod 000 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

---------- aaa.txt

Ou seja, o arquivo está sem permissão alguma. Nem o dono conseguirá ler o conteúdo do arquivo.

Agora, se quiser que o dono do arquivo tenha permissão de leitura, o comando seria:

$ chmod 400 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

-r--------- aaa.txt

Até aqui, estamos aprendendo como manipular essas atribuições de permissões.
Lembrando que no comando chmod, os números passados como argumento se referem a permissão, mas a posição de cada algarismo se refere a dono, grupo e outros…
Por exemplo: agora queremos que só os outros tenham permissão de leitura, então o comando seria:

$ chmod 004 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

-------r-- aaa.txt

Sacou a ideia?
Faça um desenho no papel e tudo fica mais claro.. e aproveite para ir testando num terminal também, claro.

Note que, nos comandos de exemplo de chmod que foram usados até aqui, falamos apenas de permissão de leitura, por isso só trabalhamos no número 4..

Leitura em inglês é Read = 4
Escrita em iinglês é Write = 2
Execucão em inglês é eXecute = 1

Então, pra todos (dono, grupo e outros) terem permissão de executar, o comando seria assim:

$ chmod 111 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

---x--x--x aaa.txt

Ao executar o comando chmod seguido de algum número como argumento, são 3 posições:

$ chmod [][][] algum.arquivo.extensao

A primeira posição é usada para permissão de dono
A segunda posição é usada para permissão de grupo
A terceira posição é usada para permissão de outros (ou qualquer um, enfim tudo que não for dono e grupo)

Na primeira posição [] pode-se colocar ou 4 ou 2 ou 1.. para permissão de dono (ou leitura, ou escrita, ou execução)
Na segunda posição [] pode-se colocar ou 4 ou 2 ou 1.. para permissão de grupo (ou leitura, ou escrita, ou execução)
Na terceira posição [] pode-se colocar ou 4 ou 2 ou 1.. para permissão de outros (ou leitura, ou escrita, ou execução)

E pronto! Isso é o básico de permissão em *nix!

Vamos seguir com mais alguns exemplos para fixar bem o que aprendemos até aqui.
Um comando como esse:

$ chmod 421 aaa.txt

Deixaria o arquivo aaa.txt com as seguintes permissões:

-r---w---x aaa.txt

…pois com o número 421 estamos na realidade atribuindo três posições: [4][2][1]

4 para dono
2 para grupo
1 para outros

Agora um ponto bem importante:
Um arquivo totalmente aberto com todas as permissões para todo tipo de usuário é perigoso, praticamente público, mas o comando para fazer isso seria assim:

$ chmod 777 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

-rwxrwxrwx aaa.txt

Usa-se o número 7 pois quero dar rwx (4+2+1) = 7

Note que temos uma soma matemática aí.

matemática 4+2+1=7 pra dono
matemática 4+2+1=7 pra grupo
matemática 4+2+1=7 pra outros

Ao passo que se compreende a soma, é possível montar a permissão que quiser. Por exemplo:

100 apenas o dono executa.
200 apenas o dono escreve.
300 apenas o dono escreve e executa (2+1=3).
400 apenas o dono lê.
500 apenas o dono lê e executa (4+1=5).
600 apenas o dono lê e escreve (4+2=6).
700 apenas o dono lê, escreve e executa (4+2+1=7).

010 apenas o grupo executa.
020 apenas o grupo escreve.
030 apenas o grupo escreve e executa (2+1=3).
040 apenas o grupo lê.
050 apenas o grupo lê e executa (4+1=5).
060 apenas o grupo lê e escreve (4+2=6).
070 apenas o grupo lê, escreve e executa (4+2+1=7).

001 apenas outros executa.
002 apenas outros escreve.
003 apenas outros escreve e executa (2+1=3).
004 apenas outros lê.
005 apenas outros lê e executa (4+1=5).
006 apenas outros lê e escreve (4+2=6).
007 apenas outros lê, escreve e executa (4+2+1=7).

E o segredo para nunca mais esquecer é praticar.

Veja esse diagrama:

Da autoria de Julia Evans (@b0rk) que é uma excelente professora. Como comentado por ela, existem mais opções avançadas de permissões, tais como setuid, setgid, sticky.
Ainda outra vertente seria a manipulação de permissões ainda usando o comando chmod mas usando as letras ao invés de números, tais como:

chmod +r aaa.txt
chmod +w aaa.txt
chmod +x aaa.txt

Onde se pode manipular permissões para dono, grupo e outros também.

Mas essas linhas ficam então para você pesquisar e continuar a aprender sobre permissões no Linux.

Espero que tenha gostado da explicação e aprendido algo.
E se surgirem dúvidas, poste um comentário aqui que respondo assim que eu puder, se eu souber.

Forte abraço e como sempre muito obrigado pela leitura!

Dúvida cruel, mas não é do Iberê.

Hoje escrevo sobre algo que me encomoda um pouco. O gerenciamento de memória do sistema operacional.
Não conheço a fundo isso não, então por favor não espere qualquer explicação a respeito disso nesse post.

É mais um desabafo junto com algumas dúvidas.

Imagine alguém que tem fome e um sanduiche delicioso em suas mãos. E que sempre termina passando fome pois vem os gulosos e abocanham seu sanduba.
É assim que me sinto quando abro o google-chrome, sublime, discord, e demais aplicativos de uso diário.
E a memória RAM é o meu sanduiche-iche.

Vejo que o consumo de memória em meu computador pessoal está meio alto, então fecho absolutamente todas as janelas, e meço:

vostrolab ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3942       1012       2929        276          4        345
-/+ buffers/cache:        663       3279
Swap:            0          0          0

Nada satisfeito, faço reboot do computador, e ao voltar, ainda sem nada aberto, meço a memória novamente:

vostrolab ~ # free -m
             total       used       free     shared    buffers     cached
Mem:          3942        808       3134        185          5        382
-/+ buffers/cache:        420       3522
Swap:            0          0          0

Ficam duas perguntas:

A Primeira: Por quê o sistema operacional ‘come’ tanta memória? Convenhamos que 808 mb não é brincadeira não.. mesmo sem ‘nada’ aberto. Dizemos ‘nada’ entre aspas simples pois é sabido que há uma vasta quantidade de sofwares sendo executados, dentre eles o servidor de exibição /usr/bin/X, também o gerenciador de login /usr/sbin/*dm bem como o gerenciador de janelas que escolhi usar, e a própria janela do terminal onde executei o ‘free -m‘.

A Segunda: Por quê dessa diferença de 1012 para 808? Sendo que, em ambos os casos, estou sem ‘nada’ aberto. Estamos falando de 204 mb. Lembra quando seu computador tinha apenas 256 mb de RAM? Isso não faz muito tempo, pouco mais de 10 anos. Então será que existe algum garbage collector que possa limpar essa memória que parece ser morta? Ou ao menos exibir quem está usando quanto e porque.

Enquanto isso, tenho tentado entender esse comportamento, usando e abusando de ferramentas tais como:

NAME
smem – Report memory usage with shared memory divided proportionally.

NAME
gmemusage – graphically display memory used by running processes.

Note também que, por motivos de disco lento, optei por não usar SWAP aqui nessa máquina.
Confesso também que tenho feito uso de comandos para limpeza de memória, cache, e buffer de sistema de arquivos, tais como:

Clear PageCache only. # sync; echo 1 > /proc/sys/vm/drop_caches
Clear dentries and inodes. # sync; echo 2 > /proc/sys/vm/drop_caches
Clear PageCache, dentries and inodes. # sync; echo 3 > /proc/sys/vm/drop_caches
Flush the file system buffer. # sync

Mesmo assim, tudo é muito obscuro e vago.
Sigo tentando compreender.

Se alguém tiver mais informações sobre como se pode entender mais a respeito disso, por favor me ensine.
É preciso ter mais controle sobre o que está sendo armazenado dentro dos pentes de memória.

Xeu pegar outro sanduíche.

Como fazer commit e rollback de snapshot de LVM

Escrevo pra responder a pergunta que o Alan fez no POST Compreendendo-o-uso-de-snapshots-de-unidades-lvm. Muito boa pergunta por sinal.

Ele havia ficado com algumas dúvidas:

1º – Vamos supor que possua um LVMRAIZ para a partição /. Então crio um LVMRAIZ-SNAP. Depois faço um upgrade do SO, mas alguns pacotes estão com problema, se eu remover o LVMRAIZ-SNAP, meu SO volta para a versão anterior?
# lvcreate -L10G vg01 -n LVMRAIZ
# lvcreate -L40M -s /dev/vg01/LVMRAIZ -n LVMRAIZ-SNAP
# yum -y upgrade
# lvremove /dev/vg01/LVMRAIZ-SNAP

2º Imagine o mesmo cenário acima, mas não ocorreu nenhum problema na atualização do SO. Neste caso eu gostaria de consolidar os dados gravados LVMRAIZ-SNAP para LVMRAIZ e então remover o LVMRAIZ-SNAP.
Qual seria o comando?

Como o POST está meio extenso (simplesmente porque eu gosto de usar meu tempo lendo e escrevendo), para ir direto ao ponto, sem precisar ler o post todo:

TL;DR

1º Para voltar atrás, supondo que deu tudo errado na atualização: umount /dev/vg01/LVMRAIZ && lvconvert –merge /dev/vg01/LVMRAIZ-SNAP
2º Qual seria o comando? R: lvremove /dev/vg01/LVMRAIZ-SNAP para descartar o snapshot, tudo correu bem, e seguir adiante.

Para leigos, e para quem tiver tempo pra ler e constatar tudo timtim por timtim, resolvi responder assim pois ambas as perguntas da pra responder com uma simulação pequena!

Então, usei um antigo pendrive de 1GB aqui como teste. Identificado como /dev/sdb.
Percebí isso através do resultado do comando ‘fdisk -l‘ que lista pra mim as informações de disco.

Então, mãos à obra: Criação do volume físico (PV):

vostrolab tmp # pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created

Veja o amigo aí:

vostrolab tmp # pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 a– 982,50m 982,50m

Informações mais detalhadas sobre o PV podem ser obtidas através do ‘pvdisplay‘.

Agora vamos à criação do volume lógico (VG) que é criado em cima do PV:

vostrolab tmp # vgcreate vg01 /dev/sdb
Volume group “vg01” successfully created

Aí está:

vostrolab tmp # vgs
VG #PV #LV #SN Attr VSize VFree
vg01 1 0 0 wz–n- 980,00m 980,00m

Informações mais detalhadas sobre o VG podem ser obtidas através do ‘vgdisplay‘.

Criei também o volume lógico (LV), tudo conforme nomenclatura sugerida pelo Alan.

vostrolab tmp # lvcreate -L100M vg01 -n LVMRAIZ
Logical volume “LVMRAIZ” created

Aí está:

vostrolab tmp # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 -wi-a—- 100,00m

Informações mais detalhadas sobre o LV podem ser obtidas através do ‘lvdisplay‘.

Escreví o sistema de arquivos ext4 no LV raiz recém criado, montei e criei alguns arquivos para simular como se fosse meu sistema que quero atualizar os pacotes:

vostrolab tmp # mkfs.ext4 /dev/vg01/LVMRAIZ
vostrolab tmp # mount /dev/vg01/LVMRAIZ /mnt
vostrolab tmp # cd /mnt
vostrolab mnt # echo “numero um” > um.txt
vostrolab mnt # echo “numero dois” > dois.txt
vostrolab mnt # echo “numero tres” > tres.txt
vostrolab mnt # cat *.txt
numero dois
numero tres
numero um

Agora vamos ao ponto: A criação do snapshot e, para responder a primeira parte da questão, a simulação do corrompimento dos pacotes e em seguida o descarte do snapshot.

vostrolab mnt # lvcreate -L40M -s /dev/vg01/LVMRAIZ -n LVMRAIZ-SNAP
Logical volume “LVMRAIZ-SNAP” created

Aí está nosso snapshot (leia logo mais abaixo para entender porquê grifei em vermelho o 0,03):

vostrolab mnt # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 owi-aos– 100,00m
LVMRAIZ-SNAP vg01 swi-a-s– 40,00m LVMRAIZ 0,03

Agora é hora do ‘yum -y upgrade‘ ou ‘apt-get upgrade‘ para os debian lovers. Ou seja, vamos atualizar e simular como se tivesse corrompido tudo! Fim de carreira? R: Para quem não conhece os snapshots! =) Veja:

vostrolab mnt # echo ‘atualizei e corrompeu’ >> um.txt
vostrolab mnt # echo ‘atualizei e corrompeu’ >> dois.txt
vostrolab mnt # echo ‘atualizei e corrompeu’ >> tres.txt
vostrolab mnt # cat *.txt
numero dois
atualizei e corrompeu
numero tres
atualizei e corrompeu
numero um
atualizei e corrompeu

Note que depois de houveram alteraçoes nos arquivos, o snapshot também apresenta alterações na coluna Data% (0,03 para 0,10):

vostrolab mnt # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 owi-aos– 100,00m
LVMRAIZ-SNAP vg01 swi-a-s– 40,00m LVMRAIZ 0,10

Ferrou tudo, essa mensagem que coloquei dentro dos txt é como se tivesse corrompido geral meu sistema. Pacotes errados, dependencias mal resolvidas e um monte de problemas. Cenário raro, mas, sejamos francos, também acontece no ambiente Linux. E agora como voltar atrás?

Primeiro passo é desmontar a unidade e em seguida ‘lvconvert –merge’:

vostrolab / # umount /dev/vg01/LVMRAIZ
vostrolab / # lvconvert –merge /dev/vg01/LVMRAIZ-SNAP
Merging of volume LVMRAIZ-SNAP started.
LVMRAIZ: Merged: 100,0%
Merge of snapshot into logical volume LVMRAIZ has finished.
Logical volume “LVMRAIZ-SNAP” successfully removed

Pronto! Snapshot já não existe mais:

vostrolab / # lvs
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
LVMRAIZ vg01 -wi-a—- 100,00m

E o sistema voltou a ser o que era antes de corromper, e-x-a-t-a-m-e-n-t-e como era no momento em que fiz o snapshot.

vostrolab / # mount /dev/vg01/LVMRAIZ /mnt
vostrolab / # cd mnt
vostrolab mnt # cat *.txt
numero dois
numero tres
numero um

Mas ok, até agora fizemos um ‘rollback’ por assim dizer.
E digamos que atualizamos os pacotes de uma outra maneira, de um jeito que deu tudo certo! E agora queremos (e devemos) remover o snapshot de um jeito que as alterações que fizemos no sistema continuem.
Digo ‘devemos’ pois já serviu para o proposto, queremos manter nosso ambiente digital limpo, sem lixo, e como os snapshots tem um limite, a medida que usamos, este limite vai incrementando até que chega o momento que vai inutilizar o snapshot. É sempre bom mantê-los em ordem.

É fácil, e não requer desmontar a unidade. Simplesmente remover com ‘lvremove‘:

vostrolab mnt # lvremove /dev/vg01/LVMRAIZ-SNAP
Do you really want to remove and DISCARD active logical volume LVMRAIZ-SNAP? [y/n]: y
Logical volume “LVMRAIZ-SNAP” successfully removed

Era isso, nossos arquivos permanecem alterados (como se fossem os pacotes atualizados):

vostrolab mnt # cat *.txt
numero dois
atualizei e deu tudo certo
numero tres
atualizei e deu tudo certo
numero um
atualizei e deu tudo certo

Agora sim, com pacotes atualizados, tocamos a vida adiante.

Por: Hudson Murilo dos Santos
Referências: http://www.thegeekstuff.com/2010/08/how-to-create-lvm
https://www.tecmint.com/take-snapshot-of-logical-volume-and-restore-in-lvm/

Desempenho de Websites com Google PageSpeed Insights

Muitos se preocupam com boa pontuação no Pages Speed:
pagespeed_animation
Nesta semana foram corrigidas algumas configurações que ficaram erradas após migrações, e que estavam afetando performance.
Isso é muito importante e pode ajudar na performance de websites. Se precisar de algum apoio, conte conosco!

Ah, dica extra sobre Linux:

Se estiver se perguntando “Como fazer uma animação simples como essa aqui logo acima?“. Bom, é bem simples.

Bate duas fotos(a.k.a. screenshots) por exemplo como foi feito ali no pagespeed, uma na abinha mobile, outra na abinha desktop, e faz o seguinte comando numa pasta contendo apenas essas duas imagens:

$ convert -delay 100 -loop 0 *.png animation.gif

Isso vai gerar um gif com nome animation.gif, que fica passando as duas imagens.

Esse exemplo mostra como gerar um gif a partir de duas imagens png. Mas também é possível fazer com mais!! Quantas forem necessário para sua explicação.

Ótima ferramenta de ensino para tutoriais, blogs, manuais de instrução online(aqueles em html).

Lembrando sempre que o convert é uma ferramenta encontrada dentro do pacote do ImageMagick, então se não tens imagemagick:

$ sudo apt-get install imagemagick imagemagick-common

Por: Hudson Santos
Referência: https://unix.stackexchange.com/questions/24014/creating-a-gif-animation-from-png-files

Monitor de tráfego na interface com tcpdump

Olá pessoal!

Mais um comandinho carta na manga pra nós sysadmins.

Geralmente quando mais precisamos monitorar ou saber quantos mbps estão ‘fluindo’ por determinada inferface, acabamos tendo que instalar pacotes que monitoram largura de banda, tais como iptraf, nethogs, dentre outros.

Mas e quando não tem acesso à Internet. por exemplo e não tem nenhum outro software já instalado pra isso?

# tcpdump -w - | pv -bert >/dev/null #show network throughput

Logicamente, tem que ter o pv instalado, mas provavelmente ja vem instalado por padrão.
Seu output é bem bruto, soma tudo e mostra quanto está passando geral, ou seja, inbound/outbound.

Devem ter maneiras de aperfeiçoar o comando, pra medir apenas inboud, ou apenas outbound, talvez colocando parâmetros a mais ali no ‘tcpdump -w‘.

Mas, para isso teria que fazer mais pesquisas.
Se você descobrir, comenta aí!

Forte abraço!

Referências:

http://www.commandlinefu.com/commands/using/tcpdump
https://www.cyberciti.biz/open-source/command-line-hacks/pv-command-examples/