Por que usar o bit pegajoso?

14

"O sticky bit aplica-se somente aos diretórios e é normalmente usado em diretórios publicamente graváveis. Dentro de um diretório no qual o sticky bit é aplicado, os usuários são impedidos de excluir ou renomear quaisquer arquivos que eles não possuam pessoalmente."

Isso significa que eu corro o seguinte:

// only allow other users to read files in /directory
sudo chmod o-w -R /directory
sudo chmod o-x -R /directory
sudo chmod o+r -R /directory

os usuários ainda podem excluir ou renomear qualquer arquivo que não pertença a eles?

    
por JohnMerlino 21.12.2013 / 20:04

1 resposta

17

O bit pegajoso é útil em diretórios que podem ser gravados pelo mundo, como /tmp . Nestes diretórios, qualquer um pode criar um arquivo, então o diretório precisa ser mundialmente gravável. Mas isso significaria que qualquer um poderia excluir um arquivo também, mesmo se não pertencesse a eles, já que a exclusão de um arquivo é controlada pela permissão de gravação no diretório. Quando um diretório tem o sticky bit, somente o dono de um arquivo tem permissão para deletá-lo.

Em um diretório com permissões rwx------ ou rwxr-xr-x , somente o proprietário do diretório pode criar ou excluir um arquivo. Se houver arquivos pertencentes a um usuário diferente (movidos para lá por raiz ou criados quando o diretório tiver mais permissões abertas), ele ainda será o proprietário do diretório que tem permissões para excluí-los, não o proprietário do arquivo. / p>

Em um diretório com permissões rwxrwx--- , todos os membros do grupo podem criar e excluir arquivos. Qualquer membro do grupo pode excluir qualquer arquivo, mesmo se pertencer a outro usuário. Se as permissões forem rwxrwx--T (capital T é como t , mas t significa que x está definido e T significa que x está desobstruído), então qualquer membro do grupo pode criar um arquivo, e os membros do grupo podem excluir arquivos, mas apenas seus próprios arquivos.

Você pode usar o seguinte comando para ver quais diretórios têm o sticky bit em seu sistema:

find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null

Você encontrará alguns diretórios como /tmp , que estão abertos a todos, e alguns diretórios como /var/spool/cron/crontabs , que são reservados para um programa do sistema que é executado como seu próprio grupo ( setgid ), onde o bit pegajoso garante que o programa só pode excluir arquivos em nome do usuário que os possui (o que garante que o programa só pode criar arquivos em nome de o usuário que os possui é que o programa está sendo executado como esse usuário, não como raiz, portanto, não é possível criar arquivos pertencentes a outros usuários).

    
por Gilles 21.12.2013 / 20:41