Jeśli bit suid nie ma wpływu na katalogi, a bit lepki nie ma wpływu na pliki, dlaczego nie są one łączone w jeden bit?

18

Czy zaoszczędziłoby to jeden bit na plik, czy też konieczne jest wypełnienie, którego i tak należy użyć? A nawet jeśli jest padding, dlaczego nie połączyć ich i wykorzystać dodatkowy bit do nowej funkcji?

Złupić
źródło
3
Lepki bit działa na zwykłych plikach. Zobacz en.wikipedia.org/wiki/Sticky_bit, aby dowiedzieć się, ile sposobów jest on używany.
Joshua
@Joshua To ciekawe i dobrze, że w przypadku nie-Linuksa * zachowanie jest różne. Ale miałem na myśli Linuksa na to pytanie. Zastanawiam się jednak, czy ktoś na jądrze Linuksa z BSD amd i ls może nadal polegać na lepkim bicie pliku? I wydaje mi się, że różne programy użytkowe mogłyby sprawdzić / zareagować, nawet jeśli nie znam żadnych popularnych programów, które by to zrobiły.
Harry

Odpowiedzi:

26

Z przyczyn historycznych. Bit lepki był pierwotnie używany w zupełnie innym celu: jeśli został ustawiony w pliku wykonywalnym, powiedział systemowi operacyjnemu, aby zachował segment tekstowy podczas wymiany. Stąd nazwa „Sticky Bit”.

Johan Myréen
źródło
Dziękuję, ale czy to wyklucza, że ​​nadal są wewnętrznie „odrobinę”? A może jednobitowe oszczędności po prostu nie są wystarczające na poziomie pliku?
Harry
6
Plik wykonywalny może mieć wszystkie cztery kombinacje suid i lepki.
Johan Myréen
Tak, stąd pierwotne pytanie. Być może lepiej sformułowane, dlaczego nazwa (lub wcześniejsze użycie) lepkiego bitu ma coś wspólnego z połączeniem go dzisiaj z bitem suid? Czy funkcje obu bitów nie mogą zostać połączone w jeden bit „lepki / suid”, który działa jako suid, gdy jest ustawiony na plikach, ale jest lepki, gdy jest ustawiony na katalogach?
Harry,
17
Zerwalibyśmy kompatybilność wsteczną, jeśli przesunęliśmy bity. chmod 4755 fileustawia bit suid i chmod 1755 dirustawia bit lepki. Nie chcemy łamać starych skryptów, aby zaoszczędzić jeden bit na plik, prawda? Oczywiście wewnętrznie system plików może wdrożyć optymalizację, o ile interfejs zewnętrzny pozostaje taki sam.
Johan Myréen
6
@Johan Myréen: I oczywiście nie zapisałbyś tego bitu, stałby się on po prostu nieużywanym bitem w polu zezwolenia na bajty / słowa.
jamesqf