いけむランド

はてダからやってきました

road to e17 (7)

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 に変更すれば、この問題も回避できる。