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 arquivo e permissões para fornecer segurança no nível do sistema de arquivos. Para administrar um servidor em nuvem de forma confiável, é essencial ter um entendimento decente 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 do Linux e Como Usar a Máscara de Permissões 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 uma 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 a propriedade e permissões, porque são as entidades às quais a propriedade e 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 dos quais o sistema operacional depende. Isso é normal.

Você pode ver todos os usuários em um sistema olhando 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

Superusuário

Além dos dois tipos de usuários, há o superusuário, ou usuário root, que tem a capacidade de anular quaisquer restrições de propriedade e permissão de arquivos. Na prática, isso significa que o superusuário tem direitos para acessar qualquer coisa em seu próprio servidor. Esse usuário é usado para fazer alterações em todo o sistema.

Também é possível configurar outras contas de usuário com a capacidade de assumir “direitos de superusuário”. Isso é frequentemente referido como ter sudo, porque os usuários que têm permissões para temporariamente obter direitos de superusuário fazem isso precedendo os comandos de nível de administrador com sudo. Na verdade, criar um usuário normal que tenha privilégios de sudo para tarefas de administração do sistema é considerado a melhor prática. Dessa forma, você pode ser mais conservador em seu uso da conta de usuário root.

Sobre Grupos

Grupos são coleções de zero ou mais usuários. Um usuário pertence a um grupo padrão e também pode ser membro de qualquer outro grupo em um servidor.

Você pode visualizar todos os grupos no sistema e seus membros olhando no arquivo /etc/group, assim como faria com /etc/passwd para usuários. Este artigo não aborda o gerenciamento 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 de 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.

A maneira mais comum de visualizar as permissões de um arquivo é usar o comando 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 home vazio e ainda não tiver criado nenhum arquivo para visualizar, você 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 de ls -l, com rótulos de cada coluna de saída:

Cada arquivo lista seu modo (que contém as permissões), proprietário, grupo e nome. Para ajudar a explicar o significado de todas aquelas letras e hifens, vamos dividir a coluna de modo em seus componentes.

Modo de Entendimento

Para ajudar a explicar o significado de todos os agrupamentos e letras, aqui está uma análise dos 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 de 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 que não seja um 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 arquivo específico é. 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 de grupo são uma maneira útil de atribuir permissões em um determinado arquivo para vários usuários.
  • Outros: Quaisquer usuários que não façam 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, de forma simbólica, que cada classe possui 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.

Compreendendo 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 fazerem. Este tutorial abordará cada permissão individualmente, mas tenha em mente que elas são frequentemente usadas em combinação umas com as outras para permitir acesso útil a arquivos e diretórios.

Aqui está uma quebra do acesso que os três tipos de permissão concedem aos usuários:

Ler

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

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

Escrever

Para um arquivo normal, a permissão de escrita permite a um usuário modificar e excluir o arquivo.

Para um diretório, a permissão de escrita permite a um usuário excluir o diretório, modificar seu conteúdo (criar, excluir e renomear arquivos nele) e modificar o conteúdo dos arquivos para os quais o usuário tem permissões de escrita.

Autorizar

Para um arquivo normal, a permissão de execução permite a um usuário executar 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 shell antes que um usuário possa executá-los.

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

Exemplos de Modos (e Permissões)

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

  • -rw-------: Um arquivo que só é acessível pelo seu proprietário
  • -rwxr-xr-x: Um arquivo que é executável por todo usuário no sistema. Um arquivo “executável mundial”
  • -rw-rw-rw-: Um arquivo que está aberto para modificação por todo usuário no sistema. Um arquivo “gravável mundial”
  • drwxr-xr-x: Um diretório que todos os usuários do 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 que é acessível pelo seu grupo

O proprietário de um arquivo geralmente desfruta das permissões mais elevadas, em comparação com as outras duas classes. Tipicamente, você verá que as classes de grupo e outros só têm um subconjunto das permissões do proprietário (equivalentes ou menos). 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 ser observada é que, embora 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 de acesso de leitura, já que é difícil modificar e impossível executar algo que você não pode ler.

Conclusão

Você deve agora 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 Linux Permissions Basics and How to Use Umask on a 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