[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ próximo ]


Guia Foca GNU/Linux
Capítulo 11 - Permissões de acesso a arquivos e diretórios


A permissão de acesso protege o sistema de arquivos Linux do acesso indevido de pessoas ou programas não autorizados.

A permissão de acesso do GNU/Linux também impede que um programa mal intencionado, por exemplo, apague um arquivo que não deve, envie arquivos para outra pessoa ou forneça acesso da rede para que outros usuários invadam o sistema. O sistema GNU/Linux é muito seguro e como qualquer outro sistema seguro e confiável impede que usuários iniciantes (ou mal intencionados) instalem programas enviados por terceiros sem saber para que eles realmente servem e causem danos irreversíveis em seus arquivos, seu micro ou sua empresa.

Esta seção pode se tornar um pouco difícil de se entender, então recomendo ler e ao mesmo tempo prática-la para uma ótima compreensão. Não se preocupe, também coloquei exemplos para ajuda-lo a entender o sistema de permissões de acesso do ambiente GNU/Linux.


11.1 Donos, grupos e outros usuários

O princípio da segurança no sistema de arquivos GNU/Linux é definir o acesso aos arquivos por donos, grupos e outros usuários:

dono

É a pessoa que criou o arquivo ou o diretório. O nome do dono do arquivo/diretório é o mesmo do usuário usado para entrar no sistema GNU/Linux. Somente o dono pode modificar as permissões de acesso do arquivo.

As permissões de acesso do dono de um arquivo somente se aplicam ao dono do arquivo/diretório. A identificação do dono também é chamada de user id (UID).

A identificação de usuário e o nome do grupo que pertence são armazenadas respectivamente nos arquivos /etc/passwd e /etc/group. Estes são arquivos textos comuns e podem ser editados em qualquer editor de texto, mas tenha cuidado para não modificar o campo que contém a senha do usuário encriptada (que pode estar armazenada neste arquivo caso não estiver usando senhas ocultas).

grupo

Para permitir que vários usuários diferentes tivessem acesso a um mesmo arquivo (já que somente o dono poderia ter acesso ao arquivo), este recurso foi criado. Cada usuário pode fazer parte de um ou mais grupos e então acessar arquivos que pertençam ao mesmo grupo que o seu (mesmo que estes arquivos tenham outro dono).

Por padrão, quando um novo usuário é criado, o grupo ele pertencerá será o mesmo de seu grupo primário (exceto pelas condições que explicarei adiante) (veja isto através do comando id, veja id, Seção 10.10). A identificação do grupo é chamada de gid (group id).

Um usuário pode pertencer a um ou mais grupos. Para detalhes de como incluir o usuário em mais grupos veja Adicionando o usuário a um grupo extra, Seção 10.8.

outros

É a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo.

Cada um dos tipos acima possuem três tipos básicos de permissões de acesso que serão vistas na próxima seção.


11.2 Tipos de Permissões de acesso

Quanto aos tipos de permissões que se aplicam ao dono, grupo e outros usuários, temos 3 permissões básicas:

As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -la. Para maiores detalhes veja ls, Seção 6.1. As 3 letras (rwx) são agrupadas da seguinte forma:

     -rwxrwxrwx   gleydson   users  teste

Virou uma bagunça não? Vou explicar cada parte para entender o que quer dizer as 10 letras acima (da esquerda para a direita):

Veja o comando chmod, Seção 11.7 para detalhes sobre a mudança das permissões de acesso de arquivos/diretórios.


11.3 Etapas para acesso a um arquivo/diretório

O acesso a um arquivo/diretório é feito verificando primeiro se o usuário que acessará o arquivo é o seu dono, caso seja, as permissões de dono do arquivo são aplicadas. Caso não seja o dono do arquivo/diretório, é verificado se ele pertence ao grupo correspondente, caso pertença, as permissões do grupo são aplicadas. Caso não pertença ao grupo, são verificadas as permissões de acesso para os outros usuários que não são donos e não pertencem ao grupo correspondente ao arquivo/diretório.

Após verificar aonde o usuário se encaixa nas permissões de acesso do arquivo (se ele é o dono, pertence ao grupo, ou outros usuários), é verificado se ele terá permissão acesso para o que deseja fazer (ler, gravar ou executar o arquivo), caso não tenha, o acesso é negado, mostrando uma mensagem do tipo: "Permission denied" (permissão negada).

O que isto que dizer é que mesmo que você seja o dono do arquivo e definir o acesso do dono (através do comando chmod) como somente leitura (r) mas o acesso dos outros usuários como leitura e gravação, você somente poderá ler este arquivo mas os outros usuários poderão ler/grava-lo.

As permissões de acesso (leitura, gravação, execução) para donos, grupos e outros usuários são independentes, permitindo assim um nível de acesso diferenciado. Para maiores detalhes veja Tipos de Permissões de acesso, Seção 11.2.

