Windows Vista から NTFS にシンボリックリンク機能が追加されているけど、管理者権限でしか使えないから cygwin が対応してない云々というエントリを以前 書いた。
実を言えば、ちょっとググれば、ローカルセキュリティポリシーエディタをたちあげて、「シンボリックリンクの作成」ポリシーに任意のアカウントを追加すれば使えるようになりますぞーというソリューションはすぐ出てくる。出てくるので、そのとおりにやったのだが…なぜか、やはり権限が足りねーよと cmd.exe に怒られるままなのである。謎だ。というのが 1 年前のことだ。
で、今何気なく再度ググってみたらこんなことが。つまり、上記ポリシーにアカウントを追加したとしても、そのアカウントが Administrators グループに入っている場合は別の機構が権限をフィルタリングしてしまい、結果、シンボリックの作成はやはりできないのだそうな。なに、それ。意味がわからない。
回避するには、次のいずれかを試す:
- UAC を完全に切る。もちろんおすすめできない。
- シンボリックリンクの作成権限を与えたいアカウント A を Administrators から外し、Users に含める。つまり管理ユーザから一般ユーザにする。もしローカルマシンにアカウントが A しかない場合は、先に別の管理ユーザを作成しておく必要がある。
というわけで 2. をやってみた。ほー一般ユーザにすると UAC のダイアログで管理ユーザのパスワードを求められるのか。なんか……原始的。sudo をパクればいいのに。
それにしても 1 年前はなんで見つからなかったのかなーあれだけググったのになー。
ちなみにだからといって、cygwin の ln -s が NTFS ネイティブなシンボリックリンクを作ってくれるようには、やはりならない。しかし ln -s として呼ばれたら /cygdrive/c/Windows/system32/cmd.exe /c “mklink <dst> <src>” 辺りを裏で呼び出すラッパを作れば対応できそうである。と思ったら、すでにそれっぽいのを作っている人がいた。あとで試してみる。
Pingback: 赤心慶福 — creating NTFS native symbolic link in cygwin