Segurança Linux: Domine Permissões de Arquivos e Diretórios!

O Linux, sendo um sistema operacional multiusuário, permite que várias pessoas interajam com o mesmo computador simultaneamente. Essa característica impõe a necessidade de mecanismos robustos para garantir a segurança e a privacidade dos arquivos de cada usuário.

Para atender a essa demanda, o Linux implementa um sistema complexo de gerenciamento de permissões para arquivos e diretórios. Esse sistema possibilita que os usuários controlem o acesso aos seus arquivos, definindo quais outros usuários podem visualizá-los e que tipos de ações podem realizar no sistema.

É fundamental que todo usuário do Linux compreenda o funcionamento desse sistema de permissões e como ele pode ser utilizado para proteger seus dados e assegurar o funcionamento adequado do computador. Para isso, vamos analisar as diferentes categorias de usuários existentes em um sistema Linux.

Categorias de Usuários no Linux

A primeira categoria é a dos proprietários de arquivos e diretórios. Cada arquivo ou diretório no Linux é associado a um proprietário específico, que geralmente possui as permissões mais abrangentes sobre ele. O proprietário é normalmente identificado pela letra “u”, de usuário.

Além dos proprietários individuais, o Linux permite que vários usuários sejam agrupados, recebendo permissões similares sobre arquivos como um conjunto. Esses grupos são conhecidos como “proprietários de grupo” e são representados pela letra “g”.

Por exemplo, se você possui um arquivo contendo recomendações de livros e deseja conceder permissões similares a vários usuários, agrupá-los e definir permissões para todo o grupo é uma forma prática de alcançar esse objetivo.

A última categoria de usuários é composta pelos “outros”, identificados pela letra “o”. Esses são usuários que não são proprietários do arquivo e que também não pertencem a nenhum grupo com permissões específicas sobre ele. A categoria “outros” representa, essencialmente, todos os demais usuários do sistema.

A letra “a” pode ser utilizada para se referir a todos os usuários em um computador, englobando proprietários de arquivos, usuários pertencentes a grupos e a categoria “outros”.

Criando e Adicionando um Novo Usuário no Ubuntu Linux

Vamos aprender como criar e adicionar um novo usuário no Ubuntu Linux. Para acompanhar este tutorial, você pode criar um novo usuário em seu sistema.

1. Abra as Configurações do sistema e, na barra lateral esquerda, clique em “Usuários”. Em seguida, clique em “Desbloquear” e insira sua senha quando solicitado. Este passo é necessário para desbloquear a funcionalidade de adição de novos usuários, que está protegida por padrão.

2. Uma vez desbloqueado, você verá a opção “Adicionar usuário”. Clique nela para iniciar o processo de criação de um novo usuário.

3. Para criar o novo usuário, insira seu nome completo e nome de usuário. Selecione a opção “Definir uma senha agora” e escolha uma senha segura. Além disso, defina o tipo de conta como “Administrador”. Por fim, clique em “Adicionar” para concluir a criação do usuário.

4. Você deverá ver a nova conta de usuário criada, como mostrado na imagem abaixo.

Permissões de Arquivos e Diretórios no Linux

As permissões são as regras que determinam o acesso a arquivos e diretórios, definindo quais ações cada categoria de usuário pode executar sobre eles. O Linux possui três permissões principais:

  • Leitura (r): Permite ao usuário visualizar o conteúdo de um arquivo e listar o conteúdo de um diretório.
  • Escrita (w): Permite ao usuário modificar o conteúdo de um arquivo. No caso de diretórios, a permissão de escrita possibilita ao usuário criar, excluir, renomear ou mover arquivos e subdiretórios dentro dele. Entretanto, a permissão de escrita em um diretório só é efetiva se o usuário também possuir permissão de execução.
  • Execução (x): Em arquivos, a permissão de execução significa que o arquivo pode ser executado como um programa. Em diretórios, a permissão de execução permite que o usuário entre, ou seja, use o comando “cd” para acessar o diretório.

Essas permissões (leitura, escrita e execução) são atribuídas às três categorias de usuários que mencionamos anteriormente no Linux.

Você também pode aprender mais sobre como remover arquivos e diretórios no Linux.

Listagem Longa no Linux

Para visualizar o conteúdo de um arquivo ou diretório no Linux, geralmente usamos o comando “ls”. No entanto, este comando exibe apenas os arquivos e diretórios disponíveis, sem informações adicionais.

Para visualizar detalhes sobre o conteúdo, é necessário usar o formato de listagem longa. Para isso, execute o comando “ls” com a opção “-l”. Isso exibirá as permissões do arquivo, o proprietário e o grupo proprietário, conforme mostrado abaixo:

