Cara melacak sudo
$ sudo strace -u <username> sudo -k <command>
sudo
menjalankanstrace
sebagai root.strace
menjalankansudo
sebagai<username>
diteruskan melalui-u
opsi.sudo
menjatuhkan kredensial yang di-cache darisudo
sebelumnya dengan-k
opsi (untuk meminta kata sandi lagi) dan menjalankan<command>
.
sudo
kedua adalah tracee (proses yang sedang dilacak).
Untuk secara otomatis menempatkan pengguna saat ini di tempat <username>
, gunakan $(id -u -n)
.
Mengapa sudo tidak bekerja dengan strace
Selain jawaban dari Charles ini, inilah execve()
halaman manual mengatakan:
Jika bit set-user-ID diatur pada file program yang dirujuk oleh pathname, maka ID pengguna efektif dari proses pemanggilan diubah menjadi pemilik file program. Demikian pula, ketika bit set-group-ID file program disetel, ID grup efektif dari proses pemanggilan disetel ke grup file program.
Transformasi ID efektif yang disebutkan di atas tidak dilakukan (yaitu bit set-user-ID dan set-group-ID diabaikan) jika salah satu dari berikut ini benar:
- atribut no_new_privs disetel untuk utas panggilan (lihat prctl(2));
- filesystem yang mendasarinya adalah mount nosuid (flag MS_NOSUID untuk mount(2)); atau
- proses pemanggilan sedang dilacak.
Kemampuan file program (lihat kemampuan(7)) juga diabaikan jika salah satu hal di atas benar.
Izin untuk melacak proses, memeriksa atau memodifikasi memorinya, dijelaskan dalam subbagian Pemeriksaan mode akses Ptrace di bagian CATATAN dari halaman manual ptrace(2). Saya telah berkomentar tentang ini di jawaban ini.
Untuk alasan keamanan, setuid bit dan ptrace (digunakan untuk menjalankan binari di bawah debugger) keduanya tidak dapat dijalankan secara bersamaan. Kegagalan untuk menegakkan batasan ini di masa lalu menyebabkan CVE-2001-1384.
Akibatnya, sistem operasi apa pun yang dirancang dengan memperhatikan keamanan akan berhenti menjalankan ptrace pada exec dari biner setuid, atau gagal menjalankan bit setuid saat ptrace sedang digunakan.
Di Linux, pertimbangkan untuk menggunakan Sysdig sebagai gantinya -- yang, hanya dapat melihat tetapi tidak mengubah perilaku, tidak menjalankan risiko yang sama.