Cara Menggunakan Perintah chattr di Linux

Selain izin membaca, menulis, dan mengeksekusi file yang biasa, file Linux memiliki kumpulan atribut lain yang mengontrol karakteristik file lainnya. Berikut cara melihat dan mengubahnya.

Permissions and Attributes

Di Linux, siapa yang dapat mengakses file dan apa yang dapat mereka lakukan dengannya dikendalikan oleh serangkaian izin yang berpusat pada pengguna. Apakah Anda dapat membaca konten file, menulis data baru ke dalam file, atau menjalankan file jika itu adalah skrip atau program, semuanya diatur oleh kumpulan izin tersebut. Izin diterapkan ke file, tetapi menentukan batasan dan kemampuan untuk berbagai kategori pengguna.

Ada izin untuk pemilik file, untuk grup file, dan untuk orang lain—yaitu, pengguna yang tidak berada di dua kategori pertama. Anda dapat menggunakan perintah ls dengan opsi -l (daftar panjang) untuk melihat izin pada file atau direktori.

Untuk mengubah izin, Anda menggunakan perintah chmod. Setidaknya, Anda dapat melakukannya jika Anda memiliki izin menulis untuk file tersebut, atau jika Anda adalah pengguna root.

Kita dapat melihat bahwa izin file berpusat pada pengguna karena mereka memberikan atau menghapus izin di tingkat pengguna. Sebaliknya, atribut file adalah file system-centric. Seperti izin, mereka disetel pada file atau direktori. Namun setelah disetel, setelan tersebut sama untuk semua pengguna.

Attributes adalah kumpulan setelan yang terpisah dari izin. Atribut karakteristik kontrol seperti kekekalan dan perilaku tingkat sistem file lainnya. Untuk melihat atribut suatu file atau direktori kita menggunakan perintah lsattr. Untuk menyetel atribut, kami menggunakan perintah chattr.

Izin dan atribut disimpan di dalam inode. Inode adalah struktur sistem file yang menyimpan informasi tentang objek sistem file seperti file dan direktori. Lokasi file di hard drive, tanggal pembuatannya, izinnya, dan atributnya semuanya disimpan di dalam inode.

Karena sistem file yang berbeda memiliki struktur dan kemampuan dasar yang berbeda, atribut dapat berperilaku berbeda—atau diabaikan sama sekali—oleh beberapa sistem file . Dalam artikel ini, kami menggunakan ext4 yang merupakan sistem file default untuk banyak distribusi Linux.

Melihat Atribut File

Perintah chattr dan lsattr sudah ada di komputer Anda sehingga tidak perlu menginstal apa pun.

Untuk memeriksa atribut pada file di direktori saat ini, gunakan lsattr:

lsattr

Garis putus-putus adalah pengganti untuk atribut yang tidak disetel. Satu-satunya atribut yang disetel adalah atribut e (ekstensi). Ini menunjukkan bahwa inode sistem file sedang menggunakan—atau akan menggunakan jika diperlukan—untuk menunjuk ke semua bagian file pada hard drive.

Jika file disimpan dalam satu urutan blok hard drive yang berdekatan, inodenya hanya perlu merekam blok pertama dan terakhir yang digunakan untuk menyimpan file. Jika file terfragmentasi, inode harus mencatat nomor blok pertama dan terakhir dari setiap bagian file. Pasangan nomor blok hard drive ini disebut extents.

