Existem 3 permissões especiais que estão disponíveis para ficheiros e directórios executáveis. Estes são :
1. SUID permissão
2. SGID permissão
3. Sticky bit
Set-user Identification (SUID)
Deixar que você já pensou, como um usuário não-root pode mudar sua própria senha quando ele não tem permissão de escrita no arquivo /etc/shadow. hmmm…. interessante, não é? Bem, para entender o truque de verificar a permissão do comando /usr/bin/passwd :
# ls -lrt /usr/bin/passwd-r-sr-sr-x 1 root sys 31396 Jan 20 2014 /usr/bin/passwd
– Se você verificar cuidadosamente, você encontrará os 2 S’s no campo de permissão. O primeiro S representa o SUID e o segundo o SGID.
– Quando um comando ou script com o conjunto de bits SUID é executado, seu UID efetivo torna-se o do dono do arquivo, ao invés do usuário que o está executando.
– Outro bom exemplo de SUID é o comando su :
# ls -l /bin/su -rwsr-xr-x-x 1 root user 16384 Jan 12 2014 /bin/su
– A permissão setuid exibida como um “s” no campo de execução do dono.
Como definir SUID em um arquivo?
# chmod 4555
Se aparecer um “S” maiúsculo no campo de execução do dono, indica que o bit setuid está ligado, e o bit de execução “x” para o dono do ficheiro está desligado ou negado.
Set-group identification (SGID)
SGID permission on execute file
– A permissão SGID é semelhante à permissão SUID, a única diferença é – quando o script ou comando com SGID on é executado, ele roda como se fosse um membro do mesmo grupo no qual o arquivo é membro.
# ls -l /usr/bin/write-r-xr-sr-x 1 root tty 11484 Jan 15 17:55 /usr/bin/write
– A permissão setgid é exibida como um “s” no campo execute do grupo.
– Se uma letra minúscula “l” aparecer no campo execute do grupo, indica que o bit setgid está ligado, e o bit execute para o grupo está desligado ou negado.
– Como definir o GUID num ficheiro?
# chmod 2555
SGID em um diretório
– Quando a permissão SGID é definida em um diretório, os arquivos criados no diretório pertencem ao grupo do qual o diretório é um membro.
– Por exemplo, se um usuário com permissão de escrita no diretório cria um arquivo lá, esse arquivo é um membro do mesmo grupo do diretório e não do grupo do usuário.
– Isto é muito útil na criação de diretórios compartilhados.
Como definir SGID em um diretório
# chmod g+s
Sticky Bit
– O bit sticky é usado principalmente em diretórios compartilhados.
– É útil para diretórios compartilhados como /var/tmp e /tmp porque os usuários podem criar arquivos, ler e executar arquivos pertencentes a outros usuários, mas não podem remover arquivos pertencentes a outros usuários.
– Por exemplo, se o usuário bob criar um arquivo chamado /tmp/bob, outro usuário tom não pode excluir este arquivo mesmo quando o diretório /tmp tem permissão de 777. Se o sticky bit não estiver definido então o tom pode apagar /tmp/bob, pois o ficheiro /tmp/bob herda as permissões do directório pai.
– root user (Off course!) e o dono dos ficheiros pode remover os seus próprios ficheiros.
Exemplo de bit sticky :
# ls -ld /var/tmpdrwxrwxrwt 2 sys sys 512 Jan 26 11:02 /var/tmp
- T refers to when the execute permissions are off.- t refers to when the execute permissions are on.
Como definir a permissão do bit sticky?
# chmod +t or # chmod 1777