Se o bit suid não tem efeito nos diretórios e o sticky bit não tem efeito nos arquivos, por que eles não são combinados em um bit?

18

Isso economizaria um bit por arquivo ou há preenchimento necessário que precise ser utilizado de qualquer maneira? E mesmo se houver preenchimento, por que não combiná-los e utilizar o bit extra para um novo recurso?

atormentar
fonte
3
O bit pegajoso faz algo em arquivos comuns. Veja en.wikipedia.org/wiki/Sticky_bit para saber o número de maneiras como é usado.
27717 Joshua
@ Joshua Isso é interessante, e é um bom argumento que nos nixes não Linux * o comportamento varia. Mas eu tinha o Linux em mente para esta pergunta. Gostaria de saber se alguém em um kernel Linux com BSD amd e sl ainda poderia depender do bit de arquivo pegajoso? E eu acho que vários programas da área de usuários poderiam verificar / agir sobre isso, mesmo que eu não conheça nenhum deles.
Harry

Respostas:

26

Por razões históricas. O bit pegajoso foi originalmente usado para uma finalidade completamente diferente: se fosse definido em um arquivo executável, ele informava ao sistema operacional para manter o segmento de texto em troca. Assim, o nome "Sticky Bit".

Johan Myréen
fonte
Obrigado, mas isso os impede de continuar "um pouco" internamente? Ou uma economia de um bit não é significativa o suficiente no nível por arquivo?
Harry
6
Um arquivo executável pode ter todas as quatro combinações de suid e sticky.
Johan Myréen
Sim, daí a pergunta original. Talvez seja melhor redigido, por que o nome (ou uso anterior) do bit pegajoso tem alguma coisa a ver com combiná-lo com o bit suid hoje? As funções de ambos os bits não poderiam ser combinadas em um bit "pegajoso / suid", que funciona como suid quando definido nos arquivos, mas pegajoso quando definido nos diretórios?
Harry
17
Você quebraria a compatibilidade com versões anteriores se trocasse os bits. chmod 4755 filedefine o bit suid e chmod 1755 dirdefine o bit adesivo. Não queremos quebrar scripts antigos apenas para salvar um único bit por arquivo, não é? Obviamente, internamente, um sistema de arquivos é livre para implementar sua otimização, desde que a interface externa permaneça a mesma.
Johan Myréen
6
@ John Myréen: E é claro que você não salvaria esse pedaço, ele se tornaria apenas um pedaço não utilizado no campo de permissão de bytes / palavras.
Jamesqf