Como fazer 2 + 2 = 5 – Curiosidade Matemática

Há muitos anos atrás aprendi a expressão “…como 2 e 2 são cinco…” em uma música.

Mais tarde, na escola, aprendi que isso podia ser verdade mas me esqueci como fazer já que terminei o 2º grau há muitos anos…kkk.

Há alguns dias atrás encontrei a expressão e transcrevo aqui.

1) Uma igualdade verdadeira: 16-36 = 25-45;
2) Some 81/4 nos dois lados da igualdade, o que não a altera: 16-36+(81/4) = 25-45+(81/4);
3) Outra forma de escrever a mesma expressão: (4-(9/2))² = (5-(9/2))² -> um trinômio quadrado perfeito;
4) Tirando a raiz quadrada das duas expressões, resta: 4-(9/2) = 5-(9/2);
5) Ao somar 9/2 nos dois lados resta: 4 = 5;
6) Como 4 = 2+2 podemos alterar a expressão para: 2+2 = 5.

Fonte: http://www.somatematica.com.br/absurdos/doismaisdois.php

Apenas para reforçar, este é somente um exercício matemático que lida com probabilidades. O resultado de 2 + 2 continua sendo 4, ok? :o)

Abraço.

Anúncios

Certificados Digitais – Instalar Open SSL no Apache2 sob Ubuntu

Precisei fazer um trabalho sobre Certificados Digitais para a faculdade e quis mostrar na prática. Para isso, pensei em usar Open SSL.

OpenSSL é uma implementação das funções básicas de criptografia dos protocolos SSL e TLS. É escrita em C e pode ser usado em praticamente todos os sistemas operacionais.

O que ele permite, basicamente? Usar o famoso https para abrir uma página segura!

Testei o procedimento abaixo no Apache2 em Ubuntu 10.04 e Ubuntu 12.04 como localhost e funcionou.

Primeiro, você deve ter instalado o servidor Apache na sua máquina. Acessando aqui você lê meu tutorial para instalar um LAMP Server completo em localhost.

Depois de instalar o LAMP Server, abra o navegador e digite http://localhost. Você verá uma página inicial que o Apache instala para testar a configuração inicial. Será importante para você perceber como é o comportamento com e sem https.

Vamos à instalação e configuração do OpenSSL:

Atenção: a responsabilidade por qualquer ação feita em seu sistema é só sua! Na dúvida, não faça nada.

Importante: rode tudo em um terminal como root!

