Apa huruf "t" di output dari "ls -ld / tmp"?

94

Saat menjalankan perintah  ls -ld /tmp, outputnya adalah:

drwxrwxrwt 30 root root 20480 Mar 11 14:17 /tmp

Jadi saya punya dua pertanyaan utama:

  • Apa surat tsetelah izin?
  • Sejauh yang saya tahu /tmpdigunakan untuk membuat file sementara yang terkait dengan pengguna yang berbeda dalam sistem, jadi bagaimana bisa memiliki izin rwxrwxrwx(777)?

Ini sepertinya salah bagi saya. Tolong saya butuh bantuan Anda untuk memahami apa yang sedang terjadi di sini.

Komunitas
sumber
8
Baca artikel Wikipedia , ini lebih baik daripada jawaban di sini.
Gilles
1
Lihat juga: unix.stackexchange.com/q/79395/4784
Martin Thoma
OK Mengapa, ketika saya menginstal Pembaruan atau Paket rpm baru dari / tmp, apakah bit lengket dihapus?

Jawaban:

112

Jadi apa yang lengket?

Bit sticky adalah bit izin yang ditetapkan pada direktori yang memungkinkan hanya pemilik file di dalam direktori itu, pemilik direktori atau pengguna root untuk menghapus atau mengganti nama file. Tidak ada pengguna lain yang memiliki hak yang diperlukan untuk menghapus file yang dibuat oleh beberapa pengguna lain.

Ini adalah langkah keamanan untuk menghindari penghapusan folder penting dan kontennya (sub-direktori dan file), meskipun pengguna lain memiliki izin penuh.

Mengapa /tmpmemiliki tsedikit lengket?

The /tmpdirektori dapat digunakan oleh pengguna Linux yang berbeda untuk membuat file-file sementara. Sekarang, bagaimana jika pengguna menghapus / mengganti nama file yang dibuat oleh pengguna lain dalam direktori ini?

Nah, untuk menghindari masalah seperti ini, konsep bit sticky digunakan. Jadi untuk itu 777diberikan tetapi mempertahankan sedikit lengket bukanlah ide yang buruk.

Bagaimana saya bisa mengatur bit sticky untuk direktori?

Saya akan mengatur sedikit lengket pada direktori yang disebut testdi Desktop saya.

Cara simbolis ( tmewakili bit yang lengket):

chmod o+t ~/Desktop/test

atau

chmod +t ~/Desktop/test

Cara numerik / oktal (1, bit lengket sebagai nilai 1 di posisi pertama)

chmod 1757 ~/Desktop/test

Sekarang mari kita menguji hasilnya:

ls -li ~/Desktop/test

1551793 drwxrwxrwt 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Untuk menghapus / menghapus sedikit lengket

chmod o-t ~/Desktop/test

Sekarang mari kita menguji hasilnya:

ls -li ~/Desktop/test

1551793 drwxrwxrwx 45 hadi hadi 20485 Mar 11 14:35 ~/Desktop/test

Sumber: "Apa itu Bit yang lengket dan bagaimana cara mengaturnya di Linux?" Di The Linux Juggernaut

Maythux
sumber
13
Penggunaan bit sticky ini hanya berlaku untuk direktori, bukan file. Di masa lalu, maknanya pada file yang dapat dieksekusi adalah untuk menyimpan segmen teks program untuk bertukar daripada membuangnya sehingga menjalankannya lagi akan lebih cepat, tetapi hari ini tidak memiliki arti pada file biasa.
psusi
apa segmen teks suatu program dan bagaimana menjaganya agar lebih cepat?
BluePython
@ BluePython Segmen 'teks' dari file yang dapat dieksekusi adalah bagian yang mencakup semua kode mesin: bit aktual yang dapat dieksekusi. Segmen lain yang umum adalah 'data' untuk data statis dan 'bss' untuk data yang semuanya nol (dan dengan demikian tidak perlu disimpan dalam executable).
Miles Rout
1
apakah ada perbedaan antara 't' dan 'T' untuk izin direktori ?? @ psusi
Afshin
1
@Afshin: Karena tmenyembunyikan yang xmenunjukkan apakah semua pengguna dapat menjalankan file / direktori, kita perlu cara lain untuk menunjukkan ini. Hal yang biasa adalah bahwa semua orang dapat menjalankannya, dalam hal ini Anda mendapatkan yang normal t(bukan sebuah x). Tetapi jika tidak, maka Anda mendapatkan huruf besar T(bukan a -). Sumber: Wikipedia.
Toby Bartels
25

