コード例 #1
0
ファイル: semanage.c プロジェクト: DavidChenLiang/study
static int semanage_user_add (semanage_handle_t *handle,
                             semanage_seuser_key_t *key,
                             const char *login_name,
                             const char *seuser_name)
{
	int ret;
	semanage_seuser_t *seuser = NULL;

	ret = semanage_seuser_create (handle, &seuser);
	if (ret != 0) {
		fprintf (stderr,
		         _("Cannot create SELinux login mapping for %s\n"),
		         login_name);
		ret = 1;
		goto done;
	}

	ret = semanage_seuser_set_name (handle, seuser, login_name);
	if (ret != 0) {
		fprintf (stderr, _("Could not set name for %s\n"), login_name);
		ret = 1;
		goto done;
	}

	ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE);
	if (ret != 0) {
		fprintf (stderr,
		         _("Could not set serange for %s\n"),
		         login_name);
		ret = 1;
		goto done;
	}

	ret = semanage_seuser_set_sename (handle, seuser, seuser_name);
	if (ret != 0) {
		fprintf (stderr,
		         _("Could not set SELinux user for %s\n"),
		         login_name);
		ret = 1;
		goto done;
	}

	ret = semanage_seuser_modify_local (handle, key, seuser);
	if (ret != 0) {
		fprintf (stderr,
		         _("Could not add login mapping for %s\n"),
		         login_name);
		ret = 1;
		goto done;
	}

	ret = 0;
done:
	semanage_seuser_free (seuser);
	return ret;
}
コード例 #2
0
ファイル: sss_semanage.c プロジェクト: lhellebr/sssd
static int sss_semanage_user_add(semanage_handle_t *handle,
                                 semanage_seuser_key_t *key,
                                 const char *login_name,
                                 const char *seuser_name,
                                 const char *mls)
{
    int ret;
    semanage_seuser_t *seuser = NULL;

    ret = semanage_seuser_create(handle, &seuser);
    if (ret != 0) {
        DEBUG(SSSDBG_CRIT_FAILURE,
              "Cannot create SELinux login mapping for %s\n", login_name);
        ret = EIO;
        goto done;
    }

    ret = semanage_seuser_set_name(handle, seuser, login_name);
    if (ret != 0) {
        DEBUG(SSSDBG_CRIT_FAILURE, "Could not set name for %s\n", login_name);
        ret = EIO;
        goto done;
    }

    ret = semanage_seuser_set_mlsrange(handle, seuser,
                                       mls ? mls : DEFAULT_SERANGE);
    if (ret != 0) {
        DEBUG(SSSDBG_CRIT_FAILURE,
              "Could not set serange for %s\n", login_name);
        ret = EIO;
        goto done;
    }

    ret = semanage_seuser_set_sename(handle, seuser, seuser_name);
    if (ret != 0) {
        DEBUG(SSSDBG_CRIT_FAILURE,
              "Could not set SELinux user for %s\n", login_name);
        ret = EIO;
        goto done;
    }

    ret = semanage_seuser_modify_local(handle, key, seuser);
    if (ret != 0) {
        DEBUG(SSSDBG_CRIT_FAILURE,
              "Could not add login mapping for %s\n", login_name);
        ret = EIO;
        goto done;
    }

    ret = EOK;
done:
    semanage_seuser_free(seuser);
    return ret;
}