Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : Translate unix-defined names to SIDs and vice versa 4 : Copyright (C) Volker Lendecke 2005 5 : 6 : This program is free software; you can redistribute it and/or modify 7 : it under the terms of the GNU General Public License as published by 8 : the Free Software Foundation; either version 3 of the License, or 9 : (at your option) any later version. 10 : 11 : This program is distributed in the hope that it will be useful, 12 : but WITHOUT ANY WARRANTY; without even the implied warranty of 13 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 : GNU General Public License for more details. 15 : 16 : You should have received a copy of the GNU General Public License 17 : along with this program. If not, see <http://www.gnu.org/licenses/>. 18 : */ 19 : 20 : #include "replace.h" 21 : #include "util_unixsids.h" 22 : #include "../libcli/security/security.h" 23 : 24 324611 : bool sid_check_is_unix_users(const struct dom_sid *sid) 25 : { 26 324611 : return dom_sid_equal(sid, &global_sid_Unix_Users); 27 : } 28 : 29 296852 : bool sid_check_is_in_unix_users(const struct dom_sid *sid) 30 : { 31 2788 : struct dom_sid dom_sid; 32 : 33 296852 : sid_copy(&dom_sid, sid); 34 296852 : sid_split_rid(&dom_sid, NULL); 35 : 36 296852 : return sid_check_is_unix_users(&dom_sid); 37 : } 38 : 39 23771 : void uid_to_unix_users_sid(uid_t uid, struct dom_sid *sid) 40 : { 41 : /* 42 : * This can never fail, we know that global_sid_Unix_Users is 43 : * short enough for a domain sid. 44 : */ 45 23771 : sid_compose(sid, &global_sid_Unix_Users, uid); 46 23771 : } 47 : 48 498445 : void gid_to_unix_groups_sid(gid_t gid, struct dom_sid *sid) 49 : { 50 : /* 51 : * This can never fail, we know that global_sid_Unix_Groups is 52 : * short enough for a domain sid. 53 : */ 54 498445 : sid_compose(sid, &global_sid_Unix_Groups, gid); 55 498445 : } 56 : 57 108915 : const char *unix_users_domain_name(void) 58 : { 59 108915 : return "Unix User"; 60 : } 61 : 62 349814 : bool sid_check_is_unix_groups(const struct dom_sid *sid) 63 : { 64 349814 : return dom_sid_equal(sid, &global_sid_Unix_Groups); 65 : } 66 : 67 322105 : bool sid_check_is_in_unix_groups(const struct dom_sid *sid) 68 : { 69 2773 : struct dom_sid dom_sid; 70 : 71 322105 : sid_copy(&dom_sid, sid); 72 322105 : sid_split_rid(&dom_sid, NULL); 73 : 74 322105 : return sid_check_is_unix_groups(&dom_sid); 75 : } 76 : 77 108599 : const char *unix_groups_domain_name(void) 78 : { 79 108599 : return "Unix Group"; 80 : }