adb "Izin ditolak" untuk menjalankan file "./configure"

9

Saya perlu menjalankan configurefile ke ponsel android saya jadi saya pikir cara terbaik untuk melakukan ini adalah dengan menggunakan adb shellperintah.

Saya menjalankan emulator Android ke platform Windows-7, dan di sana saya menjalankan adb shellperintah ke jendela DOS. Menggunakan cdperintah saya mengubah ke direktori dimana saya configurefile, dan kemudian aku menjalankan perintah berikut: ./configure. Saya mendapatkan kesalahan berikut:

./configure: permission denied

Jadi saya mencoba menjalankan adb dalam mode root dengan adb root- tetapi ternyata adb saya sudah dalam mode root (Selain itu saya memiliki karakter "#" sebelum setiap baris shell adb saya).

Saya juga sudah mencoba menggunakan chmodtetapi saya tidak melihat perbedaan sebelum dan sesudah menjalankan perintah ini ( ls -la), jadi mungkin masalahnya ada di sini (Bagaimana saya bisa menjalankan chmodperintah?).

Mungkin seseorang di sini dapat membantu saya dengan masalah saya, dan jika Anda juga memiliki penjelasan tentang mengapa saya tidak memiliki izin untuk menjalankan configurefile saya itu akan bagus.

Terima kasih.

PS: Tujuan saya di sini adalah menggunakan paket net-snmp pada platform Android dengan mengkompilasi sumber-sumber proyek ini langsung ke platform.

grattmandu03
sumber
3
Mungkin itu masalahnya. /sdcardbiasanya dipasang dengan noexecbendera di Android, jadi Anda tidak dapat menjalankan binari darinya. Saya akan merekomendasikan mencoba memindahkannya ke tempat lain (sering /data/localdigunakan untuk hal-hal seperti itu). Lihat apakah itu menyelesaikan masalah.
eldarerathis
3
Juga, salin ke /usr/local/tmpdirektori (seluruh net-snmp-5.7.2direktori dalam /sdcard.
Liam W
1
@ t0mm13b Tidak sepenuhnya yakin apakah ini adalah off topic, karena itu bisa berguna bagi orang-orang yang perlu mengeksekusi file pada perangkat mereka, seperti akar mengeksploitasi.
Liam W
1
Ok terima kasih. Pertanyaan saya di sini lebih tentang bagaimana saya bisa menjalankan skrip dengan adb shell daripada pertanyaan pengembangan. Tapi sekarang saya punya solusinya: "/ sdcard sudah terpasang dengan flag noexec", jadi jika eldarerathis atau Liam W ingin memberikan komentar mereka ke jawaban nyata saya akan memvalidasinya. Atau mungkin Anda bisa menjelaskan kepada saya bagaimana saya bisa menutup pertanyaan saya?
grattmandu03
1
@ grattmandu03 Saya sudah punya;)
Liam W

Jawaban:

10

Ini karena 2 hal:

  1. File tidak memiliki izin eksekusi [DAN]
  2. File tidak dapat memperoleh izin yang dapat dieksekusi karena ada pada Kartu SD. Sistem file SD Card dapat menerima izin file, namun dipasang dengan noexecflag, sebagaimana dinyatakan dalam komentar. Ini menghentikan file yang sedang dieksekusi.

Larutan:

  1. Salin net-snmp-5.7.2direktori ke /data/local/tmpdirektori sebagai root.
  2. Setel configurefile yang akan dieksekusi dengan menjalankan chmod 0777 /data/local/tmp/net-snmp-5.7.2/configuresebagai root.
  3. Anda sekarang seharusnya dapat menjalankan skrip configure dengan mengetik /data/local/tmp/net-snmp-5.7.2/configuredan menekan enter.

Catatan

Ini semua harus dilakukan sebagai pengguna root :)

Liam W
sumber
8

Seperti yang dijelaskan oleh komentar dan jawaban Liam , ini disebabkan oleh noexecbendera yang digunakan oleh sistem saat memasang sdcard. Jika configurefile Anda adalah skrip shell (seperti biasanya), Anda masih bisa mengelabui itu untuk dieksekusi:

cdke direktori seperti yang Anda jelaskan di atas, dan kemudian jalankan sh configure.

shadalah penerjemah Shell, dan biner itu harus diletakkan di /system/bintempat file dapat dieksekusi. Melewati skrip Anda sebagai argumen pertama, ini akan membuka proses shell baru yang mengeksekusi configureskrip Anda .

Izzy
sumber
Terima kasih atas jawaban anda. The sh configuremelakukan trik.
grattmandu03
1
Terima kasih atas konfirmasinya! Dan senang saya bisa membantu. Saya menggunakan trik ini pada mesin Linux / Unix dari waktu ke waktu :)
Izzy