No Ubuntu, por padrão, se nenhum grupo foi criado, o nome do grupo será o mesmo do proprietário do arquivo.

Para criar um novo grupo, usamos o comando “addgroup”. Para criar um grupo chamado “editores”, execute o seguinte comando e insira sua senha quando solicitado:

sudo addgroup editores

O comando “sudo” permite executar comandos com privilégios de “root”, que é um superusuário com permissão para realizar alterações que afetam todos os usuários do computador.

Para adicionar usuários a um grupo, utilizamos a seguinte sintaxe:

adduser <usuário> <grupo>

Portanto, para adicionar os usuários “belmont” e “madici” ao grupo “editores”, executamos os comandos:

sudo adduser belmont editores
sudo adduser madici editores

Para verificar a qual grupo um usuário pertence, execute:

groups <nome de usuário>

O resultado dos comandos acima é mostrado abaixo:

Agora, vamos analisar os atributos dos arquivos, que fornecem informações sobre o tipo e as permissões dos mesmos.

Atributos de Arquivos no Linux

No Linux, os atributos de arquivo são representados por exatamente dez caracteres. O primeiro caractere indica o tipo do arquivo. Alguns dos caracteres mais comuns que representam diferentes tipos de arquivos incluem:

  • “d”: indica um diretório.
  • “-“: indica um arquivo normal, como um arquivo de texto.
  • “c”: indica um arquivo especial de caractere.
  • “l”: indica um link simbólico.
  • “b”: indica um arquivo especial de bloco.

Os nove caracteres restantes indicam as permissões do proprietário, do grupo proprietário e dos outros usuários. Esses nove caracteres são divididos em grupos de três. O primeiro grupo indica as permissões do proprietário, o segundo as permissões do grupo proprietário, e os três últimos indicam as permissões dos outros usuários do sistema.

As permissões para cada categoria são indicadas, começando pela permissão de leitura, seguida pela permissão de escrita e, por fim, pela permissão de execução. A permissão de leitura é indicada pela letra “r”, a permissão de escrita pela letra “w”, e a permissão de execução pela letra “x”.

O símbolo “-” é usado quando um usuário não possui uma permissão específica. Por exemplo, “rw-” para o proprietário do grupo significa que ele tem permissões de leitura e escrita, mas não tem permissão de execução em um diretório (d).

Alterando Permissões de Arquivo Usando Notação Simbólica

Para alterar as permissões de um arquivo ou diretório, usamos o comando “chmod” e especificamos para qual categoria de usuário estamos alterando as permissões.

Pode ser o proprietário do arquivo (representado pela letra “u” para usuário), o proprietário do grupo (representado pela letra “g”), ou os outros usuários (representados pela letra “o”). Também podemos nos referir às três categorias de usuários usando a letra “a”, que significa “todos”.

O próximo elemento a ser especificado é a mudança que estamos realizando. Para adicionar uma permissão, usamos o sinal “+”. Para remover uma permissão, usamos o sinal “-“. Por fim, indicamos as permissões que estamos adicionando ou removendo, utilizando as letras “r”, “w” ou “x” para representar as três permissões disponíveis.

Para ver isso em prática, crie um diretório chamado “books” usando o comando abaixo:

mkdir books

Entre (use o comando “cd”) no diretório:

cd books

Crie um arquivo chamado “readingList.txt”:

touch readingList.txt

Liste o conteúdo do diretório “books” utilizando o formato longo:

ls -l

O resultado é o seguinte:

O arquivo que acabamos de criar é um arquivo normal (indicado pelo primeiro “-“). O proprietário e o grupo proprietário possuem permissões de leitura e escrita, enquanto os outros usuários possuem apenas permissão de leitura. Para conceder permissão de escrita aos outros usuários, executamos o seguinte comando:

chmod o+w readingList.txt

Para verificar se as permissões dos outros usuários foram alteradas, execute:

ls -l

Resultado:

Note que a permissão do arquivo para outros usuários mudou de “r–” para “rw-“, o que significa que agora eles possuem permissão de escrita.

Para adicionar permissões de execução ao proprietário (usuário) do arquivo, execute:

chmod u+x readingList.txt

Para remover permissões de escrita dos proprietários do grupo, execute:

chmod g-w readingList.txt

Para remover as permissões de leitura de todos os usuários, de forma que ninguém possa visualizar o arquivo, execute:

chmod a-r readingList.txt

Para adicionar permissão de leitura de volta ao proprietário do arquivo, execute:

chmod u+r readingList.txt

