Raspberry Piを業務で使用する時は
fsprotectとaufsを使用し、
いつでも電源切断可能な状態で運用している。
情報を保存する必要がある場合には
USBメモリに保存する。
今回、顧客からプログラムのアップデート機能を
追加して欲しいという要望があった。
プログラムをUSBメモリに置けば良いかと考え、
試すが動かない。
調べるとUSBメモリ上のファイルに
実行可能許可ビット(+x)が付いていない。
chmod +xしても付かない。
ちなみにファイルシステムは
Windows機からも使用可能なようにvfatにしてある。
おなじくvfatでmountしてある /bootパーティションは
すべてのファイルに +x がついている。
よく見る風景だ。
なんやかんや調べたところ、USBメモリは
X-window動作→ファイルマネージャ(pcmanfm)が
udisks2を使用してmount,この際 showexec という
オプションを付けているため +xがつかないらしい。
+xをつけないのは、セキュリティの面から理解できる。
しかし、今回は何とかして+xをつけたい。
いろいろ調べて udisks2を止めて usbmountでマウントすると
オプションを指定できるとか、 udisks2が使用する mountコマンド
があるフォルダーを指定できるので、ここに偽のmountコマンドを
置いてオプションをいじる方法などみつけたが、いまいち
気が乗らない。
調査の途中、udisks2のソースで"showexec"かかれた場所は
特定していた。 udisksはパッケージで管理されているので、
ソース入手、コンパイル等はできるはず、ということで
やってみたら無事 +x をつけることができるようになった。
くわしくは
Qiitaに書いたので参照して欲しい。