書いてる人: 高橋カヲル | [mixi] | [PGP] | [RSS]
Muesli と Contrex ばかりの生活は丈夫なハラを作ると思うのだがどうよ。
というのはめんどくさい、というハナシ。基本的にアカウントを作りたくない場合は非トンネルモード、アカウントがすでにある場合はトンネルモードってのを想定してるのにムチャをやろうってんだから面倒なのは当たり前だな。
-t オプションをつけて kick した時点で、通常の認証とは別の扱いになる。
if (get_access(b, AUTHENTICATED) >= required
&& b->tunnel && strcmp(mech, "EXTERNAL") == 0)
{
apr_uid_t uid;
apr_gid_t gid;
if (!mecharg) /* Must be present */
return svn_ra_svn_write_tuple(conn, pool, "w(c)", "failure",
"Mechanism argument must be present");
if (apr_uid_current(&uid;, &gid;, pool) != APR_SUCCESS
|| apr_uid_name_get((char **) &b-;>user, uid, pool) != APR_SUCCESS)
return svn_ra_svn_write_tuple(conn, pool, "w(c)", "failure",
"Can't determine username");
if (*mecharg && strcmp(mecharg, b->user) != 0)
return svn_ra_svn_write_tuple(conn, pool, "w(c)", "failure",
"Requested username does not match");
SVN_ERR(svn_ra_svn_write_tuple(conn, pool, "w()", "success"));
*success = TRUE;
return SVN_NO_ERROR;
}
apr_uid_current(&uid;, &gid;, pool) は単に getuid(), getgid() しているだけ、apr_uid_name_get((char **) &b-;>user, uid, pool) は getpwuid_r() か getpwuid() が呼ばれる。 strcmp(mecharg, b->user) して確認まで取られる。同じ uid に複数の login name を割り振っても不幸になるだけ。
さて、どうしてくれりゃいいんだか。
Powered by 早起き生活