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
グループにのみ実行権限がある(未検証)。
結論
これらのことを踏まえると、
/usr/bin/udevil
の所有権を変更する/usr/bin/udevil
からSUIDを削除する
ことでdevmonがudisksを使用するようになり、NTFSが自動マウントできるようになる。
これをするコマンドが冒頭のものである。
udisks, udevilはともかく、devmonの情報がなかなか見つからず、解決に時間がかかってしまったが、なんとか自動マウントできるようになったのでよかった。
なお、過去にもdevmonを使用したことはあったが、その時はGentoo Wikiより先にArch Wikiを読み、なにも考えずにSUIDを削除していたため問題にはならなかった。