Olá pessoal. Hoje irei demonstrar para vocês 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.
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.
# groupadd shutdown
# gpasswd -a emilio shutdown
# chown root:shutdown /sbin/shutdown
# chmod 4750 /sbin/shutdown
# ln -s /sbin/shutdown /bin/shutdown
Comentários dos comandos acima:
- groupadd <group>: adiciona um novo grupo ao sistema.
- gpasswd -a <user><group>: adiciona um novo membro a um grupo.
- chown <usuário>:<grupo> <arquivo>: muda o dono e o grupo de um arquivo/diretório.
- chmod <opções> <mode>: liga o bit SUID junto com as novas permissões.
- -ln -s <source> <dest>: cria um link simbólico de um arquivo/diretório.
Agora, logue-se novamente no shell:
# su – emilio
Agora teste o comando shutdown.
# 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 – emilio’ utilizei para que o sistema atualize-se e reconheça que o usuário ‘emilio’ 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.
SQUID
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 teste
$ ls -l
drwxr-sr-x 2 linuxrs root 48 2004-11-24 21:31 teste
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 diretorio
# chmod 1777 diretorio
$ cd /tmp/diretorio
$ mkdir teste
# ls -l
drwxr-xr-x 2 linuxrs users 48 2004-11-24 21:47 teste
0 comentário