Permissões de Arquivos no Linux: Um Guia Estratégico para Administradores do Windows

Se você já gerenciou o Windows por algum tempo, provavelmente tem experiência com gerenciamento de contas de usuário, o sistema de arquivos NTFS e configuração de permissões. Se sim, prepare-se para um mundo diferente com permissões de arquivos no Linux! No Linux, o sistema de arquivos é um animal diferente que você deve aprender para ser um administrador Linux eficiente.

Esta é a Parte II da nossa série de quatro partes sobre aprender Linux a partir de uma perspectiva de administrador Windows! Certifique-se de ler a Parte I se você ainda não o fez.

Trabalhando com o Sistema de Arquivos

Vamos primeiro mergulhar em como o Linux armazena e gerencia arquivos através do sistema de arquivos.

Nota: Todos os exemplos usarão o OpenSUSE Linux.

Nada de Letras de Unidade

Ao contrário do Windows, unidades removíveis e outros dispositivos não recebem automaticamente uma letra de unidade e abrem na reinicialização. No Windows, cada unidade é montada como uma letra de unidade: C:\, D:\, etc. Como funcionam as letras de unidade no Linux? Não existem!

No Linux, existe uma pasta chamada a pasta raiz. Esta pasta está localizada na raiz do sistema de arquivos ou simplesmente /. A barra inclinada é a primeira barra inclinada antes de qualquer outro arquivo no sistema vir. Esta barra inclinada é tipo como a base C:\, embora só se as outras letras de unidade somente existissem como uma subpasta de C:\.

A pasta raiz é onde os arquivos de sistema centrais se encontram. Tudo o mais, incluindo outros dispositivos, são uma subpasta desta pasta central.

Linux borra a linha entre pastas e sistemas de arquivos. O diretório Linux /home é a raiz de todos os “perfis” de usuários, semelhante à pasta C:\Users no Windows. Neste caso, /home é um diretório. No entanto, “diretórios” no Linux não precisam ser necessariamente diretórios. Eles também podem ser partições de armazenamento ou até mesmo um disco rígido separado. Esse conceito é análogo aos pontos de montagem do Windows.

Você pode saber mais sobre pastas raiz neste artigo.

Usuários e Pastas Pessoais

Se você estiver usando o OpenSUSE, talvez note uma pasta Home na sua área de trabalho, como mostrado abaixo. Esta pasta é a versão Linux da pasta C:\users\<username> ou “perfil” no Windows. A pasta “usuários” no Linux fica em /home no seu disco de instalação por padrão.

No exemplo abaixo, o usuário é chamado homelab com um “perfil” localizado em /home/homelab.

Your own User (Home) Folder

No Linux (e no Windows), a pasta pessoal (ou perfil de usuário no Windows) tem uma notação abreviada de til (~). Se você ver algo como "~/Documents/blah.txt, está se referindo ao seu arquivo /home/<username>/Documents/blah.txt.

A Capitalização é Tudo no Linux

Tudo no Linux é sensível a maiúsculas e minúsculas. Esse conceito é completamente oposto ao do Windows, onde quase nada é sensível a maiúsculas e minúsculas.

Por exemplo, se você tiver um diretório chamado /home/homelab, um diretório completamente diferente pode ser chamado de /home/Homelab. Esse conceito também se estende a comandos. Executar cd /home/homelab é diferente de CD /home/homelab (o que deveria falhar).

Como uma pessoa acostumada ao Windows, esse conceito irá te confundir em algum momento. Tenha muito cuidado com a capitalização! Você pode ver um exemplo de duas pastas separadas abaixo. A única diferença entre as duas é a capitalização: Em um ambiente do Windows, isso não é possível.

Being able to create two separate folders just by capitalization is not possible on Windows

Contas de Usuário

Assim como no Windows, o Linux tem o conceito de contas de usuário, mas elas se comportam um pouco diferente. Comece pensando nas contas de usuário do Linux em termos das contas de usuário familiares do Windows.

