O que é a letra “t” na saída de “ls -ld / tmp”?

75

Ao executar o comando ls -ld /tmp , a saída seria:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Então eu tenho duas perguntas principais:

  • Qual é a letra t após as permissões?
  • Até onde sei, /tmp é usado para criar arquivos temporários relacionados a usuários diferentes no sistema, então como é que ele tem permissão rwxrwxrwx (777)?

Isso parece errado para mim. Por favor, eu preciso da sua ajuda para entender o que está acontecendo aqui.

    
por Community 11.03.2014 / 13:33

3 respostas

97

Então qual é a parte pegajosa?

Um bit pegajoso é um bit de permissão que é definido em um diretório que permite que apenas o proprietário do arquivo dentro desse diretório, o proprietário do diretório ou o usuário raiz exclua ou renomeie o arquivo. Nenhum outro usuário possui os privilégios necessários para excluir o arquivo criado por outro usuário.

Esta é uma medida de segurança para evitar a exclusão de pastas críticas e seu conteúdo (subdiretórios e arquivos), embora outros usuários tenham permissões totais.

Por que /tmp tem o bit t fixo?

O diretório /tmp pode ser usado por diferentes usuários do Linux para criar arquivos temporários. Agora, e se um usuário excluir / renomear um arquivo criado por outro usuário neste diretório?

Bem, para evitar esse tipo de problema, o conceito de bit pegajoso é usado. Então, para isso, um 777 é dado, mas preservar a parte pegajosa não é uma má idéia.

Como posso configurar o bit adesivo para um diretório?

Vou definir um bit pegajoso em um diretório chamado test na minha área de trabalho.

Caminho simbólico ( t representa o bit adesivo):

chmod o+t ~/Desktop/test

ou

chmod +t ~/Desktop/test

Modo numérico / octal (1, bit pegajoso como valor 1 na primeira posição)

chmod 1757 ~/Desktop/test

Agora vamos testar os resultados:

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Para excluir / remover um bit adesivo

chmod o-t ~/Desktop/test

Agora vamos testar os resultados:

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Fonte: "O que é um bit pegajoso e como configurá-lo no Linux?" no The Juggernaut Linux

    
por Maythux 11.03.2014 / 13:37
22
  

Um Sticky bit é um bit de permissão que é definido em um arquivo ou diretório que permite que apenas o proprietário do arquivo / diretório ou o usuário root exclua ou renomeie o arquivo. Nenhum outro usuário recebe privilégios para excluir o arquivo criado por outro usuário.

Às vezes acontece que você precisa do diretório Linux que pode ser usado por todos os usuários do sistema Linux para criar arquivos. Os usuários podem criar, excluir ou renomear arquivos de acordo com sua conveniência neste diretório.

  

Agora, e se um usuário acidentalmente ou deliberadamente excluir (ou renomear) um arquivo criado por outro usuário nesse diretório?

     

Bem, para evitar esse tipo de problema, o conceito de bit pegajoso é usado. Desde / tmp é usado para este fim. Então, para evitar o cenário acima, / tmp usa um bit pegajoso.

Por exemplo:

mkdir demo
chmod 777 demo

Eu também criei dois arquivos com diferentes usuários nesta pasta com permissão 777.

ls -ld demo
drwxrwxrwx 2 guru guru 4096 Mar 11 18:17 demo

ls -l demo
-rwxrwxrwx 1 abhi abhi    0 Mar 11 17:11 file1
-rwxrwxrwx 1 anshu anshu   0 Mar 11 18:15 file2

Agora ligue o bit pegajoso neste

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

Agora, o que acontece se um usuário (abhi) quiser renomear o segundo usuário (anshu)

mv /home/guru/demo/file2  /home/guru/demo/file3
mv: cannot move '/home/guru/demo/file2' to  '/home/guru/demo/file3': Operation not   permitted  

A origem do bit adesivo

No Linux, o sticky bit tem apenas o uso descrito acima, nos diretórios. Historicamente, era usado para algo completamente diferente em arquivos regulares, e é daí que vem o nome.

  

Quando um programa é executado, leva tempo para carregar o programa na memória antes que o usuário possa realmente começar a usá-lo. Se um programa, por exemplo, um editor é usado com frequência pelos usuários, o atraso de tempo de inicialização era uma sobrecarga na época.

     

Para melhorar este atraso de tempo, o bit pegajoso foi introduzido. O SO verificava que, se o bit pegajoso em um executável estivesse ON, o segmento de texto do executável era mantido no espaço de troca. Isso facilitou o retorno do executável para a RAM quando o programa foi executado novamente, minimizando o tempo de atraso.

Sistemas modernos como o Linux gerenciam seu cache de executáveis e outros arquivos automaticamente e não precisam do bit pegajoso para isso.

Fonte: “Conceito do Linux Sticky Bit explicado com exemplos” em The Geek Stuff

    
por g_p 11.03.2014 / 14:06
2

Um stickybit é um método de solução alternativa para diretórios compartilhados que não devem ser excluídos acidentalmente. Quando um diretório tem um stickybit, apenas o proprietário ou a raiz podem excluí-lo, mesmo que cada usuário possa receber todas as outras permissões.

/tmp é o diretório mais compartilhado entre processos e usuários e para isso contém o stickybit para garantir que nenhum usuário possa excluir o diretório, mesmo que a permissão seja 777 , e deve ser assim para dar a capacidade para os usuários e processos para usar o diretório sem conflito nas permissões.

    
por user259474 18.03.2014 / 12:14