Vistaでcygwinのcronを動かそうとして断念していましたが、ついに動かすことができました。
前回の試みは、こちら
cronサービス用ユーザを登録する
こちらのサイトを参考にcronサービス用のユーザを登録します。
参考1参考1
ユーザの登録
専用のユーザをWindowsのコマンドで登録して管理者グループに追加します。
$ net user cron_admin <パスワード> /add /yes コマンドは正常に終了しました。 $ net localgroup <管理者グループ> cron_admin /add コマンドは正常に終了しました。 $
権限の付与
cygwinのeditrigntsコマンドで必要な権限を付与します。
想像ですが、サービスを起動するために必要な権限を付与しているように見えます。
その後、/etc/passwdファイルにcronサービス用ユーザのエントリを生成します。
$ editrights -a SeAssignPrimaryTokenPrivilege -u cron_admin $ editrights -a SeCreateTokenPrivilege -u cron_admin $ editrights -a SeIncreaseQuotaPrivilege -u cron_admin $ editrights -a SeServiceLogonRight -u cron_admin $ mkpasswd -l -u cron_admin >> /etc/passwd $
セキュリティ上の理由で機能を制限します。
ローカルログインやネットワークからのログインができないようにします。
$ editrights -a SeDenyInteractiveLogonRight -u cron_admin $ editrights -a SeDenyNetworkLogonRight -u cron_admin $ editrights -a SeDenyRemoteInteractiveLogonRight -u cron_admin $
サービスは登録しなおし
以前、登録していたサービスは、削除して再登録します。
$ cygrunsrv.exe --remove cron $ cygrunsrv -I cron -d "Cygwin cron" -p /usr/sbin/cron -a -D -u cron_admin -w <パスワード> $
しかし失敗…
コントロールパネルからサービスを起動するも、あえなく失敗…
しばらくイベントログの存在を忘れていましたが、今回は、役に立ちました。(いつもは期待を裏切られるのですが…)
cron: PID 2484: starting service `' failed: redirect_fd: open (1, /var/log/cron.log): 13, Permission denied
/var/log/cron.logを参照するとグループがSYSTEMでグループ以外書き込みできないファイルとなっていました。前回、登録したサービスでできたファイルなのでオーナに書き込み権限を付けようとしましたが…
Permission denied… オーナなのに… 削除もできないし… わけが分からん…
$ ls -l /var/log/cron.log total 53 -r--rw-r-- 1 <ユーザ> SYSTEM 73 Nov 8 23:12 cron.log
Windowsに戻ってC:\cygwin\var\log\cron.logを削除したら、あっさり消えました。
サービスの起動と確認
サービスを起動すると、今度はすんなり起動
実行を確認しました。
$ uname -a CYGWIN_NT-6.0 mbook 1.5.25(0.156/4/2) 2007-12-14 19:21 i686 Cygwin $ crontab -l # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.How72wJkjO installed on Sun Dec 23 17:51:32 2007) # (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $) * * * * * /usr/bin/date >> /tmp/date.log $ tail -f /tmp/date.log Mon Dec 24 23:05:01 2007 Mon Dec 24 23:06:02 2007 Mon Dec 24 23:07:01 2007 Mon Dec 24 23:08:02 2007