2013年8月10日土曜日

ubuntu上でntfsフォーマットUSBメモリ上のファイルに実行権限を付加する方法

欲求:USBメモリ上でコンパイルしてそのまま実行したい!

USBメモリ上の実行ファイルが実行できない。。。

前提条件

Ubuntu12.04
USBメモリ(ntfsフォーマット)
ntfs-3gがインストールされていること。

現状の詳細

  • ntfsフォーマットされたUSBメモリ上の実行ファイルを実行出来なかった。
  • ls -lコマンドで調べてみると、読み取り書き込み権限はあるものの実行権限が無い。
  • chmod +xコマンドを実行しても実行権限が付加されなかった。
  • 実行ファイルtestにたいして、./testとしても「許可がありません」 や、sudo ./testでも「コマンドはありません」等返ってきた。 

解決方法

/etc/fstabに該当するUSBメモリを追記して、バイナリ実行権限を付加した。
  1. blkidコマンドを使ってUUIDを調べる。/mediaディレクトリにある該当USBメモリのディレクトリ名もUUIDになっているので、そこから持ってきても良い。
  2. sudo vim /etc/fstabでfstabファイルに以下について追記する。
  3. UUID=調べたUUID /mdia/調べたUUID ntsf async,dev,exec,rw 0 1
  4. 一つ目の引数はデバイス、二つ目の引数はマウントするディレクトリ、3つ目の引数はフォーマットタイプ、4つ目の引数(コンマで繋がっているもの)はオプション、5つ目6つ目の数字はマウント設定を示す。
  5. また、4つ目の引数のうちexecがバイナリ実行権限を付加するオプションである。
  6. 保存して再起動する。

結果

該当USBメモリ上ファイルのぜんぶに実行権限がつくようになった。

参考

/etc/fstabのマウントオプション
/etc/fstabに記述されている数字の意味