Saya login sebagai root tetapi
strace
memberi saya ini:root @ kyznecov-System: / home / kyznecov # ps -e | grep 111 3807 poin / 2 00:00:00 111 3810 Poin / 2 00:00:00 111 root @ kyznecov-System: / home / kyznecov # strace -p 3810 lampirkan: ptrace (PTRACE_ATTACH, ...): Operasi tidak diizinkan Tidak dapat melampirkan ke proses. Jika uid Anda cocok dengan uid dari target proses, periksa pengaturan / proc / sys / kernel / yama / ptrace_scope, atau coba lagi sebagai pengguna root. Untuk detail lebih lanjut, lihat /etc/sysctl.d/10-ptrace.conf root @ kyznecov-System: / home / kyznecov root @ kyznecov-System: / home / kyznecov # cat / proc / sys / kernel / yama / ptrace_scope 0
Saya kemudian mencoba menggunakan
gdb
untuk men-debug program multiproses di Eclipse CDT dengan forking, dan itu memberi saya hasil / kesalahan yang sama:
Ada ide?
strace /bin/echo test
? Apakah itu memberikan pesan kesalahan yang sama?Jawaban:
Salah satu alasan untuk mendapatkan kesalahan:
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
karena prosesnya telah dilampirkan dengan
gdb
,strace
atau serupa. Untuk memeriksa apakah ini masalahnya, jalankan:grep TracerPid /proc/$THE_PID/status
Jika bukan nol, itu adalah pid dari program yang ada yang sudah menjalankan jejak pada proses itu.
sumber
Seperti yang sudah dikomentari oleh izx , ini seharusnya hanya dapat terjadi karena bug kernel. Jadi siapa pun yang saat ini dapat menghasilkan masalah ini - termasuk dan terutama poster asli dari pertanyaan ini - akan disarankan untuk melaporkannya sebagai bug dengan membaca halaman itu dengan seksama dan hati-hati, dan kemudian berjalan
ubuntu-bug linux
pada mesin yang terpengaruh . Ini harus dilaporkan terhadaplinux
Ubuntu, dan tidak terhadap kernel mainline (upstream), kecuali Anda dapat memproduksinya pada kernel mainline (Anda harusyama
memuatnya).Perilaku yang diharapkan dalam setiap versi Ubuntu dimulai dengan Ubuntu 10.10 adalah bahwa proses A tidak dapat melacak proses yang berjalan B kecuali B adalah anak langsung dari A (atau A berjalan sebagai
root
). Ini adalah peningkatan keamanan, yang membuatnya agar proses yang telah dikompromikan oleh penyerang tidak dapat menggunakan fasilitas debug yang disediakan oleh kernel untuk menemukan informasi dari proses lain. Ini dijelaskan di bagian lingkup ptrace dari halaman wiki komunitas Fitur Keamanan .Perilaku membatasi ini adalah default tetapi dapat diubah untuk memungkinkan proses A untuk melacak setiap proses yang berjalan B yang dijalankan dengan ID pengguna yang sama seperti proses A sendiri. Artinya, Anda dapat mengkonfigurasi sistem Anda untuk memungkinkan proses Anda untuk saling debug. Ini menyederhanakan melampirkan debugger ke proses yang sudah berjalan.
Pengaturan untuk ini diekspos oleh
/proc/sys/kernel/yama/ptrace_scope
sysctl .1
menunjukkan perilaku yang lebih ketat dan perilaku0
yang tidak terlalu ketat. Pengaturan dapat dibaca dengan:Perilaku yang kurang ketat (non-default) dapat diatur dengan:
Dan perilaku yang lebih membatasi (default) dapat diatur (atau diatur kembali) dengan:
Tidak hanya poster asli dari pertanyaan ini tidak dapat melampirkan
strace
contoh ke proses yang sedang berjalan denganptrace-scope
diatur ke0
, tetapi poster asli juga masih tidak dapat melakukannya ketika berjalanstrace
sebagairoot
. Sulit untuk melihat bagaimana ini bisa menjadi sesuatu selain bug - Saya sangat merekomendasikan untuk melaporkannya sebagai bug.Pada awalnya, saya berpikir bahwa saya dapat mereproduksi masalah di mana
ptrace_scope
pengaturan0
diabaikan dan diperlakukan seolah-olah itu1
. Tetapi saya tidak lagi percaya ini adalah masalahnya, karena saya telah melakukan semua hal yang sama lagi, dan saya tidak dapat mereproduksi masalahnya. Saya telah menguji ini pada:Pada ketiga mesin, perilaku yang diharapkan terjadi, dan saya tidak dapat mereproduksi kondisi yang ditanyakan oleh poster asli pertanyaan ini. Ini beberapa teks dari Terminal (dari sistem langsung Precise):
strace
terus menghasilkan pesan sampai saya menangguhkannya, seperti yang diharapkan.Saya menyimpulkan dengan merekomendasikan lagi untuk melaporkan ini sebagai bug. Pencarian inklusif maksimal di https://bugs.launchpad.net (yang mencakup bug Ubuntu yang dilaporkan) untuk teks hanya
ptrace_scope
menghasilkan beberapa hasil, di mana jelas tidak ada laporan untuk bug ini . Melaporkan bug akan membantu orang lain, dapat menyebabkan penyelesaian masalah atau perbaikan, dan mungkin satu-satunya cara yang berarti untuk melanjutkan penyelesaian masalah ini (dengan asumsi masalah masih terjadi).sumber