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 e Calcinhas no Espaço.

Compartilhar

Aproveite nossos cupons de desconto:

Cupom de desconto Locaweb, Cupom de desconto HP, Cupom de desconto Descomplica, Cupom de desconto Nuuvem, Cupom de desconto CVC, Cupom de desconto Asus, Cupom de desconto World Tennis