O Windows tem algumas contas de usuário integradas, como Administrador, a conta oculta SYSTEM, Convidado, etc. O Windows também possui vários grupos de segurança integrados, como Administradores, Convidados, etc.

Você pode visualizar todos os usuários e grupos do Windows através do MMC de Usuários e Grupos Locais, executando o snapin do MMClusrmgr.msc.

The Windows Local User Control Panel

SIDs do Windows

Para identificar exclusivamente usuários e grupos, o Windows se refere a eles por algo chamado SID. No Windows, você pode encontrar o SID de cada usuário e grupo executando alguns comandos do PowerShell abaixo.

Get-LocalUser | select name, sid
Get-LocalGroup | select name,sid
The list of users and groups on a Windows computer

Cada SID de grupo do Windows é o mesmo em todos os computadores com Windows. Os IDs SIDs incorporados para o Windows são únicos. Aquele SID de Administrador que você vê na captura de tela acima deve ser diferente em cada computador com Windows. Qualquer usuário ou grupo criado no Windows no futuro será único. Observe abaixo o grupo teste. Se você criar um grupo teste em seu computador com Windows, o SID será diferente.

A new “test” group at the top has a unique SID

IDs de Usuário do Linux

Por outro lado, o Linux trata usuários e grupos de forma semelhante, só que desta vez o Linux não usa SIDs, mas IDs de usuário (UIDs) e IDs de grupo (GIDs). Além disso, ao contrário do Windows, usuários e grupos são exclusivos para o computador, mas não únicos em todos os computadores. Isso significa que seu UID no Computador A pode ser exatamente o mesmo UID no Computador B, mesmo que não seja o mesmo usuário.

Ambos os UIDs e GIDs seguem uma convenção simples e numérica; cada UID e GUID começam em 0 e incrementam de um em um, variando de 1 a 999 para contas internas do sistema e de 1000+ para contas de usuário personalizadas.

O usuário raiz incorporado sempre tem um UID de 0 e um GID de 0. Além disso, assim como a conta oculta SYSTEM do Windows, esta conta raiz é geralmente (dependendo da distribuição Linux) impedida de fazer login.

O usuário raiz incorporado é semelhante às contas incorporadas do Windows SYSTEM e Administrador, meio que combinadas em uma só. Mesmo que você esteja trabalhando como um Administrador no Windows, ainda há algumas proteções incorporadas para evitar que você destrua completamente o Windows.

O usuário root, por outro lado, é uma autoridade absoluta. Se você entrar intencionalmente no usuário root (você pode fazer isso na linha de comando usando o comando sudo su) e tentar excluir todo o seu sistema operacional, o root fará isso felizmente até que o sistema morra.

Vamos dizer que você criou um usuário chamado homelab. O UID para o homelab pode então ser referenciado pelo número 1000 ou pelo homelab. O usuário se tornará automaticamente membro do grupo interno users, que você pode referenciar com o ID do grupo 100. Você pode encontrar uma lista dessas associações executando o comando getent passwd conforme visto abaixo:

running getent passwd inside the terminal

Você também pode encontrar as mesmas informações acima para grupos com o comando getent group.

running getent group inside the terminal

Permissões de Arquivo no Linux

Num mundo Windows, as permissões de sistema de arquivos não são divertidas. Configurar e gerenciar permissões no NTFS às vezes pode se transformar em um pesadelo com ACE, ACLs, herança, propagação, etc. Felizmente, no sistema de arquivos Linux, as permissões são muito mais simples.

No Linux, você tem três tipos de direitos que pode atribuir a um arquivo: leitura, gravação e execução, com três categorias de acesso: proprietário, grupo, outros.

  • O proprietário é o usuário que possui o arquivo/pasta. Cada arquivo ou pasta tem um proprietário designado.
  • O grupo é o grupo que possui o arquivo/pasta. Isso não precisa ser o mesmo grupo ao qual o proprietário pertence. Cada arquivo ou pasta só pode pertencer a um grupo.
  • Outros são… bem… outros. São pessoas que não fazem parte do grupo proprietário ou não são o proprietário designado.

