Entendendo permissões de arquivos - Linux avançado! - Diolinux - O modo Linux e Open Source de ver o Mundo

Responsive Ad Slot

Entendendo permissões de arquivos - Linux avançado!

Aprenda a manipular as permissões de arquivos e pastas Linux com algumas tabelas simples

sexta-feira, 26 de julho de 2019

/ por Dionatan Simioni
Oi pessoal, o artigo de hoje será uma daqueles densos, vamos tocar em um assunto que até alguns administradores de sistema com vários anos experiência ainda tem dificuldades eventualmente, o sistema de permissões do Linux.

Sistema de permissões de arquivos Linux





Grande parte da questão, é que você pode ter o controle absoluto de o que, como e em que cirscustância um arquivo ou diretório no Linux pode ser acessado, escrito, modificado ou executado. 

Provavelmente você conhece a "versão fácil" de ajustar essas configurações, observando as propriedades de qualquer arquivo pela interface:

Permissões Linux

Mas claro, se você estiver em um servidor, sem interface gráfica, trabalhando apenas via linha de comando, a coisa muda de figura. Não só fica um pouco mais complexa, porque afinal, como tudo o que é feito no terminal, você precisa saber o que escrever, como acaba ficando mais poderosa também, pois você pode espeficar detalhadamente o que você deseja.

Contextualizando permissões


Algo importante pra gente "brincar" juntos (vai ser divertido, você vai ver!) é você não ter receio e testar as coisas junto comigo, isso vai facilitar o seu aprendizado. Para isso, vamos criar uma pasta para você entender as persmissões, mas vamos fazer tudo pelo terminal, assim você já vai se familiarizando com o dia a dia de um sysAdmin.

Crie uma pasta no terminal com o nome "estudos':

mkdir estudos
Mude para dentro da pasta:
cd estudos 
Vamos criar alguns outros arquivos e pastas, por exemplo:
touch diolinux
touch "eu uso linux" 
mkdir "pasta secreta"
mkdir pasta-comum

Exercícios sobre permissões

Agora que já temos alguns arquivos na nossa pasta, vamos o rodar o comando:
ls -l
Ele nos mostrará várias informações sobre os arquivos dentro desse diretório, incluindo as permissões de cada um deles:

Permissões Linux - entendendo como funciona

Observe que existem várias informações em cada linha, mas vamos nos focar na primeira, e nos primeiros caracteres. Observe que na imagem acima eu adicionei alguns "risquinhos" vermelhos, contando de 3 em 3 caracteres, exceto o primeiro, isso tem um motivo. 

Vamos transpor a informação para cá, para fins de comparação, entre o primeiro arquivo comum "diolinux" e o último arquivo, que na verdade é um diretório, chamado "pasta secreta":

-rw-r--r-- 1 dio dio    0 jul 26 14:23  diolinux
drwxr-xr-x 2 dio dio 4096 jul 26 14:23 'pasta secreta'

Observe e compare a diferença entre as duas linhas, certamente você encontrará muitas semelhanças e também diferenças, vamos analisar em blocos coloridos:

-rw-r--r-- 1 dio dio    0 jul 26 14:23  diolinux

O primeiro caractér em preto, indica o tipo do arquivo, seguindo essa tabela:

d = diretório
b = arquivo de bloco
c = arquivo especial de caractere
p = canal
l =  link simbólico
s = socket
- = arquivo "normal" ou um arquivo em branco (é esse o caso do exemplo)

A parte em vermelho nos diz quais as permissões do arquivo para "dono, grupo e outros", mas voltaremos nele mais tarde.

O número em laranja nos diz a quantidade de links inode que existe neste arquivo ou diretório. Um sistema Linux identifica os arquivos por seus números de inode, que é uma forma única do sistema de arquivos identificar cada um dos arquivo. Um diretório, é na verdade uma lista de números inode com seus nomes correspondentes. Cada nome de arquivo em um diretório é um link para um inode em particular. Não é algo especialmente útil para o nosso estudo de permissões, mas fica aqui como curiosidade. :)

O nome "dio" em verde, nos informa o usuário que é dono do arquivo, e o segundo "dio", em azul claro, nos informa quem é o grupo de usuários que é dono dele, da mesma forma.