Lembre-se: Somente o dono pode modificar um arquivo/diretório!

Para mais detalhes veja os comandos chown, Seção 11.9 e chgrp, Seção 11.8.


11.4 Exemplos práticos de permissões de acesso

Abaixo dois exemplos práticos de permissão de acesso: Exemplo de acesso a um arquivo, Seção 11.4.1 e a Exemplo de acesso a um diretório, Seção 11.4.2. Os dois exemplos são explicados passo a passo para uma perfeita compreensão do assunto. Vamos a prática!


11.4.1 Exemplo de acesso a um arquivo

Abaixo um exemplo e explicação das permissões de acesso a um arquivo no GNU/Linux (obtido com o comando ls -la, explicarei passo a passo cada parte:

-rwxr-xr-- 1 gleydson user 8192 nov 4 16:00 teste

-rwxr-xr--

Estas são as permissões de acesso ao arquivo teste. Um conjunto de 10 letras que especificam o tipo do arquivo, permissão do dono do arquivo, grupo do arquivo e outros usuários. Veja a explicação detalhada sobre cada uma abaixo:

-rwxr-xr--

A primeira letra (do conjunto das 10 letras) determina o tipo do arquivos. Se a letra for um d é um diretório, e você poderá acessa-lo usando o comando cd. Caso for um l é um link simbólico para algum arquivo ou diretório no sistema (para detalhes veja o comando ln, Seção 8.4 . Um - significa que é um arquivo normal.

-rwxr-xr--

Estas 3 letras (da segunda a quarta do conjunto das 10 letras) são as permissões de acesso do dono do arquivo teste. O dono (neste caso gleydson) tem a permissão para ler (r), gravar (w) e executar (x) o arquivo teste.

-rwxr-xr--

Estas 3 letras (da quinta a sétima do conjunto das 10 letras) são as permissões de acesso dos usuários que pertencem ao grupo user do arquivo teste. Os usuários que pertencem ao grupo user tem a permissão somente para ler (r) e executar (x) o arquivo teste não podendo modifica-lo ou apaga-lo.

-rwxr-xr--

Estas 3 letras (da oitava a décima) são as permissões de acesso para usuários que não são donos do arquivo teste e que não pertencem ao grupo user. Neste caso, estas pessoas somente terão a permissão para ver o conteúdo do arquivo teste.

gleydson

Nome do dono do arquivo teste.

user

Nome do grupo que o arquivo teste pertence.

teste

Nome do arquivo.


11.4.2 Exemplo de acesso a um diretório

Abaixo um exemplo com explicações das permissões de acesso a um diretório no GNU/Linux:

drwxr-x--- 2 gleydson user 1024 nov 4 17:55 exemplo

drwxr-x---

Permissões de acesso ao diretório exemplo. É um conjunto de 10 letras que especificam o tipo de arquivo, permissão do dono do diretório, grupo que o diretório pertence e permissão de acesso a outros usuários. Veja as explicações abaixo:

drwxr-x---

A primeira letra (do conjunto das 10) determina o tipo do arquivo. Neste caso é um diretório porque tem a letra d.

drwxr-x---

Estas 3 letras (da segunda a quarta) são as permissões de acesso do dono do diretório exemplo. O dono do diretório (neste caso gleydson) tem a permissão para listar arquivos do diretório (r), gravar arquivos no diretório (w) e entrar no diretório (x).

drwxr-x---

Estas 3 letras (da quinta a sétima) são as permissões de acesso dos usuários que pertencem ao grupo user. Os usuários que pertencem ao grupo user tem a permissão somente para listar arquivos do diretório (r) e entrar no diretório (x) exemplo.

drwxr-x---

Estas 3 letras (da oitava a décima) são as permissões de acesso para usuários que não são donos do diretório exemplo e que não pertencem ao grupo user. Com as permissões acima, nenhum usuário que se encaixe nas condições de dono e grupo do diretório tem a permissão de acessa-lo.

gleydson

Nome do dono do diretório exemplo.

user

Nome do grupo que diretório exemplo pertence.

exemplo

Nome do diretório.

Para detalhes de como alterar o dono/grupo de um arquivo/diretório, veja os comandos chmod, Seção 11.7, chgrp, Seção 11.8 e chown, Seção 11.9.

OBSERVAÇÕES:

Isto mostra que é levado mais em consideração a permissão de acesso do diretório do que as permissões dos arquivos e sub-diretórios que ele contém. Este ponto é muitas vezes ignorado por muitas pessoas e expõem seu sistema a riscos de segurança. Imagine o problema que algum usuário que não tenha permissão de gravação em um arquivo mas que a tenha no diretório pode causar em um sistema mal administrado.


11.5 Permissões de Acesso Especiais

Em adição as três permissões básicas (rwx), existem permissões de acesso especiais (stX) que afetam arquivos executáveis e diretórios:


11.6 A conta root

Esta seção foi retirada do Manual de Instalação da Debian.

A conta root é também chamada de super usuário, este é um login que não possui restrições de segurança. A conta root somente deve ser usada para fazer a administração do sistema, e usada o menor tempo possível.

Qualquer senha que criar deverá conter de 6 a 8 caracteres (em sistemas usando crypto) ou até frases inteiras (caso esteja usando MD5, que garante maior segurança), e também poderá conter letras maiúsculas e minúsculas, e também caracteres de pontuação. Tenha um cuidado especial quando escolher sua senha root, porque ela é a conta mais poderosa. Evite palavras de dicionário ou o uso de qualquer outros dados pessoais que podem ser adivinhados.

Se qualquer um lhe pedir senha root, seja extremamente cuidadoso. Você normalmente nunca deve distribuir sua conta root, a não ser que esteja administrando um computador com mais de um administrador do sistema.

Utilize uma conta de usuário normal ao invés da conta root para operar seu sistema. Porque não usar a conta root? Bem, uma razão para evitar usar privilégios root é por causa da facilidade de se cometer danos irreparáveis como root. Outra razão é que você pode ser enganado e rodar um programa Cavalo de Tróia -- que é um programa que obtém poderes do super usuário para comprometer a segurança do seu sistema sem que você saiba.


11.7 chmod

Muda a permissão de acesso a um arquivo ou diretório. Com este comando você pode escolher se usuário ou grupo terá permissões para ler, gravar, executar um arquivo ou arquivos. Sempre que um arquivo é criado, seu dono é o usuário que o criou e seu grupo é o grupo do usuário (exceto para diretórios configurados com a permissão de grupo "s", será visto adiante).

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

Onde:

diretório/arquivo

Diretório ou arquivo que terá sua permissão mudada.

opções
-v, --verbose

Mostra todos os arquivos que estão sendo processados.

-f, --silent

Não mostra a maior parte das mensagens de erro.

-c, --change

Semelhante a opção -v, mas só mostra os arquivos que tiveram as permissões alteradas.

-R, --recursive

Muda permissões de acesso do diretório/arquivo no diretório atual e sub-diretórios.

ugoa+-=rwxXst

chmod não muda permissões de links simbólicos, as permissões devem ser mudadas no arquivo alvo do link. Também podem ser usados códigos numéricos octais para a mudança das permissões de acesso a arquivos/diretórios. Para detalhes veja Modo de permissão octal, Seção 11.10.

DICA: É possível copiar permissões de acesso do arquivo/diretório, por exemplo, se o arquivo teste.txt tiver a permissão de acesso r-xr----- e você digitar chmod o=u, as permissões de acesso dos outros usuários (o) serão idênticas ao do dono (u). Então a nova permissão de acesso do arquivo teste.txt será r-xr--r-x

Exemplos de permissões de acesso:

chmod g+r *

Permite que todos os usuários que pertençam ao grupo dos arquivos (g) tenham (+) permissões de leitura (r) em todos os arquivos do diretório atual.

chmod o-r teste.txt

Retira (-) a permissão de leitura (r) do arquivo teste.txt para os outros usuários (usuários que não são donos e não pertencem ao grupo do arquivo teste.txt).

chmod uo+x teste.txt

Inclui (+) a permissão de execução do arquivo teste.txt para o dono e outros usuários do arquivo.

chmod a+x teste.txt

Inclui (+) a permissão de execução do arquivo teste.txt para o dono, grupo e outros usuários.

chmod a=rw teste.txt

Define a permissão de todos os usuários exatamente (=) para leitura e gravação do arquivo teste.txt.


11.8 chgrp

Muda o grupo de um arquivo/diretório.

chgrp [opções] [grupo] [arquivo/diretório]

Onde:

grupo

Novo grupo do arquivo/diretório.

arquivo/diretório

Arquivo/diretório que terá o grupo alterado.

opções
-c, --changes

Somente mostra os arquivos/grupos que forem alterados.

-f, --silent

Não mostra mensagens de erro para arquivos/diretórios que não puderam ser alterados.

-v, --verbose

Mostra todas as mensagens e arquivos sendo modificados.

-R, --recursive

Altera os grupos de arquivos/sub-diretórios do diretório atual.


11.9 chown

Muda dono de um arquivo/diretório. Opcionalmente pode também ser usado para mudar o grupo.

chown [opções] [dono.grupo] [diretório/arquivo]

onde:

dono.grupo

Nome do dono.grupo que será atribuído ao diretório/arquivo. O grupo é opcional.

diretório/arquivo

Diretório/arquivo que o dono.grupo será modificado.

opções
-v, --verbose

Mostra os arquivos enquanto são alterados.

-f, --supress

Não mostra mensagens de erro durante a execução do programa.

-c, --changes

Mostra somente arquivos que forem alterados.

-R, --recursive

Altera dono e grupo de arquivos no diretório atual e sub-diretórios.

O dono.grupo pode ser especificado usando o nome de grupo ou o código numérico correspondente ao grupo (GID).

Você deve ter permissões de gravação no diretório/arquivo para alterar seu dono/grupo.


11.10 Modo de permissão octal

Ao invés de utilizar os modos de permissão +r, -r, etc, pode ser usado o modo octal para se alterar a permissão de acesso a um arquivo. O modo octal é um conjunto de oito números onde cada número define um tipo de acesso diferente.

É mais flexível gerenciar permissões de acesso usando o modo octal ao invés do comum, pois você especifica diretamente a permissão do dono, grupo, outros ao invés de gerenciar as permissões de cada um separadamente. Abaixo a lista de permissões de acesso octal:

O uso de um deste números define a permissão de acesso do dono, grupo ou outros usuários. Um modo fácil de entender como as permissões de acesso octais funcionam, é através da seguinte tabela:

     1 = Executar
     2 = Gravar
     4 = Ler
     
     * Para Dono e Grupo, multiplique as permissões acima por x100 e x10.

Basta agora fazer o seguinte:

Vamos a prática com alguns exemplos:

     "chmod 764 teste"

Os números são interpretados da direita para a esquerda como permissão de acesso aos outros usuários (4), grupo (6), e dono (7). O exemplo acima faz os outros usuários (4) terem acesso somente leitura (r) ao arquivo teste, o grupo (6) ter a permissão de leitura e gravação (w), e o dono (7) ter permissão de leitura, gravação e execução (rwx) ao arquivo teste.

Outro exemplo:

     "chmod 40 teste"

O exemplo acima define a permissão de acesso dos outros usuários (0) como nenhuma, e define a permissão de acesso do grupo (4) como somente leitura (r). Note usei somente dois números e então a permissão de acesso do dono do arquivo não é modificada (leia as permissões de acesso da direita para a esquerda!). Para detalhes veja a lista de permissões de acesso em modo octal no inicio desta seção.

     "chmod 751 teste"

O exemplo acima define a permissão de acesso dos outros usuários (1) para somente execução (x), o acesso do grupo (5) como leitura e execução (rx) e o acesso do dono (7) como leitura, gravação e execução (rwx).


11.11 umask

A umask (user mask) são 3 números que definem as permissões iniciais do dono, grupo e outros usuários que o arquivo/diretório receberá quando for criado ou copiado. Digite umask sem parâmetros para retornar o valor de sua umask atual.

A umask tem efeitos diferentes caso o arquivo que estiver sendo criado for binário (um programa executável) ou texto (Arquivo texto e binário, Seção 2.2.3) . Veja a tabela a seguir para ver qual é a mais adequada a sua situação:

     ---------------------------------------------
     |       |        ARQUIVO       | DIRETÓRIO  |
     | UMASK |----------------------|            |
     |       |   Binário  |  Texto  |            |
     |------------------------------|------------|
     |   0   |    r-x     |   rw-   |    rwx     |
     |   1   |    r--     |   rw-   |    rw-     |
     |   2   |    r-x     |   r--   |    r-x     |
     |   3   |    r--     |   r--   |    r--     |
     |   4   |    --x     |   -w-   |    -wx     |
     |   5   |    ---     |   -w-   |    -w-     |
     |   6   |    --x     |   ---   |    --x     |
     |   7   |    ---     |   ---   |    ---     |
     ---------------------------------------------

Um arquivo texto criado com o comando umask 012;touch texto.txt receberá as permissões -rw-rw-r--, pois 0 (dono) terá permissões rw-, 1 (grupo), terá permissões rw- e 2 (outros usuários) terão permissões r--. Um arquivo binário copiado com o comando umask 012;cp /bin/ls /tmp/ls receberá as permissões -r-xr--r-x (confira com a tabela acima).

Por este motivo é preciso um pouco de atenção antes de escolher a umask, um valor mal escolhido poderia causar problemas de acesso a arquivos, diretórios ou programas não sendo executados. O valor padrão da umask na maioria das distribuições atuais é 022. A umask padrão no sistema Debian é a 022 .

A umask é de grande utilidade para programas que criam arquivos/diretórios temporários, desta forma pode-se bloquear o acesso de outros usuários desde a criação do arquivo, evitando recorrer ao chmod.


[ anterior ] [ Conteúdo ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ 16 ] [ próximo ]


Guia Foca GNU/Linux

Versão 4.10 - domingo, 18 de novembro de 2007

Gleydson Mazioli da Silva gleydson@guiafoca.org