GNU/Linux >> Belajar Linux >  >> Linux

Linux – Apakah Mungkin Memalsukan Jalur Tertentu Untuk Suatu Proses?

Saya mencoba menjalankan ADB di server linux dengan banyak pengguna di mana saya tidak melakukan root (untuk bermain dengan emulator Android saya). Daemon adb menulis lognya ke file /tmp/adb.log yang sayangnya tampaknya telah dikodekan ke dalam ADB dan situasi ini tidak akan berubah.

Jadi, adb gagal dijalankan, memberikan kesalahan yang jelas:cannot open '/tmp/adb.log': Permission denied . File ini dibuat oleh pengguna lain dan /tmp memiliki sedikit lengket. Jika saya memulai adb dengan adb nodaemon server membuatnya menulis ke stdout, tidak ada kesalahan yang terjadi (saya juga mengatur portnya ke nilai unik untuk menghindari konflik).

Pertanyaan saya adalah:apakah ada cara untuk membuat ADB menulis ke file lain selain /tmp/adb.log ? Lebih umum, apakah ada cara untuk membuat semacam symlink khusus proses? Saya ingin mengarahkan semua akses file ke /tmp/adb.log untuk, dengan mengatakan, file ~/tmp/adb.log .

Sekali lagi, saya bukan root di server, jadi chroot , mount -o rbind dan chmod bukan opsi yang valid. Jika memungkinkan, saya tidak ingin mengubah sumber ADB, tetapi tentu saja jika tidak ada solusi lain, saya akan melakukannya.

P.S. Untuk kasus ADB tertentu saya dapat menggunakan adb nodaemon server dengan nohup dan pengalihan output, tetapi pertanyaan umum masih relevan.

Jawaban yang Diterima:

Berikut adalah contoh yang sangat sederhana menggunakan util-linux unshare untuk menempatkan proses dalam namespace mount pribadi dan memberikannya tampilan berbeda dari sistem file yang sama yang dimiliki induknya saat ini:

{   cd /tmp                      #usually a safe place for this stuff
    echo hey   >file             #some
    echo there >file2            #evidence
    sudo unshare -m sh -c '      #unshare requires root by default
         mount -B file2 file     #bind mount there over hey
         cat file                #show it
         kill -TSTP "$$"         #suspend root shell and switch back to parent
         umount file             #unbind there
         cat file'               #show it
    cat file                     #root shell just suspended
    fg                           #bring it back
    cat file2                    #round it off
}
there                            #root shell
hey                              #root shell suspended
hey                              #root shell restored
there                            #rounded

Anda dapat memberikan proses tampilan pribadi dari sistem filenya dengan unshare utilitas pada sistem linux terkini, meskipun fasilitas mount namespace itu sendiri telah cukup matang untuk keseluruhan seri kernel 3.x. Anda dapat memasukkan semua jenis ruang nama yang sudah ada sebelumnya dengan nsenter utilitas dari paket yang sama, dan Anda dapat mengetahui lebih lanjut dengan man .


Linux
  1. Bagaimana cara menentukan ikon dengan jalur RELATIF untuk file entri desktop Linux?

  2. Cara mengatur ID proses di Linux untuk program tertentu

  3. grep secara rekursif untuk jenis file tertentu di Linux

  1. Mungkinkah deskriptor file linux 0 1 2 bukan untuk stdin, stdout dan stderr?

  2. Monitor Proses setara untuk Linux?

  3. Apakah mungkin memalsukan jalur tertentu untuk suatu proses?

  1. 10 alias Bash yang berguna untuk Linux

  2. 8 perintah Linux untuk manajemen proses yang efektif

  3. Bagaimana cara memaksa izin khusus untuk file/folder baru di server file Linux?