Pertanyaan
Bagaimana cara menemukan pengguna mana yang menghapus file di bawah direktori tertentu di Linux?
Solusi
Anda dapat menggunakan layanan auditd untuk merekam pemberitahuan ketika ada perubahan yang dibuat pada file atau direktori tertentu. Di bawah ini adalah contoh yang akan merekam setiap perubahan yang dibuat pada file apa pun di bawah direktori /tmp/dir.
1. Jalankan perintah di bawah ini untuk menambahkan aturan audit:
# auditctl -a always,exit -F dir=/tmp/dir/ -F perm=war -k file_del
Verifikasi aturan audit yang dikonfigurasi:
# auditctl -l -w /tmp/dir// -p rwa -k file_del
2. Hapus file di bawah direktori /tmp/dir/ lalu periksa file audit.log:
$ date > /tmp/dir/when $ rm /tmp/dir/when
3. Anda dapat memeriksa audit.log dengan mengekornya:
# tail -f /var/log/audit/audit.log ... type=SYSCALL msg=audit(1515697690.586:2237): arch=c000003e syscall=2 success=yes exit=3 a0=251a9f0 a1=90800 a2=251a9c0 a3=a items=1 ppid=12424 pid=12425 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="bash" exe="/bin/bash" key="file_del" type=CWD msg=audit(1515697690.586:2237): cwd="/home/test" type=PATH msg=audit(1515697690.586:2237): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=PROCTITLE msg=audit(1515697690.586:2237): proctitle="-bash" type=SYSCALL msg=audit(1515697690.861:2238): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=f2f0c0 a2=0 a3=100 items=2 ppid=12425 pid=12519 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="rm" exe="/bin/rm" key="file_del" type=CWD msg=audit(1515697690.861:2238): cwd="/home/test" type=PATH msg=audit(1515697690.861:2238): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=PATH msg=audit(1515697690.861:2238): item=1 name="/tmp/dir/when" inode=913056 dev=f9:00 mode=0100664 ouid=501 ogid=501 rdev=00:00 nametype=DELETE type=PROCTITLE msg=audit(1515697690.861:2238): proctitle=726D002F746D702F6469722F31
4. Sebagai alternatif, file log dapat dicari menggunakan alat ausearch:
# ausearch -k file_del ---- time->Thu Jan 11 19:08:10 2018 type=PROCTITLE msg=audit(1515697690.586:2237): proctitle="-bash" type=PATH msg=audit(1515697690.586:2237): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=CWD msg=audit(1515697690.586:2237): cwd="/home/test" type=SYSCALL msg=audit(1515697690.586:2237): arch=c000003e syscall=2 success=yes exit=3 a0=251a9f0 a1=90800 a2=251a9c0 a3=a items=1 ppid=12424 pid=12425 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="bash" exe="/bin/bash" key="file_del" ---- time->Thu Jan 11 19:08:10 2018 type=PROCTITLE msg=audit(1515697690.861:2238): proctitle=726D002F746D702F6469722F31 type=PATH msg=audit(1515697690.861:2238): item=1 name="/tmp/dir/when" inode=913056 dev=f9:00 mode=0100664 ouid=501 ogid=501 rdev=00:00 nametype=DELETE type=PATH msg=audit(1515697690.861:2238): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=CWD msg=audit(1515697690.861:2238): cwd="/home/test" type=SYSCALL msg=audit(1515697690.861:2238): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=f2f0c0 a2=0 a3=100 items=2 ppid=12425 pid=12519 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="rm" exe="/bin/rm" key="file_del"Catatan :Sistem audit ini tidak dapat mencegah akses yang tidak diinginkan. Hanya entri jejak audit yang dapat dibuat. Audit untuk Modifikasi dan Eksekusi File di Linux
Apa itu Skrip Shell? Bagaimana Cara Membuat Script Shell?
Tidak Dapat Menghapus File Dari Direktori dengan Kesalahan "Daftar argumen terlalu panjang"