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 322296 : bool sid_check_is_unix_users(const struct dom_sid *sid) 25 : { 26 322296 : return dom_sid_equal(sid, &global_sid_Unix_Users); 27 : } 28 : 29 294573 : bool sid_check_is_in_unix_users(const struct dom_sid *sid) 30 : { 31 2788 : struct dom_sid dom_sid; 32 : 33 294573 : sid_copy(&dom_sid, sid); 34 294573 : sid_split_rid(&dom_sid, NULL); 35 : 36 294573 : return sid_check_is_unix_users(&dom_sid); 37 : } 38 : 39 23361 : 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 23361 : sid_compose(sid, &global_sid_Unix_Users, uid); 46 23361 : } 47 : 48 478128 : 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 478128 : sid_compose(sid, &global_sid_Unix_Groups, gid); 55 478128 : } 56 : 57 97291 : const char *unix_users_domain_name(void) 58 : { 59 97291 : return "Unix User"; 60 : } 61 : 62 347155 : bool sid_check_is_unix_groups(const struct dom_sid *sid) 63 : { 64 347155 : return dom_sid_equal(sid, &global_sid_Unix_Groups); 65 : } 66 : 67 319482 : bool sid_check_is_in_unix_groups(const struct dom_sid *sid) 68 : { 69 2773 : struct dom_sid dom_sid; 70 : 71 319482 : sid_copy(&dom_sid, sid); 72 319482 : sid_split_rid(&dom_sid, NULL); 73 : 74 319482 : return sid_check_is_unix_groups(&dom_sid); 75 : } 76 : 77 96975 : const char *unix_groups_domain_name(void) 78 : { 79 96975 : return "Unix Group"; 80 : }