01) a2enmod ssl
02) /etc/init.d/apache2 restart
03) mkdir /etc/apache2/ssl
04) cd /etc/apache2/ssl
05) openssl genrsa -des3 -out server.key 1024
06) openssl req -new -key server.key -out server.csr
07) openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
08) chmod 0400 /etc/apache2/ssl/server.key
09) chmod 0400 /etc/apache2/ssl/server.crt
10) cp /etc/apache2/ssl/server.key server.key.orig
11) openssl rsa -in server.key.orig -out server.key
12) chmod 400 /etc/apache2/ssl/*
13) vim /etc/apache2/sites-available/default-ssl:

Logo abaixo de SSLEngine on você encontrará as linhas abaixo:

SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

Comente-as (adicionando # no início da linha comos as outras linhas de comentário que estarão logo acima) e adicione as linhas abaixo:

SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

Salve o arquivo.

14) cp /etc/apache2/sites-available/default-ssl /etc/apache2/httpd.conf
15) /etc/init.d/apache2 restart

Em seguida, abra o navegador e digite https://localhost. Se tudo deu certo, você verá a tela abaixo (esta é do Firefox, cada navegador tem uma aparência diferente).

Tela inicial Open SSL

Você já deve ter visto esta tela quando entrou em sites seguros cuja CA (Certification Authority) não estava listada no navegador. Basta adicionar o site como exceção e você verá a página index.html igual à que viu quando acabara de instalar o Apache.

Sugiro que antes de adicionar a exceção, explore as opções para visualizar o certificado e as informações que você configurou na instalação do Open SSL.

Este é um assunto extenso e interessante e de maneira alguma cobri todas as possibilidades neste tutorial mas já é suficiente para você ter uma idéia.

É isso aí, abraço.

Manipulando Permissões em Linux com chmod

Uma das características que mais me impressionaram no Linux quando comecei a estudá-lo foi a capacidade de modificar as permissões de acesso a tudo no sistema.

Primeiro, por que achei genial poder customizar cada arquivo do meu sistema operacional com as permissões que eu quisesse e, segundo, porque minha maior queixa no Windows era a impossibilidade de ocultar arquivos ou impedir o acesso a eles sem compactar com senha.

Embora eu já tenha um conhecimento razoável sobre como lidar com as permissões no Linux, encontrei um artigo excelente sobre o assunto quando eu procurava por informações sobre permissões SSUID.

O autor é o Roberto, administrador de redes do Paraná. Reproduzo seu artigo abaixo sem quaisquer alterações e o original pode ser encontrado aqui.


O controle de acesso em arquivos e diretórios é a segurança fundamental para qualquer sistema multi-usuário.

Os sistemas de arquivos nativos do Linux implementam controle de acesso utilizando algumas propriedades dos arquivos/diretórios.

Conteúdo:

1 – Lembrando como as permissões básicas funcionam:
2 – Permissões de Acesso Especiais:
3 – SUID ( Set User ID):
3.1 – Exemplo
3.2 – Comandos
4 – SGID ( Set Group ID ):
4.1 – Exemplo
4.2 – Comandos
5 – Sticky ( Sticky bit):
5.1 – Exemplo
5.2 – Comandos

Obs.: Neste e em outros artigos que eu escrevi a formatação do texto possui os seguintes significados:

– O texto em Negrito assume que se trata de um comando que deve ser digitado.
– O texto em Itálico significa que é a saída de um comando ou conteúdo de um arquivo.
– O “>>>” significa que você deve digitar no interpretador do Python.
– O “#” significa que o comando dever ser executado como usuário “root”.
– O “$” significa que o comando deve ser executado como usuário sem privilégios.

1 – Lembrando como as permissões básicas funcionam:

No Linux há três modelos de controle de acesso básicos: Read, Write e Execution.

Veja um exemplo de permissão básica na figura abaixo:

Permissões Básicas

O Tipo do Objeto significa:

d => diretório
b => arquivo de bloco
c => arquivo especial de caractere
p => canal
s => socket
– => arquivo normal

Já os outros caracteres significam:

r => significa permissão de leitura (read);
w => significa permissão de gravação (write);
x => significa permissão de execução (execution);
– => significa permissão desabilitada.

Explicando um pouco mais:

Leitura (r):
Em arquivos, permite examinar o conteúdo do arquivo.
Em diretórios permite listar conteúdo do diretório.

Escrita (w):
Em arquivos, permite escrever, remover e alterar o arquivo.
Em diretórios, permite criar e remover arquivos dentro do diretório.

Execução (x):
Em arquivos, permite executar um arquivo como um programa.
Em diretório, permite ler e escrever em arquivos dentro do diretório.

Sendo que os três primeiros rwx primeiros pertencem ao Dono do arquivo, e os outros três rwx pertencem ao Grupo e por fim os últimos três rwx pertencem há outros usuários que não fazem parte do grupo.

2 – Permissões de Acesso Especiais:

Mas somente as três permissões básicas (rwx), não dão toda flexibilidade para controlar acesso aos arquivos e diretórios.
Por isso o Linux tem mais três modelos especiais para controle de acesso, chamados suid (set user id), sgid (set group id) e Sticky (Sticky bit).

Veja um exemplo de permissão especial na figura abaixo:

Permissões Especiais

3 – SUID ( Set User ID):

A propriedade SUID é somente para arquivos executáveis e não tem efeito em diretórios.

Nas permissões básicas, o usuário que executou o programa é dono do processo.
Mas, em arquivo executável com a propriedade SUID aplicada, o programa rodará com o ID do dono do arquivo, não com o ID do usuário que executou o programa.
Normalmente o usuário dono do programa executável é também dono do processo sendo executado.
Ou seja, quando um arquivo/programa executável tem o controle de acesso SUID, ele é executado como se ele estivesse iniciado pelo dono do arquivo/programa.

A permissão de acesso especial SUID pode aparecer somente no campo Dono.

3.1 – Exemplo:

Um exemplo para arquivo executável com a propriedade SUID é o arquivo /usr/bin/passwd.
Ou seja, quando executamos o comando passwd com qualquer usuário normal, o processo é executado com ID do usuário root ( como se o usuário root tivesse executado o comando passwd), pois somente o usuário root tem permissão para alterar o arquivo /etc/passwd.

# ls -lah /usr/bin/passwd
-rwsr-xr-x 1 root root 27K 2006-04-03 10:37 /usr/bin/passwd

3.2 – Comandos:

– Aplicando SUID:

Aplicando a propriedade SUID em um arquivo executável utilizando formato simbólico (s):

# chmod u+s programa.sh
# ls -lah programa.sh
-rwsr-xr-x 1 root roberto 0 2006-09-26 22:57 programa.sh

Aplicando a propriedade SUID em um arquivo executável utilizando formato octal (4):

# chmod 4750 programa.sh
# ls -lah programa.sh
-rwsr-x— 1 root roberto 0 2006-09-26 22:57 programa.sh

– Retirando SUID:

# chmod u-s programa.sh
# ls -lah programa.sh
-rwxr-x— 1 root roberto 0 2006-09-26 22:57 programa.sh

– Procurando SUID:

Procurando a propriedade SUID em um arquivo executável utilizando formato simbólico (s):

# find /home/roberto -perm u=s
/home/roberto/programa.sh

Procurando a propriedade SUID em um arquivo executável utilizando formato octal (4):

# find /home/roberto -perm -4000
/home/roberto/programa.sh

4 – SGID ( Set Group ID ):

A propriedade SGID tem a mesma função que o SUID para arquivos executáveis.
Mas, a propriedade SGID tem um efeito especial para os diretórios.

Quando SGID é aplicado em um diretório, os novos arquivos que são criados dentro do diretório assumem o mesmo ID de Grupo do diretório com a propriedade SGID aplicado.

A permissão de acesso especial SGID pode aparecer somente no campo Grupo.

4.1 – Exemplo:

Se no diretório /home/roberto tem o grupo casa e tem o SGID habilitado, então todos os arquivos dentro do diretório /home/roberto serão criados com o grupo casa.
Esta é um importante atributo para um equipe, assumindo que todos os arquivos compartinhados devem ter o mesmo grupo.

4.2 – Comandos:

– Aplicando SGID:

Aplicando a propriedade SGID em um diretório executável utilizando formato simbólico (s):

# chmod g+s /home/equipe
# ls -lah /home/equipe
total 0
drwxr-sr-x 2 roberto equipe 48 2006-09-26 23:21 .

Aplicando a propriedade SGID em um diretório executável utilizando formato octal (2):

# chmod 2750 /home/equipe
# ls -lah /home/equipe
total 0
drwxr-s— 2 roberto equipe 48 2006-09-26 23:21 .

– Retirando SGID:

# chmod g-s /home/equipe
# ls -lah /home/equipe
total 0
drwxr-xr-x 2 roberto equipe 48 2006-09-26 23:21 .

– Procurando SGID:

Procurando a propriedade SGID em um diretório executável utilizando formato simbólico (s):

# find /home -perm /g=s
/home/equipe

Procurando a propriedade SUID em um diretório executável utilizando formato octal (2):

# find /home -perm -2000
/home/equipe

5 – Sticky ( Sticky bit):

Em arquivos executáveis, a propriedade Sticky faz com que o sistema mantenha uma imagem do programa em memória depois que o programa finalizar.
Esta capacidade aumenta o desempenho, pois será feito um cache do programa para a memória, e da próxima vez que ele for executado, será carregado mais rápido.

Em diretórios, a propriedade Sticky impede que outros usuários deletem ou renomeam arquivos dos quais não são donos.
Isso normalmente é utilizado para aumentar a segurança, pois o diretório estará em modo append-only ( somente incremente )
Sendo assim, somente o usuário que é Dono do arquivo, poderá deletar ou renomear os arquivos dentro de um diretório com a propriedade Sticky aplicada.

A permissão especial Sticky, pode ser especificada somente no campo outros usuários das permissões de acesso.

5.1 – Exemplo:

No diretório /tmp, todos os usuários devem ter acesso para que seus programas possam criar os arquivos temporários, mas nenhum pode apagar arquivos dos outros.
Então é interessante aplicar a propriedade Sticky no diretório /tmp.

5.2 – Comandos:

– Aplicando Sticky:

Aplicando a propriedade Sticky em um arquivo executável utilizando formato octal (1)

# chmod 1750 programa_pesado.sh
# ls -lah programa_pesado.sh
-rwxr-x–T 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh

Aplicando a propriedade Sticky em um arquivo executável utilizando formato simbólico (t):

# chmod o+t programa_pesado.sh
# ls -lah programa_pesado.sh
-rwxr-x–T 1 root root 2,9M 2006-09-26 23:51 programa_pesado.sh

Aplicando a propriedade Sticky em um diretório utilizando formato simbólico (t):

# chmod o+t /tmp
# ls -lah /tmp
total 5,0K
drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):

# chmod 1777 /tmp
# ls -lah /tmp
total 5,0K
drwxrwxrwt 8 root root 264 2006-09-26 23:22 .

– Retirando Sticky:

# chmod o-t /tmp
# ls -lah /tmp
total 5,0K
drwxrwxrwx 8 root root 264 2006-09-26 23:22 .

– Procurando Sticky:

Aplicando a propriedade Sticky em um diretório utilizando simbólico (t):

# find /home/roberto/ -perm /o=t
/home/roberto/programa_pesado.sh

Aplicando a propriedade Sticky em um diretório utilizando formato octal (1):

# find /home/roberto/ -perm -1000

/home/roberto/programa_pesado.sh


Uma fonte importante sobre o assunto é o Foca Linux e para ler especificamente sobre chmod, clique aqui.

Agradeço ao Roberto pelo artigo e recomendo que acessem seu blog, vale a pena.

É isso aí, abraço.