Làm cách nào để thực thi một tệp từ ổ USB FAT?


12

Tôi đang cố gắng cài đặt một ứng dụng di động vào ổ USB của mình để nó tương thích với cả Ubuntu và Windows (cụ thể là chương trình có tên eToys). Hỗ trợ đã được tích hợp vào ứng dụng cho cả hai hệ điều hành - có etoys.shcho Ubuntu và etoys.execho Windows. Tôi quyết định cài đặt vào ổ đĩa FAT vì có thể đọc được từ cả hai hệ thống. Điều này hoạt động tốt cho Windows, nhưng vì một số lý do tôi không thể thực thi etoys.sh trên Ubuntu.

Vấn đề không nằm ở tệp - khi toàn bộ thư mục được sao chép vào ổ cứng cục bộ, ứng dụng hoạt động rất tốt trong Ubuntu. Nhưng khi tôi cố gắng thực thi nó từ USB, nó sẽ mở tệp trong trình soạn thảo văn bản.

Sau đó tôi đã cố chạy nó từ một thiết bị đầu cuối, nhưng tôi nhận được thông báo Quyền bị từ chối.

Tôi cũng có vấn đề tương tự với các thực thi khác.

Có cách nào dễ dàng để thực hiện mọi thứ từ thẻ nhớ USB không?


2
Câu hỏi liên quan ở đây: askubfox.com/questions/23108/ Mạnh
luri

Câu trả lời:


20

Do những hạn chế của hệ thống tệp FA32, bạn không thể.

Bây giờ, bạn có thể gian lận:

  1. hoặc gọi sh etoys.shthay vì./etoys.sh
  2. nếu bạn muốn, bạn thậm chí có thể tạo một tập lệnh khác (ví dụ như nằm trên ổ cứng của bạn) chỉ đơn giản gọi tập lệnh của bạn trên ổ USB:

    #!/bin/bash
    sh /media/USB/etoys.sh
    

Cảm ơn nhiều! Cheat thứ hai chắc chắn là một lựa chọn, và tôi sẽ ghi nhớ điều đó. Cách khác, có một hệ thống tệp nào khác mà tôi có thể sử dụng sẽ hoạt động với cả Windows và Ubuntu và để tôi thực hiện các tệp không?
Derek Redfern

Bạn có thể sử dụng ext2 hoặc ext3, nhưng bạn cần cài đặt một tiện ích nhỏ trên Windows để nó hoạt động.

Thêm một câu hỏi về điều này - tôi quyết định chọn tùy chọn tạo tập lệnh trên ổ cứng và nó hoạt động rất tốt. Nhưng tôi cũng muốn có các tập lệnh cho các chương trình không phải là tệp .sh - ví dụ: Chromium di động, là loại "thực thi (ứng dụng / x-thực thi)". Sử dụng sh không hoạt động và ./Chromium vẫn cho phép bị từ chối. Có một lệnh khác để sử dụng cho việc này?
Derek Redfern

Humm, tôi đoán bạn chỉ có thể gian lận: trước khi thực hiện crom, bạn có thể điều chỉnh nó để làm cho nó có thể thực thi được. Vì lệnh chmod sẽ được gọi mỗi lần, nên việc cấp phép sẽ không được thực hiện vào lần tiếp theo khi bạn lắp ổ USB

Tôi nghĩ rằng bạn không thể chmod trên FAT mặc dù nó không hỗ trợ quyền Unix.
Derek Redfern

8

Gắn thiết bị -o mode=<value>nên hoạt động

mode=value

Đặt chế độ của tất cả các tệp thành giá trị & 0777bỏ qua các quyền ban đầu. Thêm quyền tìm kiếm vào các thư mục có quyền đọc. Giá trị được đưa ra trong bát phân.


1
Tôi có nên đặt cái này trong fstab không?
Derek Redfern

@Bonsi Scott Không có mode=tùy chọn nào cho vfat, xem mount (8) .
pevik

6

Tôi thực sự tìm thấy một giải pháp tuyệt vời tại http://ubuntuforums.org/showthread.php?t=1665289 đã khắc phục vấn đề.

Về cơ bản, nó nói để chạy lệnh

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks/udisks-daemon

và điều đó sẽ ngăn các đĩa tự động gắn với tùy chọn showexec.

Tôi không muốn trả lời câu hỏi của riêng mình, nhưng điều này hiệu quả với tôi và tôi hy vọng nó cũng giúp được người khác.

cho Ubuntu 18.04:

sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd

3

Cuối cùng, vấn đề này dường như là udisksgắn kết hệ thống tập tin với các showexectùy chọn, ngăn chặn bất kỳ tập tin mà không kết thúc ở .exe, .bathoặc .comđược chạy.

Một câu hỏi liên quan (làm thế nào để cung cấp tùy chọn gắn tùy chỉnh cho udisks) có thể được tìm thấy ở đây: Làm cách nào để định cấu hình để ghi dữ liệu để khởi động ngay lập tức? Hóa ra bạn có thể sử dụng udevcấu hình để làm điều đó.

Là thiết lập tùy chọn gắn kết mặc định cho udisks thực sự không thể? đề xuất một giải pháp khác dựa trên udisks-glue, nhưng có vẻ ít thuyết phục hơn, vì cuối cùng nó dựa vào udisks, để có vẻ như bạn có thể thêm tùy chọn, nhưng không loại bỏ chúng, và đặc biệt showexecvẫn còn đó).

Trong mọi trường hợp, tôi có xu hướng thích điều đó để vá một tệp nhị phân.


2

Không có giải pháp nào được hiển thị hoạt động xa như tôi có thể nói để có được một chương trình tôi đã viết như một chương trình thiết bị đầu cuối Linux để chạy trong phân vùng FAT32 của mình, nhưng việc thay đổi tên tệp của chương trình để bao gồm phần mở rộng .exe đã hoạt động (cảm ơn vì mẹo) , tất cả những gì tôi đã làm là đổi tên tệp thành filename.exe cho chương trình đầu cuối mà tôi đang cố thực hiện trên phân vùng FAT32, sau đó hủy gắn kết, gắn lại và đặt quyền cho phép thực thi, sau đó chuyển sang tên tệp. exe và đặt quyền của nó và sau đó dấu kiểm sẽ dính chứ không quay lại dấu trừ và khi tôi đặt đường dẫn và nhập ./filename.exe tại dấu nhắc thiết bị chạy, chương trình sẽ chạy như bình thường và hiển thị dòng lệnh bao gồm tên tệp .exe như đã nhập, mặc dù thư mục tệp Ubuntu hiển thị tệp dưới dạng MSDOS / Windows nhưng nó chạy như một chương trình Linux.


1

Vì vậy, tôi tìm thấy một giải pháp đơn giản hơn nhiều (và an toàn hơn).

Sử dụng gparted để định dạng USB FAT32 và sau đó cho chúng tôi Phân vùng => Quản lý cờ để đặt các cờ sau: boot, lba



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.