Cada arquivo no Linux é "propriedade" de alguém, ou de um usuário em particular. Normalmente o dono do arquivo (owner) é o criador do arquivo, mas graças ao sistema de permissões, você pode criar situações onde o usuário que criou o arquivo não é dono dele, dando a propriedade para outra pessoa ou usuário.

O dono do arquivo ou diretório também pode pertencer a um determinado grupo, nesse caso o arquivo é associado a todos os usuários que fazem parte de um determinado grupo. No nosso exemplo, o nome do criador e proprietário do arquivo e nome do grupo são o mesmo, "dio".

Em azul escuro temos o valor em "bytes" do espaço em disco ocupado pelo arquivo ou diretório. Nesse caso, não chega nem a um, por isso do número zero.

A próxima informação nos diz a data de criação do arquivo ou diretório em questão.

Por último, temos o nome do arquivo.

Dando uma olhada profunda nas permissões

Vamos "dar um zoom" na parte vermelha da saída do nosso terminal, que nos informa os seguintes dados:

rw-r--r--

Podemos contrastar com a informação do arquivo da última linha, que ao contrário do primeiro da lista, que é um arquivo simples, é uma pasta, ou diretório, como você preferir chamar:

rwxr-xr-x

Até mesmo essa informação deve ser fragmenta em grupos de 3, pegando o segundo exemplo, pois há maior diversidade de opções, temos: rwx    r-x    r-x

Cada terceto informa respecitivamente as permissões para:

dono  grupo e outros
Onde:

r = read (ler)
w = write (escrever)
x = execute (executar)
- = não tem permissão

Sabendo disso, observando o nosso exemplo, podemos dizer que:

- O dono do arquivo tem permissões de ler, escrever e executar este arquivo (rwx);
- O grupo de usuários ao qual o arquivo pertence tem permissões de leitura, não tem permissões de escrita, mas pode executar o arquivo (r-x);
- Outros usuários poderão ler o arquivo, não poderão escrever nele, e podem executá-lo(r-x).

Se voltarmos ao primeiro exemplo: rw-r--r--

Temos:

- O dono pode ler, escrever, mas não pode executar;
- O grupo pode ler, não pode escrever e nem executar;
- Outros usuários podem ler, mas não podem escrever e nem executar;

Como alterar permissões de acesso de um arquivo e suas muitas opções


Agora que você já entendeu como ler as permissões dos arquivos, você pode querer mudá-las, para permitir ou bloquear o uso de certas pessoas ou usuários. Para isso, temos dois comandos no Linux:

chmod: Chamado de "change mode", serve para mudar as permissões de um arquivo ou diretório.

chown: Chamado de "change owner", serve para mudar o dono de um arquivo ou diretório.

Por exemplo, se eu quiser modificar o nosso arquivo de exemplo "diolinux" para que o usuário, dono do arquivo,  tenha a permissão de execução nele, posso usar o comando:
chmod 754 diolinux
Mudando permissões

Observe a leitura do arquivo original na imagem acima com o "ls -l", mudando as permissões com o comando acima, e fazendo a leitura novamente. Veja como o X foi adicionado ao arquivo na coluna do usuário, mas foi também adicionado à coluna de grupos, já que nesse caso, uma coisa afeta a outra.

Por acaso, eu tenho a intuição de que você deu uma coçada na cabeça agora, não foi? Acertei? :D

De onde saiu esse "754" do inferno?

Eu vou te explicar como isso funciona, fique tranquilo.

Entendendo a numeração das permissões


Você já deve ter ouvido falar que a computação moderna se trata, lá no fundo, de número binários, certo? Uns e zeros, aquela coisa toda, não é?

Pois então, imagine que as colunas de read, write e exec são "interruptores", com valor um(1), elas fazem algo, com valor zero(0), elas deixam de fazer, por exemplo:

rwx    r-x     r--
111    101   100

Agora a brincadeira fica interessante, converta os números binários para decimais e veja que "111", no exemplo, é igual a 7, "101" é 5, "100" é "4" e assim por diante. Você pode brincar numa dessas calculadoras online se quiser. 

No fim, temos um número finito de combinações que gera-nos essa tabela:

