O brilhantemente simples sistema de permissões do Linux

nmap-trinity

Assim como seu avô, o Unix, o Linux é de nascença um sistema multiusuário. Você pode ter vários níveis hierárquicos, vários usuários inclusive simultaneamente na mesma máquina. Não como naquele clássico vídeo Dois Idiotas, Um Teclado, claro. Mas como o Linux faz para decidir quem tem direito a cada arquivo?

Ele usa o mesmo modelo de permissões herdado do UNIX, onde cada arquivo pode ter três permissões:

r — leitura;

w — escrita;

x — execução.

Pode parecer ilógico ter um arquivo com permissão de leitura e escrita separadas, mas isso tem suas utilidades. Um conhecido meu dono de provedor deixava um servidor FTP aberto, com direitos de escrita E leitura de diretórios para usuários anônimos, mas os arquivos não tinham permissão de leitura. Os script kiddies achavam o servidor, subiam um arquivo de teste, davam um DIR, ele aparecia, começaram a encher de arquivos 0-day. Todo dia de manhã esse sujeito separava o resultado da pescaria.

Essas permissões são repetidas em três blocos:

Dono

Grupo

O Resto

Digamos que eu tenha o arquivo Sandy_pelada.exe e quero que ele tenha total acesso para mim, que o grupo de usuários do qual meu login faz parte possa ler mas não apagar, e que mais ninguém tenha acesso.

A primeira parte é simples: eu quero acesso r de leitura, w de escrita e como não é um executável, – no lugar do x.

rw-

O acesso do grupo será r de leitura, mas sem gravação, –  e sem execução, também menos.

r–

Os outros usuários não têm direito a nada, NADA!

screenshot_20170714_182438

 

 

Como mudar as permissões?

chmod rw-r----- Sandy_pelada.exe

Só que isso não me parece muito eficiente, digitar NOVE caracteres para definir uma permissão. Tem como melhorar? Sim! E é brilhantemente simples. Peguemos de novo as três permissões:

r w x

Vamos atribui valores numéricos:

r – 4

w – 2

x – 1

Se eu quero que as permissões sejam rwx, eu somo 4 + 2 + 1 e obtenho 7.

Se eu quero permissões somente r-x eu somo 4 + 1 e obtenho 5.

repetimos para cada bloco. No nosso caso:

Bloco1: rw- => 4 + 2 => 6

Bloco2: r– => 4 + 0 + 4

Bloco3: — => 0 + 0 + 0

O comando para atribuir essas permissões será:

chmod 640 Sandy_pelada.exe

Mais fácil, e a maioria pára aí, mas de onde vêm esses números mágicos?

Vem de um passado distante, onde programadores extraíam o máximo de suas máquinas, e não desperdiçavam recursos. Esses números fazem muito mais sentido em binário:

dec r w x
0 0 0 0
1 0 0 1
2 0 1 0
3 0 1 1
4 1 0 0
5 1 0 1
6 1 1 0
7 1 1 1

Ou seja: cada permissão ocupa UM bit de um número binário entre 000 e 111. No total os três blocos de permissões se resumem a nove bits.

Agora imagine a velocidade com que a CPU processa essa informação ínfima. O nome disso é eficiência e elegância, do tempo em que software tinha engenheiros e arquitetos, não hoje onde só temos decoradores.

Relacionados: , , , , ,

Autor: Carlos Cardoso

Entusiasta de tecnologia, tiete de Sagan e Clarke, micreiro, hobbysta de eletrônica pré-pic, analista de sistemas e contínuo high-tech. Cardoso escreve sobre informática desde antes da Internet, tendo publicado mais de 10 livros cobrindo de PDAs e Flash até Linux. Divide seu tempo entre escrever para o MeioBIt e promover seus últimos best-sellers O Buraco da Beatriz, Calcinhas no Espaço e Do Tempo Em Que A Pipa do Vovô Subia.

Compartilhar

Aproveite nossos cupons de desconto:

Cupom de desconto Asus, Cupom de desconto Frio Peças, Cupom de desconto Mundo da Carabina, Cupom de desconto JBL, Cupom de desconto Costa Cruzeiros, Cupom de desconto Loja do Mecânico, Cupom de desconto Staples