スポンサーリンク
Chromebookで利用できるLinux(ベータ)機能で、Chrome OS のファイルをLinux側に共有する「共有フォルダ」機能によって作成された「/mnt/chromeos」内のファイルに対する「chmod」が「Operation not permitted」エラーになってしまい、利用できないことに気が付きました。
この挙動に関して調べたことをメモしておきます。
目次
スポンサーリンク
共有フォルダ内でのchmodがエラーになる
共有フォルダ機能でLinux側と共有したフォルダは、Linux内では「/mnt/chromeos」以下のディレクトリにマウントされます。
これにより、手軽にChromeOS側のファイルをLinux側に渡すことができるのですが、これを利用して共有したファイルに対して実行権限を付与しようとchmodコマンドを利用したところ、次のエラーとなってしまいました。sudo chmodとしてみたり、他の権限変更を試してみても、chmodが通りません。
chmod: changing permissions of '...': Operation not permitted
mountの設定を見る
その際は別のディレクトリにファイルを移動して目的を達成してそれで終わり、としてしまったのですが、その後改めてどうしてエラーだったのか、について調べてみることにしました。
Linux側からマウントされているディレクトリであるため、まず関連する設定情報を確認してみることにしました。実行したコマンドは「$ cat /etc/mtab」です。すると出力された行の中に、「/mnt/chromeos」のマウント設定に関する情報を見つけることができました(※なお「/etc/fstab」は「# UNCONFIGURED FSTAB FOR BASE SYSTEM」のみ、でした)。
9p /mnt/chromeos 9p rw,sync,dirsync,nosuid,nodev,noexec.relatime,access=any,trans=fd,rfd=26,wfd=26 0 0
noexec設定
ここで一つ気が付いたのは、mount設定の中で「noexec」が指定されており、このディレクトリ内のファイルを実行することができない状態である、という点でした。
当初この影響でそもそもchown +xも実行できないのではないか、と思っていました。
ただし、実行権限とは無関係なchmodによる変更も失敗するため、もっと別の原因もあるような?と追加で調べてみることにしました。
ファイルシステム「9p」とchmod
いろいろ追加で調べている中で、/mnt/chromeosをマウントする際に指定されていたファイルシステム「9P(Plan 9 Filesystem Protocol)」(/etc/mtab に記載されていたファイルシステム)について調べつつ、Chromium OSのissue trackerを確認したところ、どうやらこの9p(p9)を利用することと、chownが利用できないことに関連があるようでした(「by design」とあるので、不具合というよりそもそもの仕様として、というようなイメージ)。
this is a known issue that 9p doesn't allow chmod by design.
(引用元)
I understand this is expected behavior since p9 server does not allow setattr/chmod:
(引用元)
↑のリンク先のChromium OSのソースコードへのリンクは切れてしまっているようでしたが、次のように、setattr_mode(rwxの権限の設定)が利用できない操作として扱われているようでした。
/mnt/chromeos には特別な制約がありそう
このような言及から、共有フォルダがマウントされている「/mnt/chromeos」に関しては、その他のディレクトリとは異なる制限がありそうだ、ということが分かりました。
そのため、今回は主にchmodの話でしたが、その他の制限を含め、何かエラーが発生してしまった場合は/mnt/chromeosディレクトリの外で試してみるなども検討してみると良さそうです。
参考
スポンサーリンク
スポンサーリンク