GNU/Linux >> Belajar Linux >  >> Linux

Mengapa saya tidak bisa menghapus file ini sebagai root?

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.


Linux
  1. Cara Menghapus File Root Mail (Kotak Surat) di Linux

  2. Mengapa Tidak 'menemukan' Tampilkan File Ini??

  3. Tidak Dapat Menghapus File, Bahkan Saat Menjalankan Sebagai Root?

  1. Bagaimana saya bisa menghapus baris baru jika itu adalah karakter terakhir dalam file?

  2. Mengapa file tidak dapat dimanipulasi oleh inode?

  3. Di mana file header <conio.h> di Linux? Mengapa saya tidak dapat menemukan <conio.h>?

  1. Bagaimana cara menghapus file dengan nama ini di linux:-]???????q

  2. Mengapa saya tidak bisa membuat file lebih besar dari 2 GB di Linux?

  3. Mengapa direktori root dilambangkan dengan tanda /?