Em computação, o sticky bit (em português "bit pegajoso") é um sinalizador de direito de acesso proprietário que pode ser assimilado a arquivos e diretórios em sistemas do tipo Unix.
Quando um sticky bit de diretório é definido, o sistema de arquivos trata os arquivos em tais diretórios de uma maneira especial de forma que apenas o proprietário do arquivo, o proprietário do diretório ou o usuário root possa renomear ou deletar o arquivo. Sem o sticky bit definido, qualquer usuário com permissões de escrita e execução para o diretório pode renomear ou deletar arquivos contidos, não importando o proprietário do arquivo. Normalmente isto é definido no diretório tmp para prevenir que usuários ordinários deletem ou movam arquivos de outros usuários.
A função moderna do sticky bit foi introduzida no 4.3BSD em 1986 e é encontrado na maioria dos sistemas do tipo Unix modernos.
Essa permissão geralmente é aplicada a diretórios. Quando isso ocorre, os arquivos criados dentro do mesmo apenas podem ser renomeados ou apagados pelo dono do arquivo, do diretório ou pelo superusuário.
Embora exista uma concordância sobre a funcionalidade dessa permissão quando aplicada a diretórios, quando ela é aplicada a arquivos sua função varia de acordo com o sistema operacional utilizado. Os sistemas Linux atuais, por exemplo, ignoram o sticky bit em arquivos.[1]
O sticky bit pode ser definido usando o comando chmod, usando seu modo octal 1000 ou por meio de seu símbolo t (s já é usado pelo bit setuid). Por exemplo, para adicionar o bit no diretório /usr/local/tmp, uma opção seria digitar chmod +t /usr/local/tmp. Ou, para certificar que o diretório possui as permissões padrões de tmp, outra alternativa seria digitar chmod 1777 /usr/local/tmp.
Para retornar à permissão anterior, use chmod -t /usr/local/tmp ou chmod 0777 /usr/local/tmp (o último também reiniciará o diretório tmp para as permissões padrões).
Na notação simbólica de permissões do sistema de arquivos do Unix, o sticky bit é representado pela letra t no local de caractere final. Por exemplo, no Solaris 8, o diretório /tmp, que por padrão possui o sticky bit definido, mostra o seguinte:
$ ls -ld /tmp
drwxrwxrwt 4 root sys 485 Nov 10 06:01 /tmp
Se o sticky bit for definido em um arquivo ou diretório sem o bit de execução definido para a categoria outros (non-user-owner ou non-group-owner), ele é indicado com um T maiúsculo:
# ls -l test
-rw-r--r-- 1 root other 0 Nov 10 12:57 test
# chmod +t test; ls -l test
-rw-r--r-T 1 root other 0 Nov 10 12:57 test