個人的なメモを記していくためのページです。
sshdはサービスで動かすとsshでログオンしたシェルや子プロセスは ネットワーク上の共有フォルダにアクセスできない。
windows上でmakeが使いたくなり、cygwin上のgnumakeを使おうとしたらインストールしていなかった。この際なのでcygwinを最新のものにしようと一からインストールした。ふと sshd をサービスとして登録したらはまった。最近のcygwinではstartスクリプトを用意しなくても cygstart というコマンドがあってアプリケーションを起動できる。ところが
$ ssh -i ~/forwin WINDOWS_HOST cygstart u:/foo.pdf Unable to start 'u:\foo.pdf': The specified file was not found.
のようにエラーになってしまう。調べると
この方法における重要な制限は、SYSTEM アカウントで開始されたプロセスは、認証を必要とするネットワーク共有へとアクセス出来ないという点です。この制限は、パスワードなしでユーザコンテキストを変更したサブプロセスにも及びます。 一般的に、パスワードなしで ssh 又は rsh を利用してログインした際、ユーザはネットワークホームドライブを利用することは出来ません。 (Cygwin ユーザーズガイド)とある。従ってsshdは対話的に cygwinのシェル上で /usr/sbin/sshd を実行して使うのがよいようだ。
宿題: windows のセキュリティーモデルについて考察