Line data Source code
1 : /* 2 : Unix SMB/CIFS implementation. 3 : sid utility functions 4 : 5 : Copyright (C) Michael Adam 2012 6 : 7 : This program is free software; you can redistribute it and/or modify 8 : it under the terms of the GNU General Public License as published by 9 : the Free Software Foundation; either version 3 of the License, or 10 : (at your option) any later version. 11 : 12 : This program is distributed in the hope that it will be useful, 13 : but WITHOUT ANY WARRANTY; without even the implied warranty of 14 : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 : GNU General Public License for more details. 16 : 17 : You should have received a copy of the GNU General Public License 18 : along with this program. If not, see <http://www.gnu.org/licenses/>. 19 : */ 20 : 21 : #include "includes.h" 22 : #include "lib/util_sid_passdb.h" 23 : #include "lib/util_unixsids.h" 24 : #include "passdb/machine_sid.h" 25 : #include "passdb.h" 26 : 27 : /** 28 : * check whether this is an object-sid that should 29 : * be treated by the passdb, e.g. for id-mapping. 30 : */ 31 95627 : bool sid_check_object_is_for_passdb(const struct dom_sid *sid) 32 : { 33 95627 : if (sid_check_is_in_our_sam(sid) && pdb_is_responsible_for_our_sam()) { 34 963 : return true; 35 : } 36 : 37 94645 : if (sid_check_is_in_builtin(sid) && pdb_is_responsible_for_builtin()) { 38 35163 : return true; 39 : } 40 : 41 116364 : if (sid_check_is_in_wellknown_domain(sid) && 42 56892 : pdb_is_responsible_for_wellknown()) 43 : { 44 90 : return true; 45 : } 46 : 47 59372 : if (sid_check_is_in_unix_users(sid) && 48 0 : pdb_is_responsible_for_unix_users()) 49 : { 50 0 : return true; 51 : } 52 : 53 59372 : if (sid_check_is_in_unix_groups(sid) && 54 0 : pdb_is_responsible_for_unix_groups()) 55 : { 56 0 : return true; 57 : } 58 : 59 59372 : if (pdb_is_responsible_for_everything_else()) 60 : { 61 0 : return true; 62 : } 63 : 64 59356 : return false; 65 : } 66 : 67 : /** 68 : * check whether this is an object- or domain-sid that should 69 : * be treated by the passdb, e.g. for id-mapping. 70 : */ 71 0 : bool sid_check_is_for_passdb(const struct dom_sid *sid) 72 : { 73 0 : if (sid_check_is_our_sam(sid) && pdb_is_responsible_for_our_sam()) { 74 0 : return true; 75 : } 76 : 77 0 : if (sid_check_is_in_our_sam(sid) && pdb_is_responsible_for_our_sam()) { 78 0 : return true; 79 : } 80 : 81 0 : if (sid_check_is_builtin(sid) && pdb_is_responsible_for_builtin()) { 82 0 : return true; 83 : } 84 : 85 0 : if (sid_check_is_in_builtin(sid) && pdb_is_responsible_for_builtin()) { 86 0 : return true; 87 : } 88 : 89 0 : if (sid_check_is_wellknown_domain(sid, NULL) && 90 0 : pdb_is_responsible_for_wellknown()) 91 : { 92 0 : return true; 93 : } 94 : 95 0 : if (sid_check_is_in_wellknown_domain(sid) && 96 0 : pdb_is_responsible_for_wellknown()) 97 : { 98 0 : return true; 99 : } 100 : 101 0 : if (sid_check_is_unix_users(sid) && 102 0 : pdb_is_responsible_for_unix_users()) 103 : { 104 0 : return true; 105 : } 106 : 107 0 : if (sid_check_is_in_unix_users(sid) && 108 0 : pdb_is_responsible_for_unix_users()) 109 : { 110 0 : return true; 111 : } 112 : 113 0 : if (sid_check_is_unix_groups(sid) && 114 0 : pdb_is_responsible_for_unix_groups()) 115 : { 116 0 : return true; 117 : } 118 : 119 0 : if (sid_check_is_in_unix_groups(sid) && 120 0 : pdb_is_responsible_for_unix_groups()) 121 : { 122 0 : return true; 123 : } 124 : 125 0 : if (pdb_is_responsible_for_everything_else()) 126 : { 127 0 : return true; 128 : } 129 : 130 0 : return false; 131 : }