Windows8 + cygwin + sshd

Win8SSHDが機能しない>
Windows8Cygwinを入れたがしばらくSSHDが機能していなかった。
それが今日やっとうまくいったのでメモメモ。

Windows8は権限やら認証やらXPとはちょっと違っているようなので
次の注意を要する。

<動かなかった原因>
CYGWINのinitをサービスとして起動しているが、
デフォルトでユーザSYSTEMで起動している。しかし、SYSTEMユーザは
Windows8ではsetruuidの権限がなかった。
(実行ユーザをSSHログインユーザとして実行する権限)

<対策>
権限のあるrootユーザを作成して対応する。

まずは、
rootユーザを用意する。
net user root xxxxxxxx /add /fullname:"cygwin daemon"

Administratorsグループに追加
net localgroup Administrators root /add

以下の権限を付与(editrights -a SeAssignPrimaryTokenPrivilege -u root)
$ editrights -l -u root
SeAssignPrimaryTokenPrivilege
SeIncreaseQuotaPrivilege
SeCreateTokenPrivilege
SeServiceLogonRight
SeDenyInteractiveLogonRight
SeDenyNetworkLogonRight
SeDenyRemoteInteractiveLogonRight

パスワードファイル、グループファイルの更新
mkgroup -l > ..\etc\group
mkpasswd -l > ..\etc\passwd

/varのファイルのオーナーとグループを設定
chmod -R root:Addministrators /var

CYGWINのinitのサービスのアカウントをSYSTEMからrootに変更
コンピュータの管理→サービス→CYGWIN init
これをダブルクリックして、「ログオン」タブでアカウントにrootを設定する。

これでinitを停止/開始すればSSHDが機能しだす。

以上