adb“ ปฏิเสธการอนุญาต” เพื่อเรียกใช้ไฟล์“ ./configure”


9

ฉันต้องการเรียกใช้configureไฟล์ลงในโทรศัพท์ android ของฉันดังนั้นฉันคิดว่าวิธีที่ดีที่สุดในการทำเช่นนี้คือการใช้adb shellคำสั่ง

ฉันกำลังเรียกใช้โปรแกรมจำลองการทำงาน Android บนแพลตฟอร์ม Windows-7 และที่นั่นฉันกำลังเรียกใช้adb shellคำสั่งลงในหน้าต่าง DOS ใช้cdคำสั่งฉันเปลี่ยนเป็นไดเรกทอรีที่configureไฟล์ของฉันแล้วฉันกำลังดำเนินการคำสั่งต่อไปนี้: ./configure. ฉันได้รับข้อผิดพลาดต่อไปนี้:

./configure: permission denied

ดังนั้นฉันจึงพยายามเรียกใช้ adb ในโหมดรูทด้วยadb root- แต่เห็นได้ชัดว่า adb ของฉันอยู่ในโหมดรูทแล้ว (ยิ่งกว่านั้นฉันมีอักขระ "#" อยู่หน้าบรรทัดของ adb shell แต่ละบรรทัด)

ฉันได้พยายามที่จะใช้chmodแต่ฉันไม่เห็นความแตกต่างก่อนและหลังการดำเนินการคำสั่งนี้ ( ls -la) ดังนั้นอาจเป็นปัญหาที่นี่ (ฉันจะเรียกใช้chmodคำสั่งได้อย่างไร)

บางทีใครบางคนที่นี่สามารถช่วยฉันแก้ปัญหาของฉันได้และถ้าคุณมีคำอธิบายเกี่ยวกับสาเหตุที่ฉันไม่ได้รับอนุญาตให้เรียกใช้configureไฟล์ของฉันมันจะดีมาก

ขอบคุณ

PS: เป้าหมายของฉันที่นี่คือการใช้แพ็คเกจ net-snmp บนแพลตฟอร์ม Android โดยรวบรวมแหล่งที่มาของโครงการนี้ลงบนแพลตฟอร์มโดยตรง


3
นั่นอาจเป็นปัญหา /sdcardโดยทั่วไปแล้วจะติดตั้งพร้อมกับตั้งnoexecค่าสถานะใน Android ดังนั้นคุณจึงไม่สามารถเรียกใช้ไบนารีจากมันได้ ฉันขอแนะนำให้พยายามย้ายไปที่อื่น (มัก/data/localใช้กับสิ่งต่าง ๆ เช่นนั้น) ดูว่าการแก้ปัญหา
eldarerathis

3
นอกจากนี้คัดลอกไปยัง/usr/local/tmpไดเรกทอรี (ทั้งnet-snmp-5.7.2ไดเรกทอรี/sdcard.
เลียม W

1
@ t0mm13b ไม่แน่ใจว่านี่เป็นหัวข้อนอกหรืออาจเป็นประโยชน์สำหรับผู้ที่ต้องการเรียกใช้ไฟล์บนอุปกรณ์เช่นใช้ประโยชน์จากรูท
เลียม

1
โอเคขอบคุณ. คำถามของฉันที่นี่มีมากขึ้นเกี่ยวกับวิธีฉันสามารถเรียกใช้สคริปต์ sh กับ adb เชลล์กว่าคำถามพัฒนา แต่ตอนนี้ฉันมีทางออก: "/ sdcard ติดตั้งด้วยธง noexec" ดังนั้นหาก eldarerathis หรือ Liam W ต้องการที่จะใส่ความคิดเห็นของพวกเขาเป็นคำตอบที่แท้จริงฉันจะตรวจสอบมัน หรือบางทีคุณสามารถอธิบายฉันได้ว่าฉันจะปิดคำถามได้อย่างไร
grattmandu03

1
@ grattmandu03 ฉันมีอยู่แล้ว)
Liam W

คำตอบ:


10

นี่เป็นเพราะ 2 สิ่ง:

  1. ไฟล์ไม่มีสิทธิ์ดำเนินการ [และ]
  2. ไฟล์ไม่สามารถรับสิทธิ์ในการปฏิบัติการได้เนื่องจากอยู่ในการ์ด SD ระบบไฟล์ของ SD Card สามารถยอมรับการอนุญาตของไฟล์ได้อย่างไรก็ตามมันจะถูกเมาท์พร้อมกับnoexecแฟล็กตามที่ระบุไว้ในความคิดเห็น สิ่งนี้จะหยุดไฟล์ที่กำลังดำเนินการ

สารละลาย:

  1. คัดลอกnet-snmp-5.7.2ไดเรกทอรีไปยัง/data/local/tmpไดเรกทอรีเป็นราก
  2. ตั้งค่าconfigureไฟล์ที่จะเรียกใช้งานได้โดยรันchmod 0777 /data/local/tmp/net-snmp-5.7.2/configureเป็น root
  3. ตอนนี้คุณควรจะสามารถเรียกใช้สคริปต์การกำหนดค่าได้โดยพิมพ์/data/local/tmp/net-snmp-5.7.2/configureและกด Enter

บันทึก

สิ่งนี้ควรทำในฐานะผู้ใช้รูท :)


8

ตามที่อธิบายโดยความเห็นและคำตอบของเลียมนี่เป็นเพราะnoexecธงที่ใช้โดยระบบเมื่อติดตั้ง sdcard หากconfigureไฟล์ของคุณเป็นเชลล์สคริปต์ (ตามปกติ) คุณยังสามารถหลอกให้เรียกใช้งาน:

cdsh configureไปยังไดเรกทอรีที่คุณอธิบายไว้ข้างต้นแล้วรัน

shคือล่ามเชลล์และไบนารีนั้นควรอยู่ใน/system/binตำแหน่งที่ไฟล์สามารถเรียกใช้งานได้ ผ่านสคริปต์ของคุณเป็นอาร์กิวเมนต์แรกสิ่งนี้จะเปิดกระบวนการเชลล์ใหม่ซึ่งดำเนินการconfigureสคริปต์ของคุณ


ขอบคุณสำหรับคำตอบ. sh configureไม่หลอกลวง
grattmandu03

1
ขอบคุณสำหรับการยืนยัน! และดีใจที่ฉันสามารถช่วย ผมใช้เคล็ดลับนี้บนเครื่อง Linux / Unix จากเวลา :)
อิซซี่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.