Fundamentos do sistema Linux - Permissões

Sistemas operacionais multi-usuário têm de zelar pela segurança e privacidade dos dados individuais de cada usuário, bem como prezar pela integridade do sistema. Para isso existem as chamadas permissões de acesso, que atuam em dois aspectos fundamentais. O primeiro é a privacidade e o segundo, a segurança.

[ Hits: 89.002 ]

Por: Davidson Rodrigues Paulo em 20/11/2005 | Blog: http://davidsonpaulo.com/


Permissões especiais



Além das permissões simples de leitura, escrita e execução, existem outras três permissões, conhecidas como permissões especiais por só poderem ser aplicadas a tipos específicos de arquivos, que fornecem um alto nível de segurança ao sistema e privacidade aos usuários.

As permissões especiais são fornecidas pelos chamados bits, a saber: SUID, SGID e STICKY, dos quais trataremos a seguir.

SUID



O bit SUID (Set UID) pode ser aplicado somente para arquivos executáveis, para que eles rodem com as permissões do seu dono, e não com as permissões do usuário que o executou. Dessa forma, suponha um executável que tenha sido criado pelo usuário root com o bit SUID ligado. Então, se o usuário davidson executar esse arquivo, ele rodará como se fosse o root que o estivesse executando.

Isso pode ser útil para permitir que usuários comuns executem programas restritos ao administrador do sistema, como o shutdown, reboot, e outros.

Tomemos como exemplo o shutdown. Ele está localizado no diretório /sbin/, e não pode ser executado por usuários comuns, retornando a seguinte mensagem de erro:

$ /sbin/shutdown
shutdown: you must be root to do that!

Ou seja, "shutdown: você precisa ser root para fazer isso!".

Vamos então ativar o buit SUID para permitir que o usuário davidson possa executar o shutdown:

# chmod 4755 /sbin/shutdown

Ou

# chmod u+s /sbin/shutdown

Observe que utilizamos 4 dígitos para o comando chmod no formato octal. O primeiro dígito, que até então não tínhamos utilizado, é justamente aquele utilizado para as permissões especiais. O número 4 corresponde ao bit SUID. Já no formato literal, utilizamos u+s para ativar (+) a permissão especial de execução (s) para os usuários (u).

Observe agora as novas permissões do /sbin/shutdown:

$ ls -l /sbin/shutdown
-rwsr-xr-x  1 root shutdown 18516 2005-01-04 19:43 /sbin/shutdown
Repare que agora existe um "s" no lugar do "x" nas permissões do dono. Esse é o indicador de que o bit SUID está ligado.

Por fim, vamos criar um atalho para o shutdown no diretório /bin/, para que o usuário davidson possa executá-lo sem precisar digitar o caminho completo:

# ln -s /sbin/shutdown /bin/shutdown

Agora, o usuário davidson e todos os demais usuários do sistema poderão executar normalmente o comando shutdown, como se fosse o root que o estivesse executando.

$ shutdown -h now

SGID



O bit SGID (Set GID), quando aplicado a arquivos executáveis, possui as mesmas funções do bit SUID, com a diferença de que as permissões são atribuídas ao grupo, e não ao usuário. Ele deve ser usado para limitar o acesso a um executável do sistema a um determinado grupo.

Considerando o exemplo anterior, podemos criar um grupo chamado shutdown, e ativar o bit SGID de forma que somente os usuários que pertençam a esse grupo possam executar o utilitário shutdown:

# groupadd shutdown
# chown root:shutdown /sbin/shutdown


Os comandos acima criam o grupo shutdown e o definem como o grupo do utilitário shutdown. Agora, para ativar o bit SGID, utilizamos o chmod na forma octal ou literal:

# chmod 2755 /sbin/shutdown

Ou

# chmod g+s /sbin/shutdown

No formato octal, veja que o número 2 corresponde ao bit SGID, enquanto os outros 3 números correspondem às permissões normais do arquivo. Já no formato literal, utilizamos g+s para ativar (+) a permissão especial de execução (s) para o grupo (g).

As novas permissões do shutdown são agora:

