Donos, grupos e outros usuários
O princípio da segurança no sistema de arquivos do Linux é definir o acesso aos arquivos por donos, grupos e outros usuários.
O 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. 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).
O grupo serve para permitir que vários usuários diferentes tenham acesso a um mesmo arquivo (já que somente o dono poderia ter acesso ao arquivo).
Outros é a categoria de usuários que não são donos ou não pertencem ao grupo do arquivo.
Um 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).
Permissões de acesso a arquivos e diretórios
Cada um dos tipos acima possuem três tipos básicos de permissões de acesso:
- r - Permissão de leitura para arquivos. Caso for um diretório, permite listar seu conteúdo (através do comando ls, por exemplo).
- w - Permissão de gravação para arquivos. Caso for um diretório, permite a gravação de arquivos ou outros diretórios dentro dele. Para que um arquivo/diretório possa ser apagado, é necessário o acesso a gravação.
- x - Permite executar um arquivo (caso seja um programa executável). Caso seja um diretório, permite que seja acessado através do comando cd.
As permissões de acesso a um arquivo/diretório podem ser visualizadas com o uso do comando ls -la.
As 3 letras (rwx) são agrupadas da seguinte forma:
-rwxrwxrwx gleydson users teste
A seguir uma explicação das 10 letras da esquerda para a direita:
A primeira letra diz qual é o tipo do arquivo. Caso tiver um “d” é um diretório, um “l” um link a um arquivo no sistema (veja ‘ln’ on page 70 para detalhes) , um “-” quer dizer que é um arquivo comum, etc.
- O primeiro grupo(rwx) refere-se a permissão de acesso ao dono do arquivo.
- O segundo grupo(rwx) refere-se as permissões de acesso ao grupo do arquivo.
- O terceiro grupo(rwx) diz qual é a permissão de acesso para os outros usuários.
- gleydson é o dono do arquivo.
- users é o grupo do arquivo.
- e teste é o nome do arquivo
OBSERVAÇÕES:
Para listar os arquivos, permissões e respectivos grupo e dono use o comando ls -la
O usuário root não tem nenhuma restrição de acesso ao sistema.
Se você tem permissões de gravação no diretório e tentar apagar um arquivo que você não tem permissão de gravação, o sistema perguntará se você confirma a exclusão do arquivo apesar do modo leitura. Caso você tenha permissões de gravação no arquivo, o arquivo será apagado por padrão sem mostrar nenhuma mensagem de erro (a não ser que seja especificada a opção -i com o comando rm).
Por outro lado, mesmo que você tenha permissões de gravação em um arquivo mas não tenha permissões de gravação em um diretório, a exclusão do arquivo será negada.
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.
Comandos chmod,chgrp,chown e unmask
chmod (muda a permissão de acesso)
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.
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 subdiretórios.
ugoa+-=rwxXst • ugoa - Controla que nível de acesso será mudado. Especificam, em ordem, usuário (u), grupo (g), outros (o), todos (a).
• +-= - + coloca a permissão, - retira a permissão do arquivo e define a permissão exatamente como especificado.
• rwx - r permissão de leitura do arquivo. w permissão de gravação. x permissão de execução (ou acesso a diretórios).
chmod não muda permissões de links simbólicos, as permissões devem ser mudadas no arquivo alvo do link.
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.
chgrp (muda o grupo)
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.
chown (muda o dono)
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.
Exemplos:
- chown joao teste.txt - Muda o dono do arquivo teste.txt para joao.
- chown joao.users teste.txt - Muda o dono do arquivo teste.txt para joao e seu grupo para users.
- chown -R joao.users * - Muda o dono/grupo dos arquivos do diretório atual e subdiretórios para joao/users (desde que você tenha permissões de gravação no diretórios e sub-diretórios).
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.
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:
- 0 = Nenhuma permissão de acesso
- 1 = Executar
- 2 = Gravar
- 4 = Ler
Basta agora fazer o seguinte:
- Somente permissão de execução, use 1.
- Somente a permissão de leitura, use 4.
- Somente permissão de gravação, use 2.
- Permissão de leitura/gravação, use 6 (equivale a 2+4 / Gravar+Ler).
- Permissão de leitura/execução, use 5 (equivale a 1+4 / Executar+Ler).
- Permissão de execução/gravação, use 3 (equivale a 1+2 / Executar+Gravar).
- Permissão de leitura/gravação/execução, use 7 (equivale a 1+2+4 / Executar+Gravar+Ler).
Exemplos: chmod ogd
"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.
"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.
"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).
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’ on page 23) .
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 rwe 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
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.
Aqui listamos os comandos relativo a permissionamento de arquivos no Linux no próximo post falaremos sobre os comandos relacionados a processos.
Um abraço!
Nenhum comentário:
Postar um comentário