Para adicionar permissões de escrita e execução ao proprietário do grupo do arquivo, execute:

chmod g+wx readingList.txt

Alterando Permissões Usando Notação Octal

No Linux, cada uma das três permissões disponíveis possui apenas dois valores possíveis: ativada ou desativada. A permissão de leitura pode ser “r” ou “-“, a permissão de escrita pode ser “w” ou “-“, e a permissão de execução pode ser “x” ou “-“.

Portanto, essas permissões podem ser representadas por meio de números binários, que possuem apenas dois valores disponíveis: 1 para ativado ou verdadeiro, e 0 para desativado ou falso. Assim, uma permissão como “rw-” pode ser representada como “110” em binário.

Desse modo, para qualquer categoria de usuário, três números binários são suficientes para representar todas as suas permissões. Por exemplo, a permissão para o proprietário, grupo e outros “rwxrw-r–” pode ser representada como “111110100” usando um número binário.

Contudo, para evitar a escrita de números binários, que são longos e facilmente confundidos, uma alternativa melhor é usar números octais.

Os números octais têm base 8 e, portanto, possuem apenas 8 valores possíveis. Cada número octal é mapeado para exatamente três dígitos binários.

Uma permissão como “rw-” pode ser representada como “110” em binário. O equivalente octal de “110” é “6”. Logo, o número “6” pode ser usado para representar “rw-“. Os números octais podem ser utilizados para representar as permissões de leitura, escrita e execução do proprietário, do grupo e dos outros, conforme mostrado abaixo:

Em vez de escrever dígitos binários longos, é melhor representar as permissões usando números octais. Todas as permissões do proprietário, do grupo e de outros são representadas usando números octais únicos, conforme mostrado no diagrama acima.

A vantagem de usar a notação octal para definir permissões é que ela permite definir a permissão para todos os usuários de uma vez, diferentemente da notação simbólica, onde você só pode definir a permissão de um único usuário por vez.

No entanto, usar a notação octal exige tempo e prática para conseguir memorizar o que cada número octal representa. Sinta-se à vontade para consultar o diagrama acima sempre que usar a notação octal. Vamos analisar diversos exemplos de alteração de permissões utilizando a notação octal.

Para conceder a todos os usuários, ou seja, ao proprietário, ao grupo proprietário e aos outros, permissão de leitura, escrita e execução para o arquivo “readingList.txt”, execute:

chmod 777 readingList.txt

Para verificar se as permissões foram alteradas, execute:

ls -l

Resultado:

total 0
-rwxrwxrwx 1 madici madici 0 Sep  6 05:45 readingList.txt

Note que agora o proprietário, o grupo e os outros usuários possuem permissão de leitura, escrita e execução no arquivo “readingList.txt”.

Para remover permissões de escrita do proprietário do grupo e dos outros, execute:

chmod 755 readingList.txt

Para remover a permissão de execução do proprietário e dos outros, execute:

chmod 654 readingList.txt

Permissões Especiais no Linux

O Linux possui três permissões especiais que podem ser aplicadas a arquivos e diretórios, complementando as permissões padrões de leitura, escrita e execução. Essas permissões oferecem funcionalidades avançadas para o controle de acesso, permitindo que usuários com menos privilégios executem arquivos e comandos com privilégios mais altos, assim como o proprietário do arquivo ou o proprietário do grupo.

As permissões especiais incluem:

  • Set User ID (SUID): A permissão SUID permite que um usuário execute um arquivo ou programa com os privilégios do proprietário, e não com os privilégios do usuário que o executa. Isso é útil quando usuários padrão precisam executar tarefas que exigem privilégios elevados.
  • Set Group ID (SGID): A permissão SGID permite que um usuário execute um arquivo com as permissões do proprietário do grupo do arquivo, em vez das permissões de seu grupo real.
  • Sticky Bit: O sticky bit é uma permissão geralmente definida para diretórios, com o objetivo de garantir que os arquivos dentro do diretório só possam ser excluídos pelo proprietário do diretório, pelo proprietário do arquivo específico ou pelo usuário root.

As três permissões especiais podem ser utilizadas em conjunto com as permissões padrões: leitura, escrita e execução.

Conclusão

As permissões são um conceito fundamental no Linux, mesmo que seu computador não tenha vários usuários. A compreensão das permissões é crucial para garantir o controle, a segurança e a privacidade dos dados armazenados em um sistema Linux, assim como para seu funcionamento adequado. Portanto, familiarize-se com as permissões praticando os conhecimentos adquiridos neste artigo.

Você também pode explorar como usar comandos do Linux no Windows.