Jika bit suid tidak berpengaruh pada direktori dan bit lengket tidak berpengaruh pada file, mengapa mereka tidak digabungkan menjadi satu bit?

18

Apakah ini menghemat satu bit per file, atau adakah padding yang diperlukan yang harus digunakan? Dan bahkan jika ada padding, mengapa tidak menggabungkannya dan memanfaatkan bit ekstra untuk fitur baru?

Harry
sumber
3
Bit lengket melakukan sesuatu pada file biasa. Lihat en.wikipedia.org/wiki/Sticky_bit untuk mengetahui cara penggunaannya.
Yosua
@ Yosua Itu menarik, dan ini adalah poin bagus bahwa pada non-Linux * nix, perilakunya bervariasi. Tetapi saya memikirkan Linux untuk pertanyaan ini. Saya bertanya-tanya apakah seseorang pada kernel Linux dengan BSD amd dan ls masih bisa bergantung pada bit file sticky? Dan saya kira berbagai program userland dapat memeriksa / menindaklanjutinya meskipun saya tidak tahu ada yang umum yang melakukannya.
Harry

Jawaban:

26

Untuk alasan historis. Sticky bit pada awalnya digunakan untuk tujuan yang sama sekali berbeda: jika itu diatur pada file yang dapat dieksekusi, itu memberitahu sistem operasi untuk mempertahankan segmen teks dalam swap. Demikian nama "Sticky Bit".

Johan Myréen
sumber
Terima kasih, tetapi apakah itu menghalangi mereka untuk tetap "sedikit" secara internal? Atau penghematan satu bit tidak cukup signifikan pada tingkat per file?
Harry
6
File yang dapat dieksekusi dapat memiliki keempat kombinasi suid dan sticky.
Johan Myréen
Ya, maka pertanyaan aslinya. Mungkin lebih baik diungkapkan, mengapa nama (atau penggunaan sebelumnya) dari bit lengket ada hubungannya dengan menggabungkannya dengan bit suid hari ini? Tidak bisakah fungsi kedua bit tersebut digabungkan menjadi satu bit "sticky / suid", yang berfungsi sebagai suid saat di-set pada file tetapi sticky saat di-set pada direktori?
Harry
17
Anda akan merusak kompatibilitas jika Anda menggeser bit. chmod 4755 fileset bit suid, dan chmod 1755 dirset bit sticky. Kami tidak ingin memecah skrip lama hanya demi menyimpan satu bit per file, bukan? Tentu saja, secara internal sistem file bebas untuk menerapkan optimasi Anda, selama antarmuka eksternal tetap sama.
Johan Myréen
6
@Johan Myréen: Dan tentu saja Anda tidak akan benar-benar menyimpan bit itu, itu akan menjadi bit yang tidak digunakan di bidang ijin byte / kata.
jamesqf