Tipos de permissões especiais GNU/Linux
Autor: Gabriel Santana
Data: 04/12/2004
Artigo totalmente reproduzido de:
Introdução: SUID, SGUID, STICKY
No artigo anterior vimos como funcionam as permissões pelo modo octal e literal. Vimos um pouco
também sobre o funcionamento do umask.
Agora vamos estudar como funcionam os tipos de permissões especiais,
que afetam arquivos executáveis e diretórios: SUID, SGUID e STICKY, conhecidos
também como permissões de sistema.
SUID
Se este bit estiver ligado em um arquivo executável, isso indica que
que ele vai rodar com as permissões do seu dono (o proprietário do arquivo) e
não com as permissões do usuário que o executou.
OBS: Só tem efeito em arquivos executáveis.
SGUID
Faz o mesmo que o SUID, mas agora o arquivo executado vai rodar com as
permissões do grupo do arquivo. Se aplicado a um diretório, força os
arquivos/diretórios criados dentro dele a ter o mesmo grupo do diretório pai,
ao invés do grupo primário do usuário que o criou.
STICKY
Se este bit for ativado, faz com que arquivos criados em um determinado
diretório só possam ser apagados por quem o criou (dono) ou pelo super-usuário
do sistema. Um exemplo de uso do STICKY é o diretório /tmp.
Tabela de Valores
SUID 4
SGUID 2
STICKY 1
SUID
Para demonstrar o uso do SUID vou dar como exemplo o comando shutdown,
que é utilizado para desligar e reiniciar o sistema, mas que só pode ser
executado pelo usuário root. Mesmo se você der permissão através do "chmod
755 /sbin/shutdown", o usuário comum não vai conseguir realizar a execução
deste, somente o root.
Vamos lá!
#
groupadd shutdown
#
gpasswd -a gabriel shutdown
#
chown root:shutdown /sbin/shutdown
#
chmod 4750 /sbin/shutdown
#
ln -s /sbin/shutdown /bin/shutdown
Comentários dos comandos acima:
groupadd
: adiciona um novo grupo ao sistema.
gpasswd
-a : adiciona um novo membro a um grupo.
chown
: : muda o dono e o grupo de um
arquivo/diretório.
chmod
: liga o bit SUID junto com as novas permissões.
-ln
-s : cria um link simbólico de um arquivo/diretório.
Agora, logue-se novamente no shell:
#
su - gabriel
Agora teste o comando shutdown. Não esqueça de voltar e terminar de ler
o artigo ;D.
# shutdown -h now
OBS 1: Reparem que, se olharmos as permissões do comando shutdown,
veremos um 's' na permissão do dono no lugar do 'x', isto indica que o bit SUID
está ligado.
OBS 2: 'su - gabriel' utilizei para que o sistema atualize-se e
reconheça que o usuário 'gabriel' agora faz parte também do grupo shutdown.
Outra forma de fazer isso seria logar-se novamente, o que seria chato pois
seria necessário sair do X. Caso conheçam uma outra maneira de fazer a mesma
coisa favor postem aqui.
SGUID
O bit SGUID tem a mesma função do bit SUID, só que agora é usada a
permissão do grupo do arquivo para executá-lo. O SGUID também tem uma outra
função, que funciona em diretórios. Quando este bit está ligado em um diretório
ele possibilita que todos arquivos/diretórios criados dentro dele pertençam ao
mesmo grupo desse diretório.
Vamos a um exemplos para que possamos entender.
#
cd /tmp
#
mkdir publico
#
ls -l publico
drwxr-xr-x 2 root root
48 2004-11-24 21:21 publico
Veja que só o root pode escrever nele, ou seja, criar arquivos e
diretórios.
Vamos ligar o bit SGUID neste diretório.
#
chmod 2777 publico
#
ls -l publico
drwxrwsrwx 2 root root
48 2004-11-24 21:21 publico
Observe que o 's' indica que o bit SGUID está ligado. Agora entre neste
diretório com outros usuários, crie arquivos e diretórios, e repare que os
arquivos e diretórios criados pertencem ao mesmo grupo do diretório pai
(diretório antecedente).
Exemplo:
$
mkdir testando
$
ls -l
drwxr-sr-x 2 linuxba root 48 2004-11-24 21:31 testando
Vamos para o próximo.
STICKY
Bom, o bit STICKY não tem segredo. Como vocês já sabem, ele faz com que
um diretório funcione igual ao diretório /tmp, onde todos os usuários podem
criar arquivos/diretórios mas só o próprio dono do arquivo/diretório ou o
usuário root podem excluí-los.
#
cd /tmp
#
mkdir corrimao
#
chmod 1777 corrimao
$
cd /tmp/corrimao
$
mkdir teste
#
ls -l
drwxr-xr-x 2 linuxba users 48 2004-11-24 21:47 teste
Vamos dar uma olhada na conclusão. ;D
Bom, é isso ai pessoal, este artigo na verdade é uma continuação do
artigo anterior, onde foram abordados os tipos de permissões do sistema
GNU/Linux.
Para que você aprenda (e não decore) o que foi passado neste artigo,
pratique e tente entender a lógica da coisa, pois assim você vai aprender e
será muito difícil de esquecer. E fiquem à vontade quanto aos comentários.
Artigos recomendados:
Até a próxima!
Gabriel Santana
Nick: m4sk4r4
CompactNick: m4sk
Nenhum comentário:
Postar um comentário