Bit Sticky adalah bit izin yang ditetapkan pada file atau direktori yang memungkinkan hanya pemilik file / direktori atau pengguna root untuk menghapus atau mengganti nama file. Tidak ada pengguna lain yang diberikan hak untuk menghapus file yang dibuat oleh beberapa pengguna lain.

Kadang-kadang terjadi bahwa Anda memerlukan direktori Linux yang dapat digunakan oleh semua pengguna sistem Linux untuk membuat file. Pengguna dapat membuat, menghapus, atau mengganti nama file sesuai dengan kenyamanan mereka dalam direktori ini.

Sekarang, bagaimana jika pengguna secara tidak sengaja atau sengaja menghapus (atau mengganti nama) file yang dibuat oleh pengguna lain dalam direktori ini?

Nah, untuk menghindari masalah seperti ini, konsep bit sticky digunakan. Karena / tmp digunakan untuk tujuan ini. Jadi untuk menghindari skenario di atas, / tmp gunakan bit sticky.

Sebagai contoh:

mkdir demo
chmod 777 demo

Saya juga membuat dua file dengan pengguna berbeda di folder ini yang memiliki izin 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

Sekarang nyalakan sedikit masalah ini

 chmod +t demo/
 ls -ld demo
 drwxrwxrwt 2 guru guru 4096 Mar 11 18:17 demo

Sekarang apa yang terjadi jika satu pengguna (abhi) ingin mengganti nama pengguna ke-2 (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  

Asal usul bit yang lengket

Di Linux, bit sticky hanya memiliki penggunaan yang dijelaskan di atas, pada direktori. Secara historis, ini digunakan untuk sesuatu yang sama sekali berbeda pada file biasa, dan dari sinilah namanya berasal.

Ketika suatu program dieksekusi, perlu waktu untuk memuat program ke dalam memori sebelum pengguna dapat benar-benar mulai menggunakannya. Jika suatu program, misalnya editor sering digunakan oleh pengguna, penundaan waktu mulai adalah overhead saat itu.

Untuk meningkatkan waktu tunda ini, bit lengket diperkenalkan. OS memeriksa bahwa jika bit sticky pada executable adalah ON, maka segmen teks dari executable disimpan dalam ruang swap. Ini membuatnya mudah untuk memuat kembali executable ke dalam RAM ketika program dijalankan kembali sehingga meminimalkan waktu tunda.

Sistem modern seperti Linux mengelola cache dari file executable dan file lainnya secara otomatis dan tidak memerlukan sedikit pun untuk itu.

Sumber: "Konsep Linux Sticky Bit Dijelaskan dengan Contoh" di The Geek Stuff

g_p
sumber
2

Stickybit adalah metode penyelesaian masalah untuk direktori bersama agar tidak dihapus secara tidak sengaja. Ketika sebuah direktori memiliki stickybit maka hanya pemilik atau root yang dapat menghapusnya bahkan setiap pengguna dapat mengambil izin penuh lainnya.

/tmpadalah direktori yang paling banyak dibagikan antara proses dan pengguna dan untuk itu berisi stickybit untuk memastikan bahwa tidak ada pengguna yang dapat menghapus direktori, bahkan seizinnya 777, dan harus demikian untuk memberikan kemampuan kepada pengguna dan proses untuk menggunakan direktori tanpa konflik dalam izin.


sumber