Apakah ada cara di unix untuk mengetahui siapa yang mengakses file tertentu dalam 1 minggu terakhir? Mungkin pengguna atau skrip ftp ke tempat lain. Bisakah saya mendapatkan daftar nama pengguna yang mengakses file tertentu? Bagaimana saya bisa mengetahui siapa yang mengakses file tertentu ??
Kecuali Anda memiliki kebijakan pencatatan yang sangat tidak biasa, yang mengakses file apa yang tidak dicatat (itu akan menjadi informasi yang sangat banyak). Anda dapat mengetahui siapa yang masuk pada jam berapa di log sistem; yang lastperintah memberi Anda login sejarah, dan log lain seperti /var/log/auth.logakan memberitahu Anda bagaimana pengguna otentik dan dari mana mereka login (yang terminal, atau yang tuan rumah jika jarak jauh).
Tanggal di mana file terakhir dibaca disebut waktu aksesnya, atau atime singkatnya . Semua sistem file unix dapat menyimpannya, tetapi banyak sistem tidak merekamnya, karena memiliki penalti kinerja (biasanya kecil). ls -ltu /path/to/fileatau stat /path/to/filemenunjukkan waktu akses file.
Jika pengguna mengakses file dan tidak berusaha menyembunyikan jejaknya, riwayat shellnya (mis. ~/.bash_history) Mungkin memiliki petunjuk.
Untuk mengetahui apa atau siapa yang memiliki file terbuka sekarang, gunakan lsof /path/to/file.
Untuk mencatat apa yang terjadi pada file di masa depan, ada beberapa cara:
Gunakan inotifywait . inotifywait -e access /path/toakan mencetak garis /path/to/ ACCESS fileketika seseorang membaca file. Antarmuka ini tidak akan memberi tahu Anda siapa yang mengakses file; Anda dapat menelepon lsof /path/to/filesegera setelah garis ini muncul, tetapi ada kondisi balapan (aksesnya mungkin sudah berakhir pada saat ia akan pergi).
LoggedFS adalah sistem file stackable yang menyediakan tampilan dari pohon sistem file, dan dapat melakukan logging yang lebih menarik dari semua akses melalui tampilan itu. Untuk mengkonfigurasinya, lihat Sintaks file konfigurasi LoggedFS .
Anda dapat menggunakan subsistem audit Linux untuk mencatat banyak hal, termasuk akses filesystem. Pastikan auditddaemon dimulai, kemudian konfigurasikan dengan apa Anda ingin login auditctl. Setiap operasi yang dicatat dicatat dalam /var/log/audit/audit.log(pada distribusi tipikal). Untuk mulai menonton file tertentu:
auditctl -w /path/to/file
Jika Anda menaruh arloji di direktori, file di dalamnya dan subdirektori secara rekursif juga ditonton.
Terima kasih Gilles .. Saya punya file dat ini dibuat oleh skrip. Saya hanya ingin tahu apa yang terjadi pada file itu setelah dibuat .. tidak ada skrip lain yang memungutnya untuk proses lebih lanjut jadi saya ingin melihat apakah seseorang secara manual mengakses file dat itu
Jack
@ Jack: Sulit untuk mengatakan tanpa mengetahui lebih banyak tentang pengaturan Anda, tetapi selama tidak ada yang menghapus atau mengganti nama file, itu akan ada di sana untuk skrip lain untuk mengambilnya, apakah ada orang lain yang mengaksesnya. Dari komentar Anda, saya pikir Anda harus melihat apa yang terjadi ketika Anda menjalankan skrip Anda.
Gilles 'SO- stop being evil'
2
Hei, Anda dapat membuat lingkaran melingkar yang bagus dengan ini:syslogd access log file /var/log/audit.log at 10:01\nsyslogd access log file /var/log/audit.log at 10:02\n...
penguin359
7
Contoh di atas dengan inotifywait harus salah satu (lihat halaman manual untuk info lebih lanjut):
inotifywait /path/to/file
inotifywait -e open /pat/to/file
Jawaban sebelumnya bukanlah praktik terbaik untuk melakukan apa yang Anda minta. Linux memiliki API untuk ini. The inotifyAPI http://linux.die.net/man/7/inotify
Anda dapat menulis program C untuk melakukan apa yang Anda inginkan hanya dengan memanggil inotifyAPI secara langsung
Jika Anda menginginkan sesuatu yang bekerja lintas platform ( inotifyspesifik Linux) dan Anda menggunakan Java, JNotify berfungsi lintas platform (Linux, Mac, Windows), yang mengabstraksikan API yang mendasari OS asli.
Selamat datang di Stack Exchange . Jawaban tidak disajikan dalam urutan kronologis, jadi "jawaban sebelumnya" tidak memberikan jawaban yang Anda maksud. Saya ingin tahu yang mana dari dua lainnya yang Anda maksudkan: yang satu tidak memiliki apa pun yang terlihat seperti praktik yang baik atau buruk, dan yang lain tidak menyebutkan API yang tidak berlaku.
Gilles 'SO- stop being evil'
Kemungkinan besar Glen merujuk pada jawaban di atas dengan penyortiran suara default. Memang jawaban yang paling populer gagal menyajikan solusi untuk pertanyaan itu. Mungkin ada sejumlah alasan yang mungkin perlu dilihat berapa kali file diakses untuk jangka waktu tertentu.
Wtower
1
Seperti dijelaskan di unix.stackexchange.com/a/12251/20336 inotify API tidak memberikan info tentang siapa yang mengakses file yang diberikan. Plus inotify benar-benar tidak membantu mencari tahu siapa yang mengakses file minggu lalu. Anda memerlukan fitur audit untuk itu, yang mengharuskan menggunakan perangkat lunak yang disebut auditd(namun, bahkan ini tidak membantu mencari tahu siapa yang mengakses file minggu lalu kecuali Anda auditdsudah menjalankan minggu lalu).
Mikko Rantalainen
3
Secara umum ini tidak layak. Saya telah melihat sistem file dengan audit yang cukup untuk memungkinkan satu atau lain cara, tetapi itu bukan hal umum Unix, tidak.
syslogd access log file /var/log/audit.log at 10:01\nsyslogd access log file /var/log/audit.log at 10:02\n...
Contoh di atas dengan inotifywait harus salah satu (lihat halaman manual untuk info lebih lanjut):
Atau dengan mode pemantauan dan cap waktu:
sumber
Jawaban sebelumnya bukanlah praktik terbaik untuk melakukan apa yang Anda minta. Linux memiliki API untuk ini. The
inotify
API http://linux.die.net/man/7/inotifyinotify
API secara langsunginotify
inotify
spesifik Linux) dan Anda menggunakan Java, JNotify berfungsi lintas platform (Linux, Mac, Windows), yang mengabstraksikan API yang mendasari OS asli.sumber
auditd
(namun, bahkan ini tidak membantu mencari tahu siapa yang mengakses file minggu lalu kecuali Andaauditd
sudah menjalankan minggu lalu).Secara umum ini tidak layak. Saya telah melihat sistem file dengan audit yang cukup untuk memungkinkan satu atau lain cara, tetapi itu bukan hal umum Unix, tidak.
sumber