Dari pengguna root, periksa atribut file
# lsattr
jika Anda melihat i
(tidak dapat diubah) atau a
(tambahkan saja), hapus atribut tersebut:
# man chattr
# chattr -i [filename]
# chattr -a [filename]
Alasan paling umum untuk rm
mengeluh bahwa Anda tidak memiliki izin untuk menghapus file, apakah izin pada direktori melarang Anda menghapus file. Untuk menghapus file, Anda memerlukan izin menulis di direktori. Izin pada file tidak relevan (rm
tanpa -f
meminta konfirmasi sebelum menghapus file read-only, tapi itu hanya konfirmasi, bukan batasan). Pada beberapa varian Unix seperti OSX (tetapi bukan Linux), ACL pada file dapat mencegah penghapusannya; ls -l
akan menampilkan @
di akhir kolom izin jika ada entri ACL pada file.
Akses sebagai root melewati izin, sehingga root dapat menghapus file bahkan dalam direktori hanya-baca.
Keluaran dari ls -l
menampilkan .
di akhir kolom izin. Ini menunjukkan bahwa file tersebut memiliki konteks keamanan SELinux. Tidak seperti izin dasar dan ACL, konteks keamanan SELinux pada file dapat mengontrol siapa yang diizinkan untuk menghapusnya. Selain itu, SELinux tidak selalu dapat dilewati oleh root (dimungkinkan untuk menjalankan proses sebagai ID pengguna 0 tetapi dengan hak sesedikit yang dipilih oleh perancang kebijakan SELinux). Untuk melihat apa yang dapat dilakukan oleh konteks SELinux, jalankan ls -lZ . exam_a
.
Hal lain yang dapat mencegah file dihapus adalah jika file atau direktori yang memuatnya memiliki atribut Linux append-only atau tidak dapat diubah. Jalankan lsattr -d . exam_a
untuk melihat atribut Linux. Jika a
atau i
aktif, Anda harus menghapusnya (chattr -a -i . exam_a
) untuk menghapus file; hanya root yang bisa melakukan itu. Root tidak dapat melewati atribut ini untuk menghapus file, atribut harus dimatikan terlebih dahulu.
Namun hal lain yang mencegah file dihapus adalah jika sistem file dipasang hanya-baca, tetapi Anda akan mendapatkan pesan kesalahan yang berbeda dalam kasus itu.