3.2. Usuários e permissões de acesso

Desde o seu lançamento no início dos anos 90, o Linux foi desenvolvido como um sistema multiusuário. Um número ilimitado de usuários pode trabalhar no Linux simultaneamente. Os usuários precisam efetuar login no sistema antes de iniciar uma sessão na estação de trabalho. Cada usuário possui um nome de usuário com uma senha correspondente. Essa diferenciação entre usuários garante que aqueles não autorizados não possam ver os arquivos aos quais não têm permissão. Mudanças maiores no sistema, como instalações de novos programas, geralmente também são inviáveis ou restritas para usuários normais. Somente o usuário, ou superusuário, possui capacidade irrestrita de efetuar mudanças no sistema e tem acesso ilimitado a todos esses arquivos. Aqueles que usam esse conceito com discernimento, que apenas efetuam login com acesso total de root quando necessário, podem evitar a perda não intencional de dados. Em circunstâncias normais, somente o root pode apagar arquivos de sistema ou formatar discos rígidos. Portanto, a ameaça do efeito do Cavalo de Tróia ou da digitação acidental de comandos destrutivos pode ser consideravelmente reduzida.

3.2.1. Permissões do sistema de arquivos

Basicamente, todo arquivo em um sistema de arquivos do Linux pertence a um usuário e a um grupo. Os grupos proprietários e todos os outros podem ser autorizados a gravar, ler ou executar esses arquivos.

Nesse caso, um grupo pode ser definido como um conjunto de usuários conectados que têm determinados direitos coletivos. Por exemplo, chame um grupo que trabalhe em determinado projeto de project3. Cada usuário de um sistema Linux é um membro de pelo menos um grupo proprietário, normalmente users. Podem existir quantos grupos forem necessários no sistema, mas somente o root é capaz de adicionar grupos. Com o comando groups, todo usuário pode descobrir de quais grupos ele faz parte.

Acesso a arquivos

A organização das permissões em sistemas de arquivos pode ser diferente para arquivos e diretórios. As informações sobre permissões de arquivos podem ser exibidas com o comando ls -l. A saída pode aparecer como no Exemplo 3.1, “Exemplo de saída com permissões de arquivos”.

Exemplo 3.1. Exemplo de saída com permissões de arquivos

-rw-r----- 1 tux project3 14197 Jun 21  15:03 Roadmap

Como indica a terceira coluna, esse arquivo pertence ao usuário tux. Ele está atribuído ao grupo project3. Para descobrir as permissões de usuário do arquivo Roadmap, a primeira coluna deve ser examinada com mais cuidado.

-

rw-

r--

---

Tipo

Permissões de usuários

Permissões de grupo

Permissões para outros usuários

Essa coluna contém um caractere inicial seguido de nove caracteres agrupados em três. A primeira das dez letras representa o tipo de componente do sistema de arquivos. O travessão () mostra que este é um arquivo. Um diretório (d), um link (l), um dispositivo de bloco (b) ou um dispositivo de caractere também poderia ser indicado.

Os três próximos blocos seguem um padrão. Os três primeiros caracteres indicam se o arquivo é legível (r) ou não (). Um w na posição central significa que o objeto correspondente pode ser editado, e um travessão () significa que não é possível gravá-lo no arquivo. Um x na terceira posição significa que o objeto pode ser executado. Como o arquivo do exemplo é um arquivo de texto, e não um executável, o acesso executável a esse arquivo específico não é necessário.

Neste exemplo, tux possui, como proprietário do arquivo Roadmap, acesso de leitura (r) e gravação (w), mas não pode executá-lo (x). Os membros do grupo project3 podem ler o arquivo, mas não podem modificá-lo ou executá-lo. Outros usuários não têm qualquer tipo de acesso a esse arquivo. Outras permissões podem ser atribuídas por meio de ACLs (Access Control Lists).

Permissões de diretório

As permissões de acesso a diretórios são do tipo d. O significado das permissões individuais para diretórios é ligeiramente diferente.

Exemplo 3.2. Exemplo de saída com permissões de diretórios

drwxrwxr-x 1 tux project3 35 Jun 21 15:15  ProjectData

No Exemplo 3.2, “Exemplo de saída com permissões de diretórios”, o proprietário (tux) e o grupo proprietário (project3) do diretório ProjectData são fáceis de reconhecer. Ao contrário das permissões de acesso do arquivo em Acesso a arquivos , o conjunto de permissões de leitura (r) significa que o conteúdo do diretório pode ser mostrado. A permissão de gravação (w) significa que novos arquivos podem ser criados. A permissão executável (x) significa que o usuário pode mudar para esse diretório. No exemplo acima, o usuário tux e os membros do grupo project3 podem mudar para o diretório ProjectData (x), exibir o seu conteúdo (r) e adicionar ou apagar arquivos (w). Por outro lado, os outros usuários recebem menos permissões de acesso. Eles podem digitar o diretório (x) e pesquisá-lo (r), mas não podem inserir novos arquivos (w).

3.2.2. Modificando permissões de arquivos

Mudando permissões de acesso

As permissões de acesso de um arquivo ou diretório podem ser mudadas pelo proprietário e, obviamente, pelo root com o comando chmod seguido dos parâmetros que mudam as permissões e os nomes de um ou mais arquivos. Os parâmetros formam categorias diferentes:

  1. usuários interessados

    • u (usuário) – proprietário do arquivo

    • g (grupo) – grupo que possui o arquivo

    • o (outros) – usuários adicionais (se nenhum parâmetro for informado, as mudanças se aplicarão a todas as categorias)

  2. um caractere para exclusão (-), configuração (=) ou inserção (+)

  3. as abreviações

    • r - ler

    • w - gravar

    • x - executar

  4. nome ou nomes de arquivos separados por espaços

Se, por exemplo, o usuário tux em Exemplo 3.2, “Exemplo de saída com permissões de diretórios” também deseja conceder a outros usuários acesso de gravação (w) ao diretório ProjectData, ele pode fazer isso usando o comando chmod o+w ProjectData.

Entretanto, se ele quiser negar permissões de gravação a todos os usuários, exceto a si mesmo, basta digitar o comando chmod go-w ProjectData. Para proibir todos os usuários de adicionarem um novo arquivo à pasta ProjectData, digite chmod -w ProjectData. Assim, nem mesmo o proprietário pode gravar o arquivo sem primeiro restabelecer as permissões de gravação.

Mudando as permissões de propriedade

Outros comandos importantes para controlar a propriedade e as permissões dos componentes do sistema de arquivos são chown (mudar usuário) e chgrp (mudar grupo). O comando chown pode ser usado para transferir a propriedade de um arquivo para outro usuário. Entretanto, somente o root tem permissão para efetuar essa mudança.

Suponha que o arquivo Roadmap do Exemplo 3.2, “Exemplo de saída com permissões de diretórios” não deva mais pertencer a tux, e sim ao usuário geeko. O root deverá digitar chown geeko Roadmap.

chgrp muda a propriedade do grupo do arquivo. Contudo, o proprietário do arquivo deve ser um membro do novo grupo. Dessa forma, o usuário tux do Exemplo 3.1, “Exemplo de saída com permissões de arquivos” pode alternar o grupo que possui o arquivo ProjectData para project4 com o comando chgrp project4 ProjectData, desde que ele seja membro desse novo grupo.