devmonがNTFSを自動マウントしてくれないときの対処法

目次

※注意:この記事の内容はGentoo Linux基準です。他のディストリビューションにおいては事情が少し違う可能性があります。

udevilについてくるdevmonは、起動しておくだけでリムーバブルメディアを自動マウントしてくれる。

しかし、どうやら若干複雑な動作をするようで、NTFSが自動マウントされず苦戦したのでメモを残しておく。

TL;DR

とにかく、

# chown root:root /usr/bin/udevil
# chmod -s,+x /usr/bin/udevil

を実行すればよい。

なぜ自動マウントされないか

簡潔に言えば、マウントにudisks2ではなくudevilが使用されてしまっているからである。

まず、udevilはudisksの「代用」であり、「ラッパー」ではない。マウントにはmountコマンドを使用する。
Udisks - Archwikiにて「マウントヘルパー」として紹介されていたため、私はUdisksのラッパーとばかり思い込んでしまっていた。

そして、NTFS - ArchWikiに書いてある通り、mountコマンドは明示的に指定しない限りカーネルのntfs3ドライバを使わない(udisks2はntfs3をサポートしており、わざわざ明示せずとも自動で使用してくれる)。

ここからが本題で、devmonは、まず最初にudevilを使おうとしudevilにSUIDが設定されていないときにudisksを使う。
つまり、SUIDが設定されているデフォルトの状態では、明示的に指定しない限りNTFSはマウントできないのである。

罠はもう一つある。udevilの実行ファイルの実行権限が無い場合、devmonはエラーを吐いて終了する。この場合、udisksは使用されない。

udevilの実行ファイルは/usr/bin/udevilに存在し、デフォルトではrootアカウントとpulgdevグループにのみ実行権限がある(未検証)。

結論

これらのことを踏まえると、

  1. /usr/bin/udevilの所有権を変更する
  2. /usr/bin/udevilからSUIDを削除する

ことでdevmonがudisksを使用するようになり、NTFSが自動マウントできるようになる。
これをするコマンドが冒頭のものである。

udisks, udevilはともかく、devmonの情報がなかなか見つからず、解決に時間がかかってしまったが、なんとか自動マウントできるようになったのでよかった。

なお、過去にもdevmonを使用したことはあったが、その時はGentoo Wikiより先にArch Wikiを読み、なにも考えずにSUIDを削除していたため問題にはならなかった。