Giấy phép adb từ chối từ chối để chạy một tập tin.


9

Tôi cần chạy một configuretập tin vào điện thoại Android vì vậy tôi nghĩ cách tốt nhất để làm điều này là sử dụng adb shelllệnh.

Tôi đang chạy trình giả lập Android trên nền tảng Windows-7 và ở đó tôi đang chạy adb shelllệnh vào cửa sổ DOS. Sử dụng cdlệnh Tôi đang thay đổi thư configuremục chứa tệp của mình và sau đó tôi đang thực hiện lệnh sau : ./configure. Tôi nhận được lỗi sau:

./configure: permission denied

Vì vậy, tôi cố gắng chạy adb ở chế độ root với adb root- nhưng rõ ràng adb của tôi đã ở chế độ root (Ngoài ra tôi có ký tự "#" trước mỗi dòng của vỏ adb của tôi).

Tôi cũng đã thử sử dụng chmodnhưng tôi không thấy bất kỳ sự khác biệt nào trước và sau khi thực hiện lệnh này ( ls -la), vì vậy có lẽ vấn đề là ở đây (Làm cách nào tôi có thể chạy chmodlệnh?).

Có lẽ ai đó ở đây có thể giúp tôi với vấn đề của tôi và nếu bạn cũng có một lời giải thích về lý do tại sao tôi không được phép chạy configuretệp của mình thì điều đó thật tuyệt.

Cảm ơn.

PS: Mục tiêu của tôi ở đây là sử dụng gói net-snmp trên nền tảng Android bằng cách biên dịch trực tiếp các nguồn của dự án này lên nền tảng.


3
Đó có lẽ là vấn đề. /sdcardthường được gắn noexeccờ trong Android, vì vậy bạn không thể thực thi nhị phân từ nó. Tôi sẽ khuyên bạn nên cố gắng di chuyển nó đến một nơi khác (thường /data/localđược sử dụng cho những thứ như vậy). Xem nếu điều đó giải quyết vấn đề.
eldarerathis

3
Ngoài ra, sao chép nó vào /usr/local/tmpthư mục (toàn bộ net-snmp-5.7.2thư mục /sdcard.
Liam W

1
@ t0mm13b Không hoàn toàn chắc chắn nếu điều này off topic, vì nó có thể hữu ích cho những người cần phải thực hiện một tập tin trên thiết bị của họ, chẳng hạn như một gốc khai thác.
Liam W

1
Được rồi cảm ơn. Câu hỏi của tôi ở đây là về cách tôi có thể chạy tập lệnh sh với vỏ adb hơn là câu hỏi phát triển. Nhưng bây giờ tôi có giải pháp: "/ sdcard được gắn cờ noexec", vì vậy nếu eldarerathis hoặc Liam W muốn đưa nhận xét của họ vào câu trả lời thực sự tôi sẽ xác thực nó. Hoặc có lẽ bạn có thể giải thích cho tôi làm thế nào tôi có thể đóng câu hỏi của tôi?
grattlahoma03

1
@ grattlahoma03 Tôi đã có;)
Liam W

Câu trả lời:


10

Điều này là do 2 điều:

  1. Tệp không có quyền thực thi [AND]
  2. Tệp không thể có được quyền thực thi như trên Thẻ SD. Hệ thống tập tin của Thẻ SD có thể chấp nhận quyền truy cập tệp, tuy nhiên, nó được gắn với noexeccờ, như đã nêu trong một nhận xét. Điều này dừng các tập tin đang được thực thi.

Giải pháp:

  1. Sao chép net-snmp-5.7.2thư mục vào /data/local/tmpthư mục là root.
  2. Đặt configuretệp để được thực thi bằng cách chạy chmod 0777 /data/local/tmp/net-snmp-5.7.2/configurebằng root.
  3. Bây giờ bạn có thể thực thi tập lệnh cấu hình bằng cách nhập /data/local/tmp/net-snmp-5.7.2/configurevà nhấn enter.

Ghi chú

Tất cả điều này nên được thực hiện như người dùng root :)


8

Như được giải thích bởi các bình luận và câu trả lời của Liam , điều này là do noexeccờ được sử dụng bởi hệ thống khi gắn sdcard. Nếu configuretệp của bạn là tập lệnh shell (như thường lệ), bạn vẫn có thể lừa nó để được thực thi:

cdvào thư mục như bạn mô tả ở trên, và sau đó thực thi sh configure.

shlà trình thông dịch Shell và tệp nhị phân đó phải được đặt trong /system/binđó tệp có thể được thực thi. Truyền tập lệnh của bạn làm đối số đầu tiên, điều này sẽ mở ra một quy trình shell mới thực thi configuretập lệnh của bạn .


Cảm ơn câu trả lời của bạn. Các sh configuremẹo.
grattlahoma03

1
Cám ơn vì đã xác nhận! Và vui mừng tôi đã có thể giúp đỡ. Thỉnh thoảng tôi vẫn sử dụng thủ thuật này trên các máy Linux / Unix :)
Izzy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.