e17 の起動後に表示されるメッセージからエラーを潰す。
ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES
これは src/bin/e_sys_main.c にある。
if (setuid(0) != 0) { printf("ERROR: UNABLE TO ASSUME ROOT PRIVILEDGES\n"); exit(5); }
setuid がこけている。Cygwin API Reference によると setuid はきちんと動かない。
setuid is only safe against reverting the user switch after a call to one of the exec(2) functions took place. Windows doesn't support a non-revertable user switch within the context of Win32 processes.
実際にここでは -1 を返しているので、#ifndef __CYGWIN__ で切り分けて回避する。
これを回避すると、今度はそのちょっと後で ERROR: ACTION NOT ALLOWED: ... というメッセージが出る。
if (!auth_action_ok(action, uid, gid, gl, gn, egid)) { printf("ERROR: ACTION NOT ALLOWED: %s\n", action); exit(10); }
auth_action_ok は最終的に /etc/enlightenment/sysactions.conf に書かれている設定を基にいろんなアクションの可否を判定する。デフォルトだと最終行にある deny に抵触するらしい。
# put in a list of other users and groups here that are allowed or denied etc. # e.g. # user: myuser allow: * # user: another allow: suspend hibernate # deny everyone else by default user: * deny: *
これを allow に変更すれば、この問題も回避できる。