Uma Introdução às Permissões do Linux

Introdução

O Linux é, por definição, um sistema operacional multiusuário baseado nos conceitos Unix de propriedade de arquivos e permissões para fornecer segurança no nível do sistema de arquivos. Para administrar de forma confiável um servidor em nuvem, é essencial que você tenha um bom entendimento de como funcionam a propriedade e as permissões. Existem muitas complexidades ao lidar com a propriedade e as permissões de arquivos, mas este tutorial fornecerá uma boa introdução.

Este tutorial abordará como visualizar e entender a propriedade e as permissões do Linux. Se você está procurando um tutorial sobre como modificar permissões, você pode ler Noções Básicas de Permissões no Linux e Como Usar Umask em um VPS.

Pré-requisitos

Certifique-se de entender os conceitos abordados nos tutoriais anteriores desta série:

Para seguir este tutorial, você precisará de acesso a um servidor na nuvem. Você pode seguir este guia para criar um droplet DigitalOcean.

Sobre Usuários

Como mencionado na introdução, o Linux é um sistema multiusuário. Você deve entender os fundamentos dos usuários e grupos do Linux antes de entender propriedade e permissões, pois são as entidades às quais a propriedade e as permissões se aplicam. Vamos começar com o que são usuários.

No Linux, existem dois tipos de usuários: usuários do sistema e usuários regulares. Tradicionalmente, os usuários do sistema são usados para executar processos não interativos ou em segundo plano em um sistema, enquanto os usuários regulares são usados para fazer login e executar processos interativamente. Quando você inicializa e faz login em um sistema Linux, pode notar que ele começa com muitos usuários do sistema já criados para executar os serviços nos quais o sistema operacional depende. Isso é normal.

Você pode visualizar todos os usuários em um sistema examinando o conteúdo do arquivo /etc/passwd. Cada linha neste arquivo contém informações sobre um único usuário, começando com seu nome de usuário (o nome antes do primeiro :). Você pode imprimir o conteúdo do arquivo passwd com cat:

  1. cat /etc/passwd
Output
… sshd:x:109:65534::/run/sshd:/usr/sbin/nologin landscape:x:110:115::/var/lib/landscape:/usr/sbin/nologin pollinate:x:111:1::/var/cache/pollinate:/bin/false systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin lxd:x:998:100::/var/snap/lxd/common/lxd:/bin/false vault:x:997:997::/home/vault:/bin/bash stunnel4:x:112:119::/var/run/stunnel4:/usr/sbin/nologin sammy:x:1001:1002::/home/sammy:/bin/sh

Superutilizador

Além dos dois tipos de utilizadores, há o superutilizador, ou utilizador root, que tem a capacidade de anular quaisquer restrições de propriedade e permissão de ficheiros. Na prática, isso significa que o superutilizador tem o direito de aceder a qualquer coisa no seu próprio servidor. Este utilizador é usado para efetuar alterações em todo o sistema.

Também é possível configurar outras contas de utilizador com a capacidade de assumir “direitos de superutilizador”. Isso é frequentemente referido como tendo sudo, porque os utilizadores que têm permissões para obter temporariamente direitos de superutilizador fazem-no precedendo os comandos de nível de administração com sudo. Na verdade, criar um utilizador normal que tenha privilégios de sudo para tarefas de administração do sistema é considerado uma boa prática. Desta forma, pode ser mais conservador no uso da conta de utilizador root.

Acerca de Grupos

Os grupos são coleções de zero ou mais utilizadores. Um utilizador pertence a um grupo padrão e também pode ser membro de qualquer outro grupo num servidor.

Pode visualizar todos os grupos no sistema e os seus membros ao consultar o ficheiro /etc/group, tal como faria com o ficheiro /etc/passwd para os utilizadores. Este artigo não aborda a gestão de grupos.

Agora que você sabe o que são usuários e grupos, vamos falar sobre propriedade e permissões de arquivos!

Visualizando Propriedade e Permissões

No Linux, cada arquivo é de propriedade de um único usuário e um único grupo, e possui suas próprias permissões de acesso. Vamos ver como visualizar a propriedade e as permissões de um arquivo.

O modo mais comum de visualizar as permissões de um arquivo é usar ls com a opção de listagem longa -l, por exemplo ls -l meuarquivo. Se você quiser visualizar as permissões de todos os arquivos no seu diretório atual, execute o comando sem o argumento meuarquivo, assim:

  1. ls -l

Observação: Se você estiver em um diretório inicial vazio e ainda não tiver criado nenhum arquivo para visualizar, pode acompanhar listando o conteúdo do diretório /etc executando este comando: ls -l /etc

Aqui está um exemplo de captura de tela da saída do ls -l, com rótulos de cada coluna de saída:

Cada arquivo lista seu modo (que contém permissões), proprietário, grupo e nome. Para ajudar a explicar o que todas essas letras e hífens significam, vamos decompor a coluna de modo em seus componentes.

Modo de Compreensão

Para ajudar a explicar o significado de todos os agrupamentos e letras, aqui está uma explicação da metadados de modo do primeiro arquivo no exemplo acima:

Tipo de Arquivo

No Linux, existem dois tipos de arquivos: normais e especiais. O tipo de arquivo é indicado pelo primeiro caractere do modo de um arquivo – neste guia, isso será referido como o “campo tipo de arquivo”.