Tabela de permissões CHMOD Linux

Logo, o número que você vai digitar logo após o "chmod" é referente ao tipo de de permissão que você quer dar, se você quer que todos tenham permissão pra tudo, por exemplo, o comando seria:
chmod 777 nome_do_arquivo
Esse comando só pode ser executado dessa forma, se você for o dono do arquivo obviamente. Quando se trata de mudar permissões de pastas, é necessário acrescentar um parâmetro para que as permissõe sejam acrescentadas recursivamente a todos os elementos dentro dela, a menos que você realmente queira mudar a permissão do diretório, mas não dos arquivos dentro dele:
chmod -R 777 nome_da_pasta 
Aqui mais uma tabela que pode ser útil:

Esquema de permissões Linux

Claramente, 666 não é o número da besta, é simplesmente o universo te dizendo que você pode ler e escrever, mas não executar nada. 😮

Você também pode usar o "chmod" para acrescentar um remover alguma permissão ao arquivo, ao invés de mudar todas as configurações. Como por exemplo aplicar permissões para todos os usuários assim:
chmod +x 'eu uso linux'
Configurando permissões

Esse parâmetro "+x" acrescenta o "x" de "executable" em "dono", "grupo" e "outros" ao mesmo tempo, conforme você pode ver na imagem acima, onde fizemos o processo no arquivo 'eu uso linux', que por identificação visual, mudou de cor no Bash do Ubuntu, indicando que agora ele é um executável também, ficando em verde.

Assim como usamos o "+x" para torná-lo executável, podemos usar "+w" para escrita e "+r" minúsculo, para leitura em todos ao mesmo tempo.

Por via das dúvidas, roda um:
chmod man
Para ver o manual do comando.

Esse é o jeito "old scholl" de fazer as coisas, talvez porque lembrar de números seja mais fácil(?), mas na verdade, o "chmod" suporta letras também, de forma ainda mais direta do que quando usamo o "+x" ou "+w" ou o que for.

Por exemplo:

Quem é: u, g, o, a (para user, group, other, all)
O que será feito: +, -, = (para adicionar, remover, setar exatamente)
Onde estará:  r, w, x (para read, write, execute)

Numa linha de comando, o "chmod 777 diolinux" que fizemos seria:
chmod ugo+rwx diolinux
configurando permissões de arquivos

Eu sei, eu sei, "chamando o ugo", também não consigo evitar o pensamento. A minha quinta série interna saúda a sua. 😀

Mudando o dono do arquivo ou diretório 


Para mudar o dono do arquivo você precisa ser o Root, que é dono da porra toda de tudo. E você faz isso usando o comando chown.

Existe um padrão de sintaxe para esse comando, que é:
chown dono:grupo arquivo/pasta
Para ver os grupos disponíveis, manda um:
cat /etc/group
Se quiser ver odernadinho, pode ser:
cut -d: -f1 /etc/group | sort
Dessa forma fica óbvio como proceder para fazer uma mudança de propriedade ou de grupo:
sudo chown root:root diolinux  
configuração de mudança de usuário

Como curiosidade, olhe as propriedades desse arquivo pela interface e você verá algo assim:

Configuração de permissões de pasta

Como temos uma persmissão 777 nesse arquivo, mesmo ele pertecendo agora ao Root, nosso usuário normal pode, pode exemplo,  editar ele. Mas e se fizermos isso?
sudo chmod 750 diolinux
Precisamos do sudo agora porque o arquivo não é mais nosso e sim do Root, então precisamos executar o comando como super usuário. Tente abrir o arquivo com o seu usuário normal e você verá que agora você não consegui mais editar e salvar ele, mesmo tendo sido você o original criador! Muito legal! :)

Por fim, espero que o artigo seja digno de um favorito no seu navegador, agora você pode apagar a sua pasta de estudos. Se tiver alguma dúvida, consulte o nosso fórum, ele é um lugar muito legal para compartilhar conhecimentos.

Até a próxima!
_____________________________________________________________________________
Viu algum erro ou gostaria de adicionar alguma sugestão a essa matéria? Colabore, clique aqui.

Blog Diolinux © all rights reserved
made with by templateszoo