Mulher sentada no chão, de pernas cruzadas, rodeada de monitores e computadores, enquanto digita em um teclado no seu colo
Pexels/cottonbro

Em sistemas operacionais baseados em Linux, a gestão de permissões é um aspecto fundamental para garantir a segurança e o funcionamento correto do sistema. Cada arquivo e diretório possui permissões específicas que controlam quem os pode ler, escrever ou executar.

As permissões são divididas em três categorias principais: proprietário, grupo e outros. Cada uma dessas categorias pode ter três tipos de permissões: leitura (r), escrita (w) e execução (x).

  • Leitura (r): Permite visualizar o conteúdo do arquivo ou listar os arquivos de um diretório.
  • Escrita (w): Permite modificar o conteúdo de um arquivo ou adicionar/remover arquivos em um diretório.
  • Execução (x): Permite executar o arquivo, se ele for um script ou programa, ou acessar um diretório.

Modificando permissões

O comando chmod é utilizado para alterar as permissões de arquivos e diretórios. A sintaxe básica do comando é:

chmod [opções] [permissões] [arquivo|diretório]

As permissões podem ser definidas de duas maneiras: numérica e simbólica.

Usando a notação numérica

Na notação numérica, as permissões são representadas por números, onde cada tipo de permissão tem um valor específico:

  • Leitura (r) = 4
  • Escrita (w) = 2
  • Execução (x) = 1

Para definir as permissões, somam-se os valores correspondentes. Por exemplo, para definir permissões completas (leitura, escrita e execução) para o proprietário, usamos 7 (4+2+1). Para aplicar essas permissões a um arquivo:

chmod 700 arquivo.txt

Neste exemplo, o proprietário tem permissões completas, enquanto grupo e outros não têm nenhuma permissão.

Usando a notação simbólica

Na notação simbólica, utilizam-se caracteres para adicionar ou remover permissões. Por exemplo, para adicionar permissão de execução para o proprietário:

chmod u+x arquivo.txt

Aqui, u representa o proprietário (user), + adiciona a permissão e x é a permissão de execução.

Exemplos práticos de alteração de permissões

Vamos ver alguns exemplos práticos de como modificar permissões:

  • Permitir leitura e escrita para o proprietário, e leitura para grupo e outros:

    chmod 644 arquivo.txt
    

    Neste caso, o proprietário pode ler e escrever no arquivo, enquanto grupo e outros podem apenas ler.

  • Permitir execução para todos:

    chmod +x script.sh
    

    Esse comando torna o arquivo executável por qualquer usuário.

  • Remover permissão de escrita para outros:

    chmod o-w arquivo.txt
    

    Aqui, removemos a permissão de escrita para outros usuários, deixando apenas leitura e execução (se aplicável).

  • Permitir leitura, escrita e execução para o proprietário, e apenas leitura para grupo e outros:

    chmod 744 programa
    

    O proprietário tem todas as permissões, enquanto grupo e outros têm apenas permissão de leitura.

  • Permitir leitura e execução para todos, mas escrita apenas para o proprietário:

    chmod 755 aplicativo
    

    O proprietário pode ler, escrever e executar, enquanto grupo e outros podem apenas ler e executar.

Melhores práticas ao gerenciar permissões

Mínima permissão necessária

Sempre atribua a menor permissão necessária para um usuário ou grupo desempenhar suas funções. Evite permissões excessivas que possam comprometer a segurança do sistema. Por exemplo, se um usuário precisa apenas ler um arquivo, não conceda permissões de escrita ou execução.

Exemplo: Se um arquivo relatorio.txt precisa ser lido por um usuário chamado joao, você pode definir as permissões de forma que apenas o dono e o grupo tenham permissão de leitura:

chmod 640 relatorio.txt
chown joao:grupo_usuarios relatorio.txt

Revisão regular

Revise regularmente as permissões customizadas dos arquivos e diretórios para garantir que estejam corretas e atualizadas, especialmente após mudanças significativas no sistema ou nos usuários. Crie uma rotina mensal para verificar e ajustar as permissões conforme necessário.

Exemplo: Use comandos como find para identificar arquivos com permissões abertas demais e revisar as configurações:

find /caminho/para/diretorio -perm -o=w

Uso de grupos

Utilize grupos para gerenciar permissões de forma mais eficiente. Em vez de atribuir permissões a cada usuário individualmente, adicione-os a grupos com permissões apropriadas. Isso simplifica a administração e reduz a chance de erros.

Exemplo: Para um grupo desenvolvedores que precisa de acesso de leitura e escrita a um diretório projetos, você pode configurar assim:

groupadd desenvolvedores
usermod -aG desenvolvedores joao
chown -R :desenvolvedores /caminho/para/projetos
chmod -R 770 /caminho/para/projetos

Atenção aos scripts

Scripts e programas executáveis devem ter permissões adequadas para evitar a execução não autorizada. Use chmod +x com cautela e revise o código dos scripts, principalmente os baixados de fontes não confiáveis, antes de torná-los executáveis. Isso evita que scripts maliciosos ou com bugs comprometam o sistema.

Exemplo: Antes de tornar um script backup.sh executável, verifique seu conteúdo e depois ajuste as permissões:

chmod +x backup.sh

Backups regulares

Mantenha backups regulares dos arquivos e diretórios críticos. Isso garante que você possa restaurar dados em caso de alterações acidentais nas permissões ou em situações de emergência. Utilize ferramentas de backup automáticas para simplificar esse processo.

Exemplo: Configure um cron job para realizar backups diários de um diretório importante:

0 2 * * * tar -czf /caminho/para/backup/backup-$(date +\%F).tar.gz /diretorio/importante

Seguindo essas práticas, você pode garantir um gerenciamento mais seguro e eficiente das permissões no seu sistema, minimizando riscos e facilitando a administração.