Saya punya 4 file spesifik yang sepertinya terus menghilang dari direktori home pengguna. Sejauh yang kami tahu, tidak ada cronjobs atau tugas otomatis lainnya yang akan menghapusnya. Saya sudah menyiapkan auditd pada mereka tetapi log tidak benar-benar menunjukkan sesuatu yang menarik. Saya dapat melihat utilitas cadangan kami mengaksesnya setiap malam sampai titik mereka tidak ada lagi, tetapi tidak ada yang lain. Apakah ada sesuatu yang akan menyebabkan file-file itu dihapus yang dapat di audit?
File yang dimaksud adalah:
/home/username/.bashrc
/home/username/.bash_profile
serta beberapa file dalam direktori .ssh pengguna itu. Salinan file-file ini ditempatkan ke dalam subfolder yang disebut "penjaga" juga dihapus pada saat yang sama. Mengubah izin menjadi 000 dan memilikinya dimiliki oleh root tidak membantu.
Saat ini saya tidak punya pengaturan menunggu untuk membuat log, menghapus, memindahkan subfolder itu, jadi mudah-mudahan itu akan muncul sesuatu, meskipun itu tidak mencatat banyak selain dari saat itu terjadi, bukan apa yang menyebabkannya.
Jawaban:
Solusi 1 : systemtap
Anda dapat menggunakan systemtap untuk menampilkan semua PID yang mencoba menggunakan tautan () pada inode
.bashrc
dan.bash_profile
file.Instal systemtap dan simbol debug untuk kernel Anda.
Buat file dengan nama
unlink.stap
dengan konten berikut:Kemudian jalankan dengan
sudo stap unlink.stap
Solusi 2 : inotify
Anda juga dapat menggunakan inotify untuk melihat kapan file dihapus.
Solusi 3 : ftrace
Solusi lain adalah menggunakan ftrace :
Tunggu file dihapus, tekan CTRL + C untuk berhenti
trace-cmd record ...
, lalu jalankan:Solusi 4 :
Instal bpftrace
bpftrace
, lalu jalankan:sumber
selain jawaban micea, Anda dapat chattr + i file sebagai root dan melihat apakah ada yang mencatat kesalahan ketika mencoba untuk menghapusnya.
sumber
Apakah Anda benar-benar yakin pengguna itu sendiri tidak (tidak sengaja) menghapusnya?
Saya memiliki beberapa pengguna yang tidak mengerti (Windows) dengan masalah yang sama. Ternyata mereka menghapus file-file itu sendiri setiap kali mereka mengunjungi dir-home mereka dengan klien ftp. Mereka memperhatikan file .xxxx (klien ftp tidak menyembunyikannya) dan menghapus "kekacauan".
Tidak pernah terpikir oleh saya bahwa mereka melakukannya sendiri sampai salah satu dari mereka mengeluh tentang file yang muncul kembali secara spontan yang telah dia hapus beberapa hari sebelumnya.
sumber
Kami menggunakan skrip logout bash (~ / .bash_logout) untuk membersihkan file-file tertentu saat logout - Anda mungkin memeriksa untuk melihat apakah Anda memiliki setup itu, mungkin dengan gumpalan yang memiliki jari yang gemuk.
sumber
Lebih mirip pengganggu, yang sedang melakukan find / home / user -name nama file -exec rm -f {} \; setelah semua nya menyelinap :). Hanya menebak, karena Anda menyebutkan bahwa file cadangan juga semakin dihapus.
sumber
Untuk mencegah kehilangan file dan kontennya, Anda dapat mengatur libtrash melalui LD_PRELOAD. Menggunakan libtrash Anda dapat melakukan beberapa hal tetapi hal-hal yang mungkin menarik bagi Anda
Artikel bagus tentang libtrash dapat ditemukan di sini
Hal lain yang Anda sebutkan, bahwa Anda mencopot file yang akan di-rooting dan mereka masih bisa dihapus. Itu karena / home / nama pengguna dimiliki oleh nama pengguna; dan jika dir mengatakan mod 755; lalu setiap file atau dir di dir itu dimiliki oleh siapa pun yang dapat dihapus oleh pengguna; bahkan jika itu adalah file root atau dir. Itu pada dasarnya karena menghapus file dir berarti mengubah isi dir dan pengguna memiliki 7 (dalam 755) dir itu sehingga dia dapat melakukan apa pun yang dia inginkan.
Ada cara untuk memblokir ini karena orang lain telah menyarankan melalui chattr pada sistem file ext untuk mengatur file sebagai tidak dapat diubah (+ i). Maka seseorang harus meng-unset flag yang tidak dapat diubah sebelum membuat perubahan pada file / dir yang memiliki flag + i. Bendera / obrolan yang tidak dapat diubah hanya dapat digunakan oleh root.
sumber