Ini adalah daftar atribut yang paling umum digunakan.

  • a: Tambahkan saja. File dengan atribut ini hanya dapat ditambahkan. Itu masih bisa ditulis, tetapi hanya di akhir file. Tidak mungkin menimpa data yang ada di dalam file.
  • c: Compressed. File secara otomatis dikompresi pada hard drive dan tidak terkompresi saat dibaca. Data yang ditulis ke file dikompresi sebelum ditulis ke hard drive.
  • J: Tidak ada pembaruan waktu. Atime adalah nilai dalam inode yang mencatat terakhir kali file diakses.
  • C: No copy-on-write. Jika dua proses meminta akses ke file, mereka dapat diberikan pointer ke file yang sama. Mereka hanya diberikan salinan unik file mereka sendiri jika mereka mencoba menulis ke file, membuatnya unik untuk proses itu.
  • d: No dump. Perintah dump Linux digunakan untuk menulis salinan seluruh sistem file ke media cadangan. Atribut ini membuat dump mengabaikan file. Itu dikecualikan dari backup.
  • D: Pembaruan direktori sinkron. Saat atribut ini diaktifkan untuk sebuah direktori, semua perubahan pada direktori tersebut akan ditulis secara sinkron—yaitu, segera—di hard drive. Operasi data dapat di-buffer.
  • e: Format ekstensi. Atribut e menunjukkan bahwa sistem file menggunakan ekstensi untuk memetakan lokasi file pada hard drive. Anda tidak dapat mengubah ini dengan chattr. Ini adalah fungsi dari operasi sistem file.
  • i: Tidak dapat diubah. File yang tidak dapat diubah tidak dapat dimodifikasi, termasuk mengganti nama dan menghapus. Pengguna root adalah satu-satunya orang yang dapat mengatur atau menghapus atribut ini: Penghapusan aman. Ketika file dengan kumpulan atribut ini dihapus, blok hard drive yang menyimpan data file akan ditimpa dengan byte yang berisi nol. Perhatikan bahwa ini tidak dihormati oleh sistem file ext4.
  • S: Pembaruan sinkron. Perubahan pada file dengan set atribut S-nya ditulis ke file secara sinkron.u: Menghapus file yang memiliki set atribut u menyebabkan salinan file dibuat. Ini dapat bermanfaat untuk pemulihan file jika file dihapus karena kesalahan.

Mengubah Atribut File

Perintah chattr memungkinkan kita mengubah atribut file atau direktori. Kita dapat menggunakan operator + (set) dan – (unset) untuk menerapkan atau menghapus atribut, mirip dengan perintah chmod dan permissions.

Perintah chattr juga memiliki operator = (set only). Ini menetapkan atribut file atau direktori hanya atribut yang ditentukan dalam perintah. Artinya, semua atribut yang tidak tercantum di baris perintah adalah tidak disetel.

Menyetel Atribut Hanya Tambahkan

Mari kita setel atribut tambahan saja pada file teks dan lihat bagaimana pengaruhnya terhadap apa yang dapat kita lakukan dengan file.

sudo chattr +file teks. txt

Kita dapat memeriksa untuk melihat bahwa bit append-only telah disetel dengan menggunakan lsattr :

lsattr text-file.txt

Huruf “a” menunjukkan atribut telah disetel. Mari kita coba untuk menimpa file tersebut. Mengarahkan output ke file dengan tanda kurung sudut tunggal  “>” menggantikan semua konten dalam file dengan output yang dialihkan.

Kami telah memuat file teks sebelumnya dengan beberapa lorem ipsum placeholder text.

cat text-file.txt

Kami akan mengalihkan output dari ls ke dalam file:

ls -l > text-file.txtsudo ls -l > text-file.txt

Operasi tidak diizinkan, bahkan jika kita menggunakan perintah sudo.

Jika kita menggunakan dua tanda kurung siku “>>” untuk mengarahkan outputnya ditambahkan ke data yang ada dalam file. Itu harus dapat diterima oleh file teks tambahan saja.

sudo ls -l >> file teks.txt

Kami kembali ke prompt perintah tanpa pesan kesalahan. Mari kita mengintip ke dalam file untuk melihat apa yang telah terjadi.

cat text-file.txt

Output yang dialihkan dari ls telah ditambahkan ke akhir file.

Meskipun kita dapat menambahkan data ke file, itulah satu-satunya perubahan yang dapat kita lakukan untuk itu . Kami tidak dapat menghapusnya dan juga root.