Você pode permitir ou negar cada opção para cada categoria. Por exemplo: você pode dar opções de ler, escrever, executar para o proprietário, e opções de ler/executar para o grupo e outros. Você pode ver isso na captura de tela abaixo. Isso significa que qualquer pessoa além do usuário que é o proprietário da pasta não pode modificá-la.

Assim como no Windows Explorer, no Ubuntu, você pode ver essas informações da seguinte maneira:

  1. Abrir a pasta Home na sua área de trabalho.
  2. Navegue até o arquivo/pasta em questão.
  3. Clique com o botão direito no arquivo/pasta e clique em Propriedades.
  4. Clique na guia Permissões.
  5. Clique em Permissões Avançadas.

Uma vez que você está na caixa Permissões Avançadas, você pode ver graficamente todas as permissões atribuídas a esse arquivo ou pasta.

Demonstration of the advanced permissions menu in OpenSUSE

Abaixo está o que a tabela Permissões Avançadas representa.

How the file permissions look visually

Propriedade de Arquivo

Como no Windows, cada arquivo e pasta tem um proprietário. No Windows, você pode se tornar proprietário de um arquivo na interface gráfica ou através do comando takeown. No Linux, você se torna proprietário executando chown <usuário>:<grupo> <arquivo/pasta> na linha de comando.

Assim como no Windows, geralmente você precisa de permissão administrativa para alterar a propriedade dos arquivos usando sudo. sudo é o equivalente no Linux ao Controle de Conta de Usuário (UAC) do Windows. Em vez de abrir uma janela de linha de comando administrativa, você antecede comandos com sudo para executá-los como administrador.

Vamos criar uma pasta que seja somente de propriedade do root para demonstrar alguns desses conceitos.

  1. Abra sua pasta pessoal e vá para Documentos
  2. Abra um prompt de comando clicando com o botão direito —> Ações —> Abrir Terminal Aqui e execute o seguinte:
sudo mkdir owned-by-root
sudo chmod 700 owned-by-root
Creating a root only folder

Esta pasta possui permissões de leitura/escrita/execução apenas para o proprietário. Como você criou a pasta com direitos de administrador, o proprietário atual é o root.

Você também alterou as permissões para que apenas o proprietário tenha acesso. O grupo proprietário e outros usuários não podem acessar esta pasta de forma alguma. Na verdade, você notará que a pasta tem um cadeado grande indicando que você não tem acesso.

Abaixo, você pode ver como assumir a propriedade desta pasta.

  1. Abra outro terminal na mesma pasta (ou use o que você já tinha)
  2. Execute sudo chown homelab:users ./owned-by-root
Demonstration of the change ownership command in OpenSUSE

Agora que você tem a propriedade, também pode alterar as permissões do arquivo dentro da GUI do explorador usando a janela de propriedades.

File permissions inside the explorer GUI

Você (geralmente) só deseja alterar as propriedades, não as permissões dos arquivos. O Linux é bastante eficiente em saber quais permissões as coisas devem ter por padrão. Você pode realmente bagunçar as coisas usando ‘chmod’ sem conhecer as implicações.

Notação Numérica para Permissões de Arquivo

Se você já fez qualquer solução de problemas no Linux, talvez tenha visto pessoas explicando as permissões de arquivo usando um esquema numérico. Você pode ver isso destacado na captura de tela abaixo:

The permissions menu, as viewed remotely from a Windows machine using WinSCP

Linux usa uma notação abreviada para esse sistema de acesso usando números, como 0600. O primeiro número é para algumas propriedades especiais que você pode adicionar, as quais as pessoas geralmente ignoram. Na verdade, a maioria das pessoas usa apenas três dígitos para a notação e ignora o quarto dígito inicial.

Para obter mais informações sobre a notação numérica para permissões de arquivo, confira este artigo.

Conclusão

Isso é tudo para a Parte II da nossa série de postagens no blog “A Windows Guy in a Linux World”! Não deixe de manter o ímpeto com Parte III!

Source:
https://adamtheautomator.com/linux-file-permissions/