# ls -l /sbin/shutdown
-rwxr-sr-x  1 root shutdown 18516 2005-01-04 19:43 /sbin/shutdown
Observe que o "x" das permissões do grupo foi substituída por um "s", indicando que o bit SGID está ligado.

Por fim, basta criar um link simbólico para o shutdown no diretório /bin/, para que os usuários possam executá-lo sem digitar o caminho completo.

# ln -s /sbin/shutdown /bin/shutdown

Agora, para permitir que algum usuário execute o shutdown, basta adicioná-lo ao grupo shutdown. Por exemplo, vamos adicionar o usuário davidson:

# addgroup shutdown davidson

Assim, o usuário davidson poderá executar o shutdown normalmente, mas os outros usuários não. Sempre que se quiser que determinado usuário execute o shutdown, ele deverá ser adicionado ao grupo shutdown.

O bit SGID também pode ser aplicado a diretórios, e seu efeito neles é forçar os arquivos criados a pertencerem ao mesmo grupo do diretório pai, independente de quem seja o criador do arquivo. Assim, suponha um diretório que pertença ao grupo vendas e possua o bit SGID ligado. Então, todos os arquivos criados dentro desse diretório pertencerão ao grupo vendas, independente do grupo primário do dono do arquivo.

STICKY


O bit STICKY é utilizado em diretórios, para proteção de arquivos de uma forma menos radical, digamos assim. Como você sabe, para evitar que outros usuários apaguem seus arquivos, basta colocá-los dentro de um diretório sem permissão de escrita para os outros usuários. Entretanto, isso também faz com que os usuários não possam criar ou modificar nenhum arquivo dentro desse diretório, e é aí que o bit STICKY entra.

Suponha um diretório chamado documentos que possui o bit STICKY ligado, e com permissões de leitura e escrita para todos os usuários. Dessa forma, qualquer usuário pode criar arquivos dentro desse diretório.

Consideremos que os usuários davidson, fernando e frederico criaram os seguintes arquivos dentro desse diretório:

$ ls -l documentos
-rw-r--r--  1 davidson davidson 0 2005-03-11 10:43 debian-gnu-linux.sxw
-rw-r--r--  1 fernando fernando 0 2005-03-11 10:43 macro-linux.sxw
-rw-r--r--  1 frederico frederico 0 2005-03-11 10:43 software-livre.pdf
Os usuários podem então modificar todos esses arquivos. Mas somente o usuário davidson pode excluir o arquivo debian-gnu-linux.sxw, somente o usuário fernando pode excluir o arquivo macro-linux.sxw e somente o usuário frederico pode excluir o arquivo software-livre.pdf.

Para ligar o bit STICKY num diretório, utilizamos o chmod no formato octal ou literal. Como exemplo, vamos ligar o bit STICKY no diretório documentos/.

$ chmod 1755 documentos

Ou

$ chmod o+t documentos

No formato octal, o número 1 corresponde ao bit STICKY, enquanto os outros 3 dígitos correspondem às permissões simples do diretório. No formato literal, utilizamos o+t, para ativar (+) a restrição da exclusão de arquivos (t) para os outros usuários (o).

Observe agora as novas permissões do diretório documentos/:

$ ls -ld documentos
drwxr-xr-t  2 davidson davidson 160 2005-03-11 10:43 teste
Observe que o bit "x" das permissões dos outros usuários foi substituído por um "t", indicando que o bit STICKY está ligado.

Agora, basta dar permissão de escrita para os outros usuários, para que eles possam criar arquivos dentro desse diretório:

$ chmod o+w documentos

E pronto. Qualquer usuário poderá criar arquivos dentro do diretório documentos/, mas os seus arquivos estarão a salvo, pois ninguém poderá exclui-los a não ser você próprio.

Página anterior    

Páginas do artigo
   1. Introdução
   2. Permissões no GNU/Linux
   3. Permissões especiais
Outros artigos deste autor

Fundamentos do sistema Linux - comandos do Linux

Instalação e utilização do Qemu no Fedora Core

Fundamentos do sistema Linux - Gerenciadores de inicialização

Usando o start-stop-daemon no Slackware

Fundamentos do sistema Linux - usuários e grupos

Leitura recomendada

Visão geral do X-Windows