Arquivos normais podem ser identificados por um hífen (-) em seus campos de tipo de arquivo. Arquivos normais podem conter dados ou qualquer outra coisa. Eles são chamados de arquivos normais, ou regulares, para distingui-los de arquivos especiais.

Arquivos especiais podem ser identificados por um caractere não hífen, como uma letra, em seus campos de tipo de arquivo, e são manipulados pelo sistema operacional de forma diferente dos arquivos normais. O caractere que aparece no campo de tipo de arquivo indica o tipo de arquivo especial que um determinado arquivo é. Por exemplo, um diretório, que é o tipo mais comum de arquivo especial, é identificado pelo caractere d que aparece em seu campo de tipo de arquivo (como na captura de tela anterior). Existem vários outros tipos de arquivos especiais.

Classes de Permissões

A partir do diagrama, você pode ver que a coluna modo indica o tipo de arquivo, seguido por três tríades, ou classes, de permissões: usuário (proprietário), grupo e outros. A ordem das classes é consistente em todos os sistemas Linux.

As três classes de permissões funcionam da seguinte forma:

  • Usuário: O proprietário de um arquivo pertence a esta classe.
  • Grupo: Os membros do grupo do arquivo pertencem a esta classe. As permissões do grupo são uma forma útil de atribuir permissões em um arquivo dado a vários usuários.
  • Outros: Todos os usuários que não fazem parte das classes usuário ou grupo para este arquivo pertencem a esta classe.

Lendo Permissões Simbólicas

A próxima coisa a prestar atenção são esses conjuntos de três caracteres. Eles denotam as permissões, em forma simbólica, que cada classe tem para um determinado arquivo.

Em cada tríade, as permissões de leitura, escrita e execução são representadas da seguinte forma:

  • Leitura: Indicada por um r na primeira posição
  • Escrita: Indicada por um w na segunda posição
  • Executar: Indicado por um x na terceira posição. Em alguns casos especiais, pode haver um caractere diferente aqui

A hyphen (-) in the place of one of these characters indicates that the respective permission is not available for the respective class. For example, if the group (second) triad for a file is r--, the file is “read-only” to the group that is associated with the file.

Entendendo Ler, Escrever, Executar

Agora que você sabe como ler as permissões de um arquivo, você deve saber o que cada uma das permissões realmente permite aos usuários fazer. Este tutorial abordará cada permissão individualmente, mas tenha em mente que elas frequentemente são usadas em combinação umas com as outras para permitir um acesso útil a arquivos e diretórios.

Aqui está uma análise do acesso que os três tipos de permissão concedem ao usuário:

Ler

Para um arquivo normal, permissão de leitura permite que um usuário veja o conteúdo do arquivo.

Para um diretório, permissão de leitura permite que um usuário veja os nomes dos arquivos no diretório.

Escrever

Para um arquivo normal, permissão de escrita permite que um usuário modifique e exclua o arquivo.

Para um diretório, a permissão de escrita permite que um usuário exclua o diretório, modifique seu conteúdo (crie, exclua e renomeie arquivos nele) e modifique o conteúdo de arquivos aos quais o usuário tem permissão de escrita.

Executar

Para um arquivo normal, a permissão de execução permite que um usuário execute (execute) um arquivo – o usuário também deve ter permissão de leitura. As permissões de execução devem ser definidas para programas executáveis e scripts de shell antes que um usuário possa executá-los.

Para um diretório, a permissão de execução permite que um usuário acesse ou entre (ou seja, cd) e acesse metadados sobre arquivos no diretório (as informações listadas em um ls -l).

Exemplos de Modos (e Permissões)

Agora que sabe como ler o modo de um arquivo e entender o significado de cada permissão, verá alguns exemplos de modos comuns, com explicações breves, para reunir os conceitos.

  • -rw-------: Um arquivo que só é acessível pelo seu proprietário
  • -rwxr-xr-x: Um arquivo que é executável por todos os usuários do sistema. Um arquivo “executável mundial”
  • -rw-rw-rw-: Um arquivo que está aberto para modificação por todos os usuários do sistema. Um arquivo “gravável mundial”
  • drwxr-xr-x: Um diretório que todos os usuários no sistema podem ler e acessar
  • drwxrwx---: Um diretório que é modificável (incluindo seu conteúdo) pelo proprietário e pelo grupo
  • drwxr-x---: Um diretório acessível pelo seu grupo

O proprietário de um arquivo geralmente desfruta das permissões mais amplas, quando comparado às outras duas classes. Tipicamente, você verá que as classes grupo e outros têm apenas um subconjunto das permissões do proprietário (equivalentes ou menores). Isso faz sentido porque os arquivos só devem ser acessíveis aos usuários que precisam deles por um motivo específico.

Outra coisa a se observar é que, mesmo que muitas combinações de permissões sejam possíveis, apenas algumas fazem sentido na maioria das situações. Por exemplo, o acesso de escrita ou execução é quase sempre acompanhado pelo acesso de leitura, já que é difícil modificar, e impossível executar, algo que você não pode ler.

Conclusão

Agora você deve ter uma boa compreensão de como funcionam a propriedade e as permissões no Linux. Para aprender como modificar essas permissões usando chown, chgrp e chmod, consulte Noções Básicas de Permissões no Linux e Como Usar Umask em um VPS.

Se você gostaria de aprender mais sobre os fundamentos do Linux, leia o próximo tutorial desta série, Uma Introdução à Redirecionamento de E/S no Linux.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-linux-permissions