Si el bit suid no tiene efecto en los directorios y el bit adhesivo no tiene efecto en los archivos, ¿por qué no se combinan en un bit?

18

¿Esto ahorraría un bit por archivo, o hay algún relleno necesario que deba usarse de todos modos? E incluso si hay relleno, ¿por qué no combinarlos y utilizar el bit extra para una nueva función?

Harry
fuente
3
La parte adhesiva hace algo en los archivos ordinarios. Consulte en.wikipedia.org/wiki/Sticky_bit para conocer la cantidad de formas en que se usa.
Joshua
@Joshua Eso es interesante, y es un buen punto que en no-Linux * nixes el comportamiento varía. Pero tenía Linux en mente para esta pregunta. Sin embargo, me pregunto si alguien en un kernel de Linux con BSD amd y ls aún podría depender del bit de archivo fijo. Y supongo que varios programas de tierras de usuarios podrían verificarlo / actuar sobre él, aunque no conozco ninguno que lo haga.
Harry

Respuestas:

26

Por razones históricas. El bit adhesivo se usó originalmente para un propósito completamente diferente: si se configuró en un archivo ejecutable, le dijo al sistema operativo que retenga el segmento de texto en el intercambio. De ahí el nombre "Sticky Bit".

Johan Myréen
fuente
Gracias, pero ¿eso les impide seguir siendo "un poco" internamente? ¿O un ahorro de un bit no es lo suficientemente significativo en el nivel por archivo?
Harry
66
Un archivo ejecutable podría tener las cuatro combinaciones de suid y sticky.
Johan Myréen
Sí, de ahí la pregunta original. Tal vez mejor redactado, ¿por qué el nombre (o el uso anterior) del bit pegajoso tiene algo que ver con combinarlo con el bit suid hoy? ¿No podrían combinarse las funciones de ambos bits en un bit "adhesivo / suid", que funciona como suid cuando se configura en archivos pero es permanente cuando se configura en directorios?
Harry
17
Romperías la compatibilidad con versiones anteriores si cambias los bits. chmod 4755 fileestablece el bit suid y chmod 1755 direstablece el bit adhesivo. No queremos romper scripts antiguos solo por guardar un solo bit por archivo, ¿verdad? Por supuesto, internamente un sistema de archivos es libre de implementar su optimización, siempre que la interfaz externa permanezca igual.
Johan Myréen
66
@Johan Myréen: Y, por supuesto, en realidad no guardarías esa parte, se convertiría en una parte no utilizada en el campo de permiso byte / palabra.
jamesqf