Qual é a letra "t" na saída de "ls -ld / tmp"?

94

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 tapós as permissões?
  • Tanto quanto sei, /tmpé usado para criar arquivos temporários relacionados a diferentes usuários no sistema, então como é que ele tem permissão rwxrwxrwx(777)?

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

Comunidade
fonte
8
Leia o artigo da Wikipedia , é um pouco melhor do que as respostas aqui.
Gilles
1
Veja também: unix.stackexchange.com/q/79395/4784
Martin Thoma
OK Por que, então, quando instalo uma atualização ou um novo pacote rpm de / tmp, o bit adesivo é removido?

Respostas:

112

Então, qual é a parte difícil?

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

Essa é 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 /tmptem o tpedaço pegajoso?

O /tmpdiretório 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 nesse diretório?

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

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

Vou definir um pedaço pegajoso em um diretório chamado testna minha área de trabalho.

Maneira simbólica ( trepresenta o bit pegajoso):

chmod o+t ~/Desktop/test

ou

chmod +t ~/Desktop/test

Maneira numérica / 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 pedaço 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 Linux Juggernaut

Maythux
fonte
13
Esse uso do bit adesivo aplica-se apenas a diretórios, não a arquivos. No passado distante, seu significado nos arquivos executáveis ​​era salvar o segmento de texto do programa para trocar em vez de descartá-lo, para que a execução novamente fosse mais rápida, mas hoje em dia não tem significado nos arquivos regulares.
Psl #
o que era o segmento de texto de um programa e como mantê-lo o tornaria mais rápido?
BluePython
@BluePython O segmento 'text' de um arquivo executável é a parte que inclui todo o código da máquina: o bit executável real. Outros segmentos comuns são 'dados' para dados estáticos e 'bss' para dados com zero (e, portanto, não precisam ser armazenados no executável).
Route de milhas 23/08/19
1
existe alguma diferença entre 't' e 'T' para permissão de diretório ?? @ psusi
Afshin
1
@ Afshin: Como o toculta xindicando se todos os usuários podem executar o arquivo / diretório, precisamos de outra maneira de indicar isso. O normal é que todos possam executá-lo; nesse caso, você obtém um normal t(em vez de um x). Mas, se não, você recebe uma letra maiúscula T(em vez de a -). Fonte: Wikipedia.
Toby Bartels
25

Um bit fixo é um bit de permissão 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 excluir (ou renomear) acidental ou deliberadamente um arquivo criado por outro usuário neste diretório?

Bem, para evitar esse tipo de problema, o conceito de bit pegajoso é usado. Como / tmp é usado para essa finalidade. Portanto, para evitar o cenário acima, / tmp use bit pegajoso.

Por exemplo:

mkdir demo
chmod 777 demo

Também criei dois arquivos com usuário diferente nesta pasta, com a 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 a parte mais difícil

 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 pegajoso

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

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 no tempo de inicialização era uma sobrecarga na época.

Para melhorar esse atraso, o bit adesivo foi introduzido. O sistema operacional verificou se o bit pegajoso de um executável está LIGADO, o segmento de texto do executável é mantido no espaço de troca. Isso facilitou o carregamento do executável na RAM quando o programa foi executado novamente, minimizando o atraso de tempo.

Sistemas modernos como o Linux gerenciam seu cache de executáveis ​​e outros arquivos automaticamente e não precisam da parte complicada para isso.

Fonte: “Conceito de Bit Sticky do Linux Explicado com Exemplos” no The Geek Stuff

g_p
fonte
2

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

/tmpé o diretório mais compartilhado entre processos e usuários e 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 permitir que os usuários e processos usem o diretório sem conflito de permissões.


fonte