From 7d798ac485b47483c9f99c67f7be196d55587a09 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Tue, 22 Mar 2011 23:23:17 +0100 Subject: s3-passdb: move util_unixsids.c out of passdb. Guenther --- source3/Makefile.in | 2 +- source3/include/proto.h | 13 +++++ source3/lib/util_unixsids.c | 116 ++++++++++++++++++++++++++++++++++++++++ source3/passdb/proto.h | 13 ----- source3/passdb/util_unixsids.c | 117 ----------------------------------------- source3/wscript_build | 2 +- 6 files changed, 131 insertions(+), 132 deletions(-) create mode 100644 source3/lib/util_unixsids.c delete mode 100644 source3/passdb/util_unixsids.c (limited to 'source3') diff --git a/source3/Makefile.in b/source3/Makefile.in index ace5bbbba6..e6d2d249bc 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -760,7 +760,7 @@ PASSDB_GET_SET_OBJ = passdb/pdb_get_set.o PASSDB_OBJ = $(PASSDB_GET_SET_OBJ) passdb/passdb.o passdb/pdb_interface.o \ lib/util_wellknown.o passdb/util_builtin.o passdb/pdb_compat.o \ - passdb/util_unixsids.o passdb/lookup_sid.o \ + lib/util_unixsids.o passdb/lookup_sid.o \ passdb/login_cache.o @PDB_STATIC@ \ passdb/account_pol.o $(PRIVILEGES_OBJ) \ lib/util_nscd.o lib/winbind_util.o $(SERVER_MUTEX_OBJ) \ diff --git a/source3/include/proto.h b/source3/include/proto.h index 01ec4bb4c1..c359728064 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -4710,4 +4710,17 @@ bool lookup_wellknown_sid(TALLOC_CTX *mem_ctx, const struct dom_sid *sid, bool lookup_wellknown_name(TALLOC_CTX *mem_ctx, const char *name, struct dom_sid *sid, const char **domain); +/* The following definitions come from lib/util_unixsids.c */ + +bool sid_check_is_unix_users(const struct dom_sid *sid); +bool sid_check_is_in_unix_users(const struct dom_sid *sid); +void uid_to_unix_users_sid(uid_t uid, struct dom_sid *sid); +void gid_to_unix_groups_sid(gid_t gid, struct dom_sid *sid); +const char *unix_users_domain_name(void); +bool lookup_unix_user_name(const char *name, struct dom_sid *sid); +bool sid_check_is_unix_groups(const struct dom_sid *sid); +bool sid_check_is_in_unix_groups(const struct dom_sid *sid); +const char *unix_groups_domain_name(void); +bool lookup_unix_group_name(const char *name, struct dom_sid *sid); + #endif /* _PROTO_H_ */ diff --git a/source3/lib/util_unixsids.c b/source3/lib/util_unixsids.c new file mode 100644 index 0000000000..8db66d6e89 --- /dev/null +++ b/source3/lib/util_unixsids.c @@ -0,0 +1,116 @@ +/* + Unix SMB/CIFS implementation. + Translate unix-defined names to SIDs and vice versa + Copyright (C) Volker Lendecke 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "includes.h" +#include "system/passwd.h" +#include "../libcli/security/security.h" +#include "../lib/util/util_pw.h" + +bool sid_check_is_unix_users(const struct dom_sid *sid) +{ + return dom_sid_equal(sid, &global_sid_Unix_Users); +} + +bool sid_check_is_in_unix_users(const struct dom_sid *sid) +{ + struct dom_sid dom_sid; + + sid_copy(&dom_sid, sid); + sid_split_rid(&dom_sid, NULL); + + return sid_check_is_unix_users(&dom_sid); +} + +void uid_to_unix_users_sid(uid_t uid, struct dom_sid *sid) +{ + /* + * This can never fail, we know that global_sid_Unix_Users is + * short enough for a domain sid. + */ + sid_compose(sid, &global_sid_Unix_Users, uid); +} + +void gid_to_unix_groups_sid(gid_t gid, struct dom_sid *sid) +{ + /* + * This can never fail, we know that global_sid_Unix_Groups is + * short enough for a domain sid. + */ + sid_compose(sid, &global_sid_Unix_Groups, gid); +} + +const char *unix_users_domain_name(void) +{ + return "Unix User"; +} + +bool lookup_unix_user_name(const char *name, struct dom_sid *sid) +{ + struct passwd *pwd; + bool ret; + + pwd = Get_Pwnam_alloc(talloc_tos(), name); + if (pwd == NULL) { + return False; + } + + /* + * For 64-bit uid's we have enough space in the whole SID, + * should they become necessary + */ + ret = sid_compose(sid, &global_sid_Unix_Users, pwd->pw_uid); + TALLOC_FREE(pwd); + return ret; +} + +bool sid_check_is_unix_groups(const struct dom_sid *sid) +{ + return dom_sid_equal(sid, &global_sid_Unix_Groups); +} + +bool sid_check_is_in_unix_groups(const struct dom_sid *sid) +{ + struct dom_sid dom_sid; + + sid_copy(&dom_sid, sid); + sid_split_rid(&dom_sid, NULL); + + return sid_check_is_unix_groups(&dom_sid); +} + +const char *unix_groups_domain_name(void) +{ + return "Unix Group"; +} + +bool lookup_unix_group_name(const char *name, struct dom_sid *sid) +{ + struct group *grp; + + grp = sys_getgrnam(name); + if (grp == NULL) { + return False; + } + + /* + * For 64-bit gid's we have enough space in the whole SID, + * should they become necessary + */ + return sid_compose(sid, &global_sid_Unix_Groups, grp->gr_gid); +} diff --git a/source3/passdb/proto.h b/source3/passdb/proto.h index 8680a09704..a64985c709 100644 --- a/source3/passdb/proto.h +++ b/source3/passdb/proto.h @@ -296,19 +296,6 @@ NTSTATUS pdb_wbc_sam_init(void); NTSTATUS pdb_tdbsam_init(void); -/* The following definitions come from passdb/util_unixsids.c */ - -bool sid_check_is_unix_users(const struct dom_sid *sid); -bool sid_check_is_in_unix_users(const struct dom_sid *sid); -void uid_to_unix_users_sid(uid_t uid, struct dom_sid *sid); -void gid_to_unix_groups_sid(gid_t gid, struct dom_sid *sid); -const char *unix_users_domain_name(void); -bool lookup_unix_user_name(const char *name, struct dom_sid *sid); -bool sid_check_is_unix_groups(const struct dom_sid *sid); -bool sid_check_is_in_unix_groups(const struct dom_sid *sid); -const char *unix_groups_domain_name(void); -bool lookup_unix_group_name(const char *name, struct dom_sid *sid); - /* The following definitions come from passdb/pdb_util.c */ NTSTATUS create_builtin_users(const struct dom_sid *sid); diff --git a/source3/passdb/util_unixsids.c b/source3/passdb/util_unixsids.c deleted file mode 100644 index e6f73a1443..0000000000 --- a/source3/passdb/util_unixsids.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - Unix SMB/CIFS implementation. - Translate unix-defined names to SIDs and vice versa - Copyright (C) Volker Lendecke 2005 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#include "includes.h" -#include "passdb.h" -#include "system/passwd.h" -#include "../libcli/security/security.h" -#include "../lib/util/util_pw.h" - -bool sid_check_is_unix_users(const struct dom_sid *sid) -{ - return dom_sid_equal(sid, &global_sid_Unix_Users); -} - -bool sid_check_is_in_unix_users(const struct dom_sid *sid) -{ - struct dom_sid dom_sid; - - sid_copy(&dom_sid, sid); - sid_split_rid(&dom_sid, NULL); - - return sid_check_is_unix_users(&dom_sid); -} - -void uid_to_unix_users_sid(uid_t uid, struct dom_sid *sid) -{ - /* - * This can never fail, we know that global_sid_Unix_Users is - * short enough for a domain sid. - */ - sid_compose(sid, &global_sid_Unix_Users, uid); -} - -void gid_to_unix_groups_sid(gid_t gid, struct dom_sid *sid) -{ - /* - * This can never fail, we know that global_sid_Unix_Groups is - * short enough for a domain sid. - */ - sid_compose(sid, &global_sid_Unix_Groups, gid); -} - -const char *unix_users_domain_name(void) -{ - return "Unix User"; -} - -bool lookup_unix_user_name(const char *name, struct dom_sid *sid) -{ - struct passwd *pwd; - bool ret; - - pwd = Get_Pwnam_alloc(talloc_tos(), name); - if (pwd == NULL) { - return False; - } - - /* - * For 64-bit uid's we have enough space in the whole SID, - * should they become necessary - */ - ret = sid_compose(sid, &global_sid_Unix_Users, pwd->pw_uid); - TALLOC_FREE(pwd); - return ret; -} - -bool sid_check_is_unix_groups(const struct dom_sid *sid) -{ - return dom_sid_equal(sid, &global_sid_Unix_Groups); -} - -bool sid_check_is_in_unix_groups(const struct dom_sid *sid) -{ - struct dom_sid dom_sid; - - sid_copy(&dom_sid, sid); - sid_split_rid(&dom_sid, NULL); - - return sid_check_is_unix_groups(&dom_sid); -} - -const char *unix_groups_domain_name(void) -{ - return "Unix Group"; -} - -bool lookup_unix_group_name(const char *name, struct dom_sid *sid) -{ - struct group *grp; - - grp = sys_getgrnam(name); - if (grp == NULL) { - return False; - } - - /* - * For 64-bit gid's we have enough space in the whole SID, - * should they become necessary - */ - return sid_compose(sid, &global_sid_Unix_Groups, grp->gr_gid); -} diff --git a/source3/wscript_build b/source3/wscript_build index 933dcf6105..c03a6737bb 100755 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -228,7 +228,7 @@ PASSDB_GET_SET_SRC = '''passdb/pdb_get_set.c''' PASSDB_SRC = '''${PASSDB_GET_SET_SRC} passdb/passdb.c lib/util_wellknown.c passdb/util_builtin.c passdb/pdb_compat.c - passdb/util_unixsids.c passdb/lookup_sid.c + lib/util_unixsids.c passdb/lookup_sid.c passdb/login_cache.c passdb/account_pol.c ${PRIVILEGES_SRC} lib/util_nscd.c lib/winbind_util.c ${SERVER_MUTEX_SRC} -- cgit