Cara Menggunakan Perintah chattr di Linux

Diterbitkan: 2022-06-28
Terminal Linux dengan latar belakang laptop merah.
fatmawati achmad zaenuri/Shutterstock

Seiring dengan izin membaca, menulis, dan mengeksekusi file yang biasa, file Linux memiliki serangkaian atribut lain yang mengontrol karakteristik file lainnya. Berikut cara melihatnya dan mengubahnya.

Izin dan Atribut

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 itu. Izin diterapkan ke file, tetapi mereka menentukan batasan dan kemampuan untuk berbagai kategori pengguna.

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

Cara Menggunakan Perintah chmod di Linux
TERKAIT Cara Menggunakan Perintah chmod di Linux

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. Tapi begitu mereka disetel, mereka sama untuk semua pengguna.

Atribut adalah kumpulan pengaturan 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 mengatur atribut kita menggunakan perintah chattr .

Semua yang Ingin Anda Ketahui Tentang inode di Linux
TERKAIT Semua yang Ingin Anda Ketahui Tentang inode di Linux

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 inodenya.

Karena sistem file yang berbeda memiliki struktur dan kemampuan dasar yang berbeda, atribut dapat berperilaku berbeda—atau diabaikan sama sekali—oleh beberapa sistem file. Pada 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 

Daftar atribut file untuk semua file dalam direktori

Garis putus-putus adalah tempat penampung 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 ekstensi.

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 : Terkompresi. File secara otomatis dikompresi pada hard drive dan tidak terkompresi saat dibaca. Data yang ditulis ke file dikompresi sebelum ditulis ke hard drive.
  • A : Tidak atime pembaruan waktu. atime adalah nilai dalam inode yang mencatat terakhir kali file diakses.
  • C : Tidak ada copy-on-write. Jika dua proses meminta akses ke file, mereka dapat diberikan pointer ke file yang sama. Mereka hanya diberikan salinan unik mereka sendiri dari file jika mereka mencoba menulis ke file, membuatnya unik untuk proses itu.
  • d : Tidak ada tempat pembuangan. Perintah dump Linux digunakan untuk menulis salinan seluruh sistem file ke media cadangan. Atribut ini membuat dump mengabaikan file. Itu dikecualikan dari cadangan.
  • D : Pembaruan direktori sinkron. Saat atribut ini diaktifkan untuk sebuah direktori, semua perubahan pada direktori tersebut ditulis secara sinkron—yaitu, segera—di hard drive. Operasi data dapat di-buffer.
  • e : Format luas. 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.
  • saya : tidak berubah. 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.
  • s : 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 dan izin chmod .

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

Mengatur Atribut Tambahkan Saja

Mari kita atur atribut append-only pada file teks dan lihat bagaimana pengaruhnya terhadap apa yang dapat kita lakukan dengan file tersebut.

 sudo chattr + file teks.txt 

Mengatur atribut append only pada file teks

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

 file teks lsattr.txt 

Mencantumkan atribut untuk file teks

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 dengan beberapa teks placeholder lorem ipsum .

 file teks kucing.txt 

Teks placeholder dalam file teks

Kami akan mengarahkan output dari ls ke file:

 ls -l > file teks.txt
 sudo ls -l > file teks.txt 

Mencoba menimpa file teks khusus tambahan

Operasi tidak diizinkan, bahkan jika kita menggunakan perintah sudo .

Jika kita menggunakan dua kurung sudut “ >> ” untuk mengarahkan output, itu ditambahkan ke data yang ada di file. Itu harus dapat diterima oleh file teks append-only kami.

 sudo ls -l >> file teks.txt 

Mengarahkan output ke akhir file teks

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

 file teks kucing.txt 

Memeriksa isi file teks

Output yang dialihkan dari ls telah ditambahkan ke akhir file.

Data baru ditambahkan ke file teks tambahan saja

Meskipun kami dapat menambahkan data ke file, itu adalah satu-satunya perubahan yang dapat kami lakukan. Kami tidak dapat menghapusnya dan juga tidak dapat melakukan root.

 rm file teks.txt
 sudo rm file teks.txt 

Gagal menghapus file teks tambahan saja

Mengatur Atribut Abadi

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

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

Menyetel atribut yang tidak dapat diubah pada file teks

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

 sudo mv file kedua.txt nama baru.txt
 sudo rm file kedua.txt
 sudo ls -l >> file kedua.txt 

File yang tidak dapat diubah yang menolak perubahan

Jangan Mengandalkan Penghapusan Aman di 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 . Kami akan mengatur atribut s (penghapusan aman) pada file teks.

 sudo chattr +s third-file.txt 

Mengatur atribut penghapusan aman pada file teks

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 tersebut 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 penghapusan aman dihormati, kita harus membaca byte nol.

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

 sudo hdparm --fibmap third-file.txt 

Menemukan inode file

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 512 byte.
  • skip=18100656 : Lewati semua blok sebelum blok 18100656. Dengan kata lain, mulailah membaca pada blok 18100656.
  • count=1 : Membaca satu blok data.
 sudo dd if=/dev/sda bs=512 lewati=18100656 hitung=1 

Membaca blok hard drive pertama dari sebuah file

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

Sekarang kita akan menghapus file.

 rm file ketiga.txt 

Jika kita membaca blok hard drive yang sama, kita masih bisa melihat datanya.

 sudo dd if=/dev/sda bs=512 lewati=18100656 hitung=1 

Membaca data dari blok hard drive yang digunakan oleh file yang dihapus

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

TERKAIT: Cara Aman Menghapus File di Linux

Berguna, Tapi Gunakan Dengan Hati-hati

Menyetel 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. Oleh karena itu, paling aman hanya menggunakan atribut ini pada file kreasi Anda sendiri.

TERKAIT: Cara Mengamankan Server Linux Anda dengan fail2ban