Revert "wbinfo: remove --set-uid-mapping - winbindd does not implement that any more."
authorMichael Adam <obnox@samba.org>
Thu, 10 Feb 2011 10:04:51 +0000 (11:04 +0100)
committerMichael Adam <obnox@samba.org>
Thu, 10 Feb 2011 12:57:32 +0000 (13:57 +0100)
This reverts commit 0e90d01d53ee197a6451b7c55c2afa74e0d8b0bb.

Undo the library version bump.

nsswitch/wbinfo.c

index e97abbf0efed71b3f8224f0c9cb8bd3f1d475a57..caa37f3c9ed0725c1f08c9e32d807205bd032a75 100644 (file)
@@ -1040,6 +1040,35 @@ static bool wbinfo_allocate_gid(void)
        return true;
 }
 
+static bool wbinfo_set_uid_mapping(uid_t uid, const char *sid_str)
+{
+       wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
+       struct wbcDomainSid sid;
+
+       /* Send request */
+
+       wbc_status = wbcStringToSid(sid_str, &sid);
+       if (!WBC_ERROR_IS_OK(wbc_status)) {
+               d_fprintf(stderr, "failed to call wbcStringToSid: %s\n",
+                         wbcErrorString(wbc_status));
+               return false;
+       }
+
+       wbc_status = wbcSetUidMapping(uid, &sid);
+       if (!WBC_ERROR_IS_OK(wbc_status)) {
+               d_fprintf(stderr, "failed to call wbcSetUidMapping: %s\n",
+                         wbcErrorString(wbc_status));
+               return false;
+       }
+
+       /* Display response */
+
+       d_printf("uid %u now mapped to sid %s\n",
+               (unsigned int)uid, sid_str);
+
+       return true;
+}
+
 static bool wbinfo_set_gid_mapping(gid_t gid, const char *sid_str)
 {
        wbcErr wbc_status = WBC_ERR_UNKNOWN_FAILURE;
@@ -1923,6 +1952,7 @@ enum {
        OPT_USERSIDS,
        OPT_ALLOCATE_UID,
        OPT_ALLOCATE_GID,
+       OPT_SET_UID_MAPPING,
        OPT_SET_GID_MAPPING,
        OPT_REMOVE_UID_MAPPING,
        OPT_REMOVE_GID_MAPPING,
@@ -1986,6 +2016,7 @@ int main(int argc, char **argv, char **envp)
                  "Get a new UID out of idmap" },
                { "allocate-gid", 0, POPT_ARG_NONE, 0, OPT_ALLOCATE_GID,
                  "Get a new GID out of idmap" },
+               { "set-uid-mapping", 0, POPT_ARG_STRING, &string_arg, OPT_SET_UID_MAPPING, "Create or modify uid to sid mapping in idmap", "UID,SID" },
                { "set-gid-mapping", 0, POPT_ARG_STRING, &string_arg, OPT_SET_GID_MAPPING, "Create or modify gid to sid mapping in idmap", "GID,SID" },
                { "remove-uid-mapping", 0, POPT_ARG_STRING, &string_arg, OPT_REMOVE_UID_MAPPING, "Remove uid to sid mapping in idmap", "UID,SID" },
                { "remove-gid-mapping", 0, POPT_ARG_STRING, &string_arg, OPT_REMOVE_GID_MAPPING, "Remove gid to sid mapping in idmap", "GID,SID" },
@@ -2188,6 +2219,16 @@ int main(int argc, char **argv, char **envp)
                                goto done;
                        }
                        break;
+               case OPT_SET_UID_MAPPING:
+                       if (!parse_mapping_arg(string_arg, &int_subarg,
+                               &string_subarg) ||
+                           !wbinfo_set_uid_mapping(int_subarg, string_subarg))
+                       {
+                               d_fprintf(stderr, "Could not create or modify "
+                                         "uid to sid mapping\n");
+                               goto done;
+                       }
+                       break;
                case OPT_SET_GID_MAPPING:
                        if (!parse_mapping_arg(string_arg, &int_subarg,
                                &string_subarg) ||