UbuntuとWindows(具体的にはeToysと呼ばれるプログラム)の両方と互換性があるように、USBドライブにポータブルアプリをインストールしようとしています。サポートは、両方のオペレーティングシステムのアプリに既に組み込まれています-Ubuntuにはetoys.sh
、Windowsにはetoys.exe
があります。両方のシステムから読み取ることができるため、FATドライブにインストールすることにしました。これはWindowsでは正常に機能しますが、何らかの理由でUbuntuでetoys.shを実行できません。
問題はファイルにありません。フォルダ全体がローカルハードドライブにコピーされると、アプリはUbuntuで問題なく動作します。しかし、USBから実行しようとすると、テキストエディターでファイルが開きます。
その後、端末から実行しようとしましたが、メッセージが表示されましたPermission denied。
他の実行可能ファイルでも同じ問題が発生しました。
USBスティックから物事を実行する簡単な方法はありますか?
私は実際に 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
FA32ファイルシステムの制限のため、できません。
今、あなたはカンニングをすることができます:
sh etoys.sh
の代わりに./etoys.sh
を呼び出す必要に応じて、USBドライブでスクリプトを呼び出すだけの別のスクリプト(たとえば、ハードドライブにあるスクリプト)を作成することもできます。
#!/bin/bash
sh /media/USB/etoys.sh
-o mode=<value>
でデバイスをマウントすると動作するはずです
mode=value
元の権限を無視して、すべてのファイルのモードを値&0777
に設定します。読み取り許可を持つディレクトリに検索許可を追加します。値は8進数で指定されます。
最終的に、問題はudisks
がshowexec
オプションを使用してファイルシステムをマウントし、.exe
、.bat
、または.com
で終わらないファイルが実行されないようにしているようです。
関連する質問(udiskにカスタムマウントオプションを与える方法)は、ここにあります: ペンドライブにデータを即座に記録するように構成する方法?udev
構成を使用してそれを行うことができます。
disksのデフォルトのマウントオプションを設定することは本当に不可能ですか?udisks-glue
に基づく別のソリューションを提案しますが、最終的にudisks
に依存するため、納得できないようです。オプションは削除できませんが、特にshowexec
はまだ存在しています)。
いずれにせよ、私はそれをバイナリファイルにパッチするよりも好む傾向があります。
Linuxターミナルプログラムとして作成したプログラムをFAT32パーティションで実行するように指示できる限り、示されているソリューションは機能しませんでしたが、.exe拡張子を含むようにプログラムのファイル名を変更しても機能しました(ヒントをありがとう) 、FAT32パーティションで実行しようとしたターミナルプログラムのファイル名をfilename.exeに変更し、マウントを解除して再マウントし、実行を許可するディスクアクセス許可を設定してから、ファイル名に移動しました。 exeとその権限を設定すると、マイナスに戻るのではなくチェックマークが付き、パスを設定してターミナルで./filename.exeを入力すると、プログラムが正常に実行され、ファイル名を含むコマンドラインが表示されます入力された.exe。UbuntuファイルディレクトリにはファイルがMSDOS/Windowsとして表示されますが、Linuxプログラムとして実行されます。
だから私ははるかに簡単な(そしてより安全な解決策)を見つけました。
Gpartedを使用してUSB FAT32をフォーマットし、Partition => Manage Flagsを使用して次のフラグを設定します:boot、lba
umask=000
モードを使用できます:
umount /dev/sdb1
mount -o umask=000 -t vfat /dev/sdb1 /media/sdb1
ソース: wiki.linuxquestions.org 、 mount(8) の「脂肪のマウントオプション」セクション。