rm text-file.txtsudo rm text-file.txt

Menyetel Atribut yang Tidak Dapat Diubah

Jika Anda ingin melindungi file yang tidak akan pernah memiliki data baru yang ditambahkan ke dalamnya, Anda dapat menyetel atribut yang tidak dapat diubah. Ini mencegah semua perubahan pada file, termasuk menambahkan data.

sudo chattr +i file kedua.txtlsattr file kedua.txt

Kita dapat melihat “i” yang menunjukkan atribut yang tidak dapat diubah telah disetel. Setelah membuat file kami tidak dapat diubah, bahkan pengguna root tidak dapat mengganti namanya (mv), menghapusnya (rm), atau menambahkan data ke dalamnya.

sudo mv second-file.txt new-name.txtsudo rm second-file.txtsudo ls -l >> file kedua.txt

Jangan Mengandalkan Penghapusan Aman pada ext4

Seperti yang kami tunjukkan, beberapa sistem operasi tidak mendukung semua atribut. Atribut hapus aman tidak dihormati oleh keluarga sistem file ext, termasuk ext4. Jangan mengandalkan ini untuk penghapusan file yang aman.

Sangat mudah untuk melihat bahwa ini tidak berfungsi di ext4. Kita akan menyetel atribut s (penghapusan aman) pada file teks.

sudo chattr +s file ketiga.txt

Apa yang akan kita lakukan adalah mencari tahu inode yang menyimpan metadata tentang file ini. Inode memegang blok hard drive pertama yang ditempati oleh file. File berisi beberapa teks placeholder lorem ipsum.

Kami akan membaca blok itu langsung dari hard drive untuk memverifikasi bahwa kami membaca lokasi hard drive yang benar. Kami akan menghapus file dan kemudian membaca blok penyelaman keras yang sama sekali lagi. Jika atribut secure deletion dihormati, kita harus membaca zeroed bytes.

Kita dapat menemukan inode file dengan menggunakan perintah hdparm dengan opsi –fibmap (file block map).

sudo hdparm --fibmap third-file.txt

The blok hard drive pertama adalah 18100656. Kami akan menggunakan perintah dd untuk membacanya.

Pilihannya adalah:

  • if=/dev/sda: Baca dari hard drive pertama di komputer ini.
  • bs=512: Gunakan ukuran blok hard drive sebesar 512 byte.
  • skip=18100656: Lewati semua blok sebelum blok 18100656.  Dengan kata lain, mulailah membaca di blok 18100656.
  • count=1: Baca satu blok data.
sudo dd if=/dev/sda bs=512 skip=18100656 count= 1

Seperti yang diharapkan, kita melihat teks placeholder lorem ipsum. Kami membaca blok yang benar pada hard drive.

Sekarang kami akan menghapus file.

rm third-file.txt

Jika kami membaca blok hard drive yang sama, kami masih dapat melihat data.

sudo dd if=/dev/sda bs =512 skip=18100656 count=1

Sekali lagi, jangan bergantung pada ini untuk penghapusan aman di ext4. Ada metode yang lebih baik yang tersedia untuk menghapus file sehingga tidak dapat dipulihkan.

Kesimpulan

Setting, atribut file dapat membuatnya tahan terhadap bencana yang tidak disengaja. Jika Anda tidak dapat menghapus atau menimpa file, itu cukup aman.

Anda mungkin berpikir Anda ingin menerapkannya ke file sistem dan membuat instalasi Linux Anda lebih aman. Tetapi file sistem perlu diganti secara berkala saat pembaruan dikeluarkan atau pemutakhiran diterapkan. Untuk alasan itu, paling aman untuk hanya menggunakan atribut ini pada file kreasi Anda sendiri.

Itulah berita seputar Cara Menggunakan Perintah chattr di Linux, semoga bermanfaat. Disadur dari HowToGeek.com.