Por que usar bit pegajoso?

18

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

Isso significa se eu executar 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 lhes pertence?

JohnMerlino
fonte

Respostas:

22

A parte complicada é útil em diretórios que podem ser gravados mundialmente, como /tmp. Nesses diretórios, qualquer um pode criar um arquivo, portanto, o diretório precisa ser gravável em todo o mundo. Mas isso significaria que qualquer um também poderia excluir um arquivo, mesmo que não pertencesse a eles, pois a exclusão de um arquivo é controlada pela permissão de gravação no diretório. Quando um diretório possui o bit adesivo, somente o proprietário de um arquivo tem permissão para excluí-lo.

Em um diretório com permissões rwx------ou rwxr-xr-x, apenas o proprietário do diretório pode criar ou excluir um arquivo. Se houver algum arquivo que pertença a um usuário diferente (movido para lá pela raiz ou criado quando o diretório tiver mais permissões abertas), ainda será o proprietário do diretório que possui permissões para excluí-lo, não o proprietário do arquivo.

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 que ele pertença a um usuário diferente. Se as permissões forem em rwxrwx--Tvez disso (capital Té como t, mas tsignifica que o xbit está definido e Tsignifica que o xbit está limpo), 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 bit persistente 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 /tmpabertos para todos e outros /var/spool/cron/crontabsreservados para um programa do sistema que é executado como seu próprio grupo ( setgid ), onde o bit persistente garante que o programa possa excluir apenas arquivos em nome do usuário que os possui (o que garante que o programa possa criar apenas arquivos em nome do 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).

Gilles 'SO- parar de ser mau'
fonte