GNU/Linux >> Belajar Linux >  >> Linux

Tidak dapat melakukan strace sudo; melaporkan bahwa uid efektif adalah bukan nol

Cara melacak sudo

$ sudo  strace -u <username>  sudo -k <command>
  1. sudo menjalankan strace sebagai root.
  2. strace menjalankan sudo sebagai <username> diteruskan melalui -u opsi.
  3. sudo menjatuhkan kredensial yang di-cache dari sudo 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.


Linux
  1. Buat Pengguna Sudo di Debian - Proses Langkah demi Langkah?

  2. Alat Yang Memungkinkan Pencatatan Penggunaan Memori?

  3. Linux – Apakah Proses Yang Memiliki Terminal Pengendali, Atau Sesi Yang Memiliki Terminal Pengendali?

  1. Bagaimana cara melacak proses anak menggunakan strace?

  2. KESALAHAN:ld.so:objek 'libgtk3-nocsd.so.0' dari LD_PRELOAD tidak dapat dimuat sebelumnya

  3. Terus memantau file yang dibuka/diakses oleh suatu proses

  1. Monitor Proses setara untuk Linux?

  2. Bagaimana cara menonaktifkan shutdown agar proses penting tidak dapat dihentikan?

  3. Bagaimana cara membunuh proses yang tidak pernah mati?