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 terhadap linux
Ubuntu, dan tidak terhadap kernel mainline (upstream), kecuali Anda dapat memproduksinya pada kernel mainline (Anda harus yama
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 perilaku 0
yang tidak terlalu ketat. Pengaturan dapat dibaca dengan:
cat /proc/sys/kernel/yama/ptrace_scope
Perilaku yang kurang ketat (non-default) dapat diatur dengan:
echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
Dan perilaku yang lebih membatasi (default) dapat diatur (atau diatur kembali) dengan:
echo 1 | sudo tee /proc/sys/kernel/yama/ptrace_scope
Tidak hanya poster asli dari pertanyaan ini tidak dapat melampirkan strace
contoh ke proses yang sedang berjalan dengan ptrace-scope
diatur ke 0
, tetapi poster asli juga masih tidak dapat melakukannya ketika berjalan strace
sebagai root
. 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
pengaturan 0
diabaikan dan diperlakukan seolah-olah itu 1
. 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:
- Mesin fisik Precise amd64 Lubuntu yang saya gunakan setiap hari sebagai kotak utama saya.
- Mesin virtual VirtualBox yang menjalankan live CD Lubuntu Precise i386 (12.04).
- Mesin virtual VirtualBox identik yang menjalankan Quantal i386 (Ubuntu + 1) setiap hari (20120608).
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):
lubuntu@lubuntu:~$ nano&
[1] 3492
lubuntu@lubuntu:~$ strace -p 3492
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
[1]+ Stopped nano
lubuntu@lubuntu:~$ cat /proc/sys/kernel/yama/ptrace_scope
1
lubuntu@lubuntu:~$ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
0
lubuntu@lubuntu:~$ strace -p 3492
Process 3492 attached - interrupt to quit
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
ioctl(1, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig -icanon -echo ...}) = ? ERESTARTSYS (To be restarted)
--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---
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 hanyaptrace_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).
strace /bin/echo test
? Apakah itu memberikan pesan kesalahan yang sama?