Problemas "bobos" que tive com Sabayon e como resolvê-los

Projeto Linux nas escolas públicas

Atualização do ZappWM 4.0 Beta (Window Manager)

Usando o FreeBSD como desktop

  
Comentários
[1] Comentário enviado por newba em 20/11/2005 - 21:58h

Muito Bom ..so uma coisinha..: o comando ta em ordem errada, ai você esta adicionando o usuario shutdown ao grupo davidson.

# addgroup shutdown davidson

o comando certo é :
# comando usuario grupo
#addgroup davidson shutdown

Não sei se isso muda de distro para distro mais no meu Debian é assim. vlw

[2] Comentário enviado por professordavid em 21/11/2005 - 09:31h

Cara.. eu estava com um artigo de permissões quase que engatilhado para publicar, mas depois do seu devo admitir que nada substitui o seu talento e capacidade... Parabéns pelo artigo!! Está genial... !!! Fico muito feliz por vc ter publicado primeiro!!!

[3] Comentário enviado por fzuchna em 21/11/2005 - 14:23h

Teste o comando do bit STICY e aconteceu o seguinte apareceu um T ao invés do t, o comando foi chmod 1770 diretorio, somente 0 para outros que acontece isso vc sabe por que??

[4] Comentário enviado por loammy em 21/11/2005 - 16:43h

Eu estava!!!!!!!!!!entende!!!!!!!Com duvidas sobre alguns tipos de permissoes especiais........e foi aqui que achei a minha luz!!!!!!

[5] Comentário enviado por cr1st1an0 em 22/11/2005 - 16:10h

No item "Definindo Permissões dos Arquivos" no qual existe um exemplo que pede para definir as permissões no formato octal com as seguintes características:
*O dono do arquivo terá permissão total, ou seja, leitura, escrita e execução;
*O grupo do arquivo terá permissão de escrita e execução;
*Outros usuários terão permissão de escrita.

O comando utilizado foi este: $ chmod 754 script.sh, mas não deveria ter sido este $ chmod 732 script.sh ???

Analisando a saída encontrada: "-rwxr-xr-- 1 davidson users 0 2005-03-09 11:45 script.sh" parece ter ocorrido uma troca de "escrita" para "leitura", ou seja, a saída equivale ao comando digitado, mas não ao enunciado do exemplo.


[6] Comentário enviado por davidsonpaulo em 22/11/2005 - 17:52h

É verdade, tá errado mesmo. Eu vivo confundindo "leitura" e "escrita", quando quero dizer um digo outro. Vou corrigir imediatamente. Obrigado pela observação, cr1st1ano.

Abraços

[7] Comentário enviado por cr1st1an0 em 24/11/2005 - 19:08h

Parabéns pelo seu artigo.Está muito bem escrito e didático. Erros sempre acontecem, mas o importante é que a mensagem seja passada de forma clara e eficiente e isso você conseguiu. Continue assim!!!

Um abraço

[8] Comentário enviado por vilmarbr em 09/04/2007 - 17:23h

Bom artigo.
Bem didático.

[]´s

Vilmar

[9] Comentário enviado por kabalido em 17/01/2008 - 15:05h

O melhor artigo que eu li até hj sobre permissões de arquivos.
Tirou todas as minhas dúvidas.
Show de bola
Parabéns cara!!!

[10] Comentário enviado por doradu em 04/02/2010 - 15:41h

tá nos favoritos

[11] Comentário enviado por NewWave em 23/10/2011 - 14:03h

Cara, meus parabéns pelo artigo. Muito bom, mesmo! Digno dos textos dos melhores livros. É realmente muito esclarecedor e não dá margens a quaisquer dúvidas. Sem falar do português que está impecável e isso é muito importante, ao meu ver, em um texto técnico. Parabéns!

[12] Comentário enviado por removido em 25/01/2013 - 23:26h

Obrigado por compartilhar o conhecimento!

[13] Comentário enviado por thais.soares@ em 13/07/2015 - 10:43h

Super me ajudou!

[14] Comentário enviado por thais.soares@ em 11/08/2015 - 13:57h

Amei esse artigo!
Super me ajudou


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts