web-dev-qa-db-ja.com

FAT USBドライブからファイルを実行するにはどうすればよいですか?

UbuntuとWindows(具体的にはeToysと呼ばれるプログラム)の両方と互換性があるように、USBドライブにポータブルアプリをインストールしようとしています。サポートは、両方のオペレーティングシステムのアプリに既に組み込まれています-Ubuntuにはetoys.sh、Windowsにはetoys.exeがあります。両方のシステムから読み取ることができるため、FATドライブにインストールすることにしました。これはWindowsでは正常に機能しますが、何らかの理由でUbuntuでetoys.shを実行できません。

問題はファイルにありません。フォルダ全体がローカルハードドライブにコピーされると、アプリはUbuntuで問題なく動作します。しかし、USBから実行しようとすると、テキストエディターでファイルが開きます。

その後、端末から実行しようとしましたが、メッセージが表示されましたPermission denied。

他の実行可能ファイルでも同じ問題が発生しました。

USBスティックから物事を実行する簡単な方法はありますか?

10
Derek Redfern

私は実際に http://ubuntuforums.org/showthread.php?t=1665289 で問題を解決する素晴らしい解決策を見つけました。

基本的に、コマンドを実行するように言っています

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

また、showexecオプションを使用してディスクが自動マウントされないようにします。

私は自分の質問に答えるのは好きではありませんが、これは私にとってはうまくいき、他の人にも役立つことを願っています。

ubuntu 18.04の場合:

Sudo sed -i -e 's|showexec|\x00\x00\x00\x00\x00\x00\x00\x00|g' /usr/lib/udisks2/udisksd
7
Derek Redfern

FA32ファイルシステムの制限のため、できません。

今、あなたはカンニングをすることができます:

  1. sh etoys.shの代わりに./etoys.shを呼び出す
  2. 必要に応じて、USBドライブでスクリプトを呼び出すだけの別のスクリプト(たとえば、ハードドライブにあるスクリプト)を作成することもできます。

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

-o mode=<value>でデバイスをマウントすると動作するはずです

mode=value

元の権限を無視して、すべてのファイルのモードを値&0777に設定します。読み取り許可を持つディレクトリに検索許可を追加します。値は8進数で指定されます。

8
Bonsi Scott

最終的に、問題はudisksshowexecオプションを使用してファイルシステムをマウントし、.exe.bat、または.comで終わらないファイルが実行されないようにしているようです。

関連する質問(udiskにカスタムマウントオプションを与える方法)は、ここにあります: ペンドライブにデータを即座に記録するように構成する方法?udev構成を使用してそれを行うことができます。

disksのデフォルトのマウントオプションを設定することは本当に不可能ですか?udisks-glueに基づく別のソリューションを提案しますが、最終的にudisksに依存するため、納得できないようです。オプションは削除できませんが、特にshowexecはまだ存在しています)。

いずれにせよ、私はそれをバイナリファイルにパッチするよりも好む傾向があります。

3
Virgile

Linuxターミナルプログラムとして作成したプログラムをFAT32パーティションで実行するように指示できる限り、示されているソリューションは機能しませんでしたが、.exe拡張子を含むようにプログラムのファイル名を変更しても機能しました(ヒントをありがとう) 、FAT32パーティションで実行しようとしたターミナルプログラムのファイル名をfilename.exeに変更し、マウントを解除して再マウントし、実行を許可するディスクアクセス許可を設定してから、ファイル名に移動しました。 exeとその権限を設定すると、マイナスに戻るのではなくチェックマークが付き、パスを設定してターミナルで./filename.exeを入力すると、プログラムが正常に実行され、ファイル名を含むコマンドラインが表示されます入力された.exe。UbuntuファイルディレクトリにはファイルがMSDOS/Windowsとして表示されますが、Linuxプログラムとして実行されます。

2
Dan Hudgins

だから私ははるかに簡単な(そしてより安全な解決策)を見つけました。

Gpartedを使用してUSB FAT32をフォーマットし、Partition => Manage Flagsを使用して次のフラグを設定します:boot、lba

1
MrSteve

umask=000モードを使用できます:

umount /dev/sdb1
mount -o umask=000 -t vfat /dev/sdb1 /media/sdb1

ソース: wiki.linuxquestions.orgmount(8) の「脂肪のマウントオプション」セクション。

0
pevik