Mengapa menggunakan bit yang lengket?

18

"Bit sticky hanya berlaku untuk direktori, dan biasanya digunakan pada direktori yang dapat ditulis untuk umum. Di dalam direktori di mana bit sticky diterapkan, pengguna dicegah menghapus atau mengganti nama file apa pun yang tidak mereka miliki secara pribadi."

Apakah ini berarti jika saya menjalankan yang berikut ini:

// only allow other users to read files in /directory
sudo chmod o-w -R /directory
sudo chmod o-x -R /directory
sudo chmod o+r -R /directory

pengguna masih dapat menghapus atau mengganti nama file yang bukan milik mereka?

JohnMerlino
sumber

Jawaban:

22

Bit sticky berguna pada direktori yang dapat ditulis oleh dunia, seperti /tmp. Dalam direktori ini, siapa pun dapat membuat file, sehingga direktori harus dapat ditulis oleh dunia. Tapi itu berarti siapa pun dapat menghapus file juga, bahkan jika itu bukan milik mereka, karena menghapus file dikendalikan oleh izin tulis pada direktori. Ketika sebuah direktori memiliki bit yang lengket, hanya pemilik file yang memiliki izin untuk menghapusnya.

Dalam direktori dengan izin rwx------atau rwxr-xr-x, hanya pemilik direktori yang dapat membuat atau menghapus file. Jika ada file yang milik pengguna lain (dipindahkan ke sana oleh root, atau dibuat ketika direktori memiliki lebih banyak izin terbuka), itu masih pemilik direktori yang memiliki izin untuk menghapusnya, bukan pemilik file.

Dalam direktori dengan izin rwxrwx---, semua anggota grup dapat membuat dan menghapus file. Anggota grup mana pun dapat menghapus file apa pun meskipun itu milik pengguna lain. Jika izinnya rwxrwx--Tbukan (modal Tseperti t, tetapi tberarti xbit ditetapkan dan Tberarti xbit jelas), maka setiap anggota grup dapat membuat file, dan anggota grup dapat menghapus file tetapi hanya file mereka sendiri .

Anda dapat menggunakan perintah berikut untuk melihat direktori mana yang memiliki bit lengket pada sistem Anda:

find / /run /run/lock /run/shm -xdev -path /usr -prune -o -perm -o+t -ls 2>/dev/null

Anda akan menemukan beberapa direktori seperti /tmpyang terbuka untuk semua orang, dan beberapa direktori seperti /var/spool/cron/crontabsyang disediakan untuk program sistem yang berjalan sebagai grup sendiri ( setgid ), di mana bit sticky memastikan bahwa program hanya dapat menghapus file atas nama pengguna yang memiliki mereka (yang memastikan bahwa program hanya dapat membuat file atas nama pengguna yang memiliki mereka adalah bahwa program berjalan sebagai pengguna itu, bukan sebagai root, jadi tidak dapat membuat file milik pengguna lain).

Gilles 'SANGAT berhenti menjadi jahat'
sumber