Saya mencoba menjalankan ADB pada server linux dengan banyak pengguna di mana saya tidak melakukan root (untuk bermain dengan emulator android saya). Adb daemon menulis log-nya ke file /tmp/adb.log
yang sayangnya tampaknya sulit dikodekan ke dalam ADB dan situasi ini tidak akan berubah .
Jadi, adb gagal untuk dijalankan, memberikan kesalahan yang jelas: cannot open '/tmp/adb.log': Permission denied
. File ini dibuat oleh pengguna lain dan /tmp
sedikit lengket. Jika saya memulai adb dengan adb nodaemon server
membuatnya menulis ke stdout, tidak ada kesalahan terjadi (saya juga mengatur port-nya ke nilai unik untuk menghindari konflik).
Pertanyaan saya adalah: adakah cara untuk membuat ADB menulis ke file lain /tmp/adb.log
? Secara umum, adakah cara untuk membuat semacam symlink khusus proses? Saya ingin mengalihkan semua akses file /tmp/adb.log
ke, katakanlah, file ~/tmp/adb.log
.
Sekali lagi, saya tidak melakukan root pada server, jadi chroot
, mount -o rbind
dan chmod
bukan opsi yang valid. Jika memungkinkan, saya ingin tidak memodifikasi sumber ADB, tetapi tentu saja jika tidak ada solusi lain, saya akan melakukannya.
PS Untuk kasus ADB spesifik saya bisa resor untuk berjalan adb nodaemon server
dengan nohup
dan output redirection, tapi pertanyaan umum masih relevan.
LD_PRELOAD
trik, meski itu akan lebih rumit.
/home/$USER/tmp/adb.log
dan membangun kembali adb :)
/tmp/adb.log
, atau bahkan me-mount privasinya sendiri/tmp
. lakukanman unshare
danman namespaces
danman nsenter
.