[Dicas-L] Permissoes de arquivos e diretorios em Sistemas Unix (setgid, setuid, sticky)
Permissões de arquivos e diretórios em Sistemas Unix (setgid, setuid, sticky)
Data de Publicação: 06 de Maio de 1997
A última linha de defesa contra invasores do sistema são as permissões oferecidas pelo sistema. Cada arquivo ou diretório possui três grupos de bits de permissão a ele associados: um grupo para o usuário ao qual o arquivo pertence, um grupo para os usuários do grupo ao qual o arquivo está associado e um grupo para todos os demais usuários. Cada grupo contém três grupos de bits idênticos que controlam:
Acesso de leitura(read)
Se este bit estiver ligado, o arquivo ou diretório possui acesso de leitura. Em se tratando de um diretório, esta permissão permite a um usuário ver o conteúdo de um diretório mas não lhe permite acessá-lo.
Acesso de gravação (write)
Se este bit estiver ligado, o arquivo ou diretório pode ser modificado. Em se tratando de um diretório, a permissão de escrita implica a capacidade de criar, apagar ou renomear arquivos. Note que a permissão para remover um arquivo não é determinada pelas permissões do arquivo mas sim pelas permissões do diretório que o contém.
Acesso de execução (execute)
Se este bit estiver ligado, o arquivo ou diretório pode ser executado (pesquisado). No caso de um diretório, a permissão de execução implica que os arquivos nele contidos podem ser acessados
Além destas permissões, existe um quarto bit que se ligado atribui as seguintes propriedades aos arquivos e diretórios:
Este bit, se ativado no grupo de permissções do dono do arquivo, indica que todos os que executarem este programa o estarão fazendo com os privilégios do proprietário do arquivo. Por exemplo, o programa sendmail é setuid root, o que lhe permite gravar arquivos na fila de mensagens do sistema, o que é vedado a usuários normais. Este bit não possui significado em arquivos não executáveis
Este bit atua da mesma forma que o setuid bit, com a diferença que o programa será executado com as permissões do grupo ao qual pertence
O sticky bit informa ao sistema operacional a atuar diferentemente com relação à imagem executável do arquivo. É remanescente de versões antigas do Unix e possui pouco uso hoje. Diretórios que possuem modo 777 que têm este bit ligado não podem ser removidos (/tmp por exemplo).
Shell scripts que possuem os bits setuid ou setgid ligados não são seguros, não importa quantas precauções tenham sido tomadas ao escrevê-los. Tais scripts nunca devem ser permitidos em qualquer sistema Unix.
Nas versões mais recentes de sistemas Unix foi acrescentado um novo significado ao sticky bit quando aplicado a diretórios. Quando este bit é ativado em um diretório, usuários não podem apagar ou renomear arquivos pertencentes a outros usuários. Isto é tipicamente útil no caso de diretórios como /tmp. Normalmente o diretório /tmp possui acesso universal para gravação, permitindo que qualquer usuário remova arquivos pertencentes a qualquer outro usuário. Ativando o sticky bit no diretório /tmp, os usuários podem remover apenas seus próprios arquivos. Para ativar o sticky bit em um diretório, use o comando:
Ao emitirmos o comando:
drwxrwxrwt   4 bin      bin         3584 May  5 14:17 /tmp
O caracter "t" em drwxrwxrwt indica que o sticky bit deste diretório está ligado.
Ao se criar um arquivo normalmente todas as permissões são ativadas. Como isto raramente é o desejado, o valor do umask é usado para modificar o grupo de permissões com as quais um arquivo é criado. Ou seja, da mesma forma com que o comando chmod especifica quais bits devem ser ligados, o comando umask especifica quais bits devem ser desligados.