Saat masuk, saya dapat melakukan hal berikut:
mkdir foo
touch foo/bar
chmod 400 foo/bar
chmod 500 foo
Kemudian saya dapat membuka vim (bukan sebagai root), mengedit bar, memaksa menulis w!, dan file tersebut dimodifikasi.
Bagaimana saya bisa membuat sistem operasi melarang modifikasi file?
UPDATE 02 Mar 2017
chmod 500 fooadalah herring merah: izin menulis pada direktori tidak ada hubungannya dengan kemampuan untuk mengubah konten file - hanya kemampuan untuk membuat dan menghapus file.chmod 400 foo/barsebenarnya mencegah isi file dari diubah. Tapi , itu tidak mencegah perizinan file dari berubah - pemilik file selalu dapat mengubah izin file-nya (dengan asumsi mereka dapat mengakses file yaitu mengeksekusi izin pada semua direktori leluhur). Faktanya, strace (1) mengungkapkan bahwa inilah yang sedang dilakukan vim (7.4.576 Debian Jessie) - vim memanggil chmod (2) untuk sementara menambahkan izin menulis untuk pemilik file, memodifikasi file, dan kemudian memanggil chmod ( 2) lagi untuk menghapus izin menulis. Itulah sebabnya menggunakanchattr +ikarya - hanya root yang bisa memanggilchattr -i. Secara teoritis, vim (atau program apa pun) dapat melakukan hal yang sama dengan chattr seperti halnya dengan chmod pada file yang tidak dapat diubah jika dijalankan sebagai root.
root?
vimsebenarnya mengubah izin dan kemudian mengembalikannya.