mirror of
https://github.com/samba-team/samba.git
synced 2025-01-12 09:18:10 +03:00
r16064: Bug fix for another one Tom Bork has reported:
'valid users = +unixgroup' failed with smbpasswd if 'unixgroup' has a (non-algorithmic) group mapping. Thanks a lot! People out there listening, please test current code, this release is **BIG** :-) Volker
This commit is contained in:
parent
5a37aba105
commit
8f9ba5f96c
@ -43,6 +43,7 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
|
||||
DOM_SID sid;
|
||||
enum SID_NAME_USE type;
|
||||
TALLOC_CTX *tmp_ctx = talloc_new(mem_ctx);
|
||||
struct group *grp;
|
||||
|
||||
if (tmp_ctx == NULL) {
|
||||
DEBUG(0, ("talloc_new failed\n"));
|
||||
@ -128,8 +129,27 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
|
||||
* the expansion of group names coming in from smb.conf
|
||||
*/
|
||||
|
||||
if (flags & LOOKUP_NAME_GROUP) {
|
||||
struct group *grp;
|
||||
if ((flags & LOOKUP_NAME_GROUP) && ((grp = getgrnam(name)) != NULL)) {
|
||||
|
||||
GROUP_MAP map;
|
||||
|
||||
if (pdb_getgrgid(&map, grp->gr_gid)) {
|
||||
/* The hack gets worse. Handle the case where we have
|
||||
* 'force group = +unixgroup' but "unixgroup" has a
|
||||
* group mapping */
|
||||
|
||||
if (sid_check_is_in_builtin(&map.sid)) {
|
||||
domain = talloc_strdup(
|
||||
tmp_ctx, builtin_domain_name());
|
||||
} else {
|
||||
domain = talloc_strdup(
|
||||
tmp_ctx, get_global_sam_name());
|
||||
}
|
||||
|
||||
sid_copy(&sid, &map.sid);
|
||||
type = map.sid_name_use;
|
||||
goto ok;
|
||||
}
|
||||
|
||||
/* If we are using the smbpasswd backend, we need to use the
|
||||
* algorithmic mapping for the unix group we find. This is
|
||||
@ -137,7 +157,7 @@ BOOL lookup_name(TALLOC_CTX *mem_ctx,
|
||||
* gid list we got from initgroups() we use gid_to_sid() that
|
||||
* uses algorithmic mapping if pdb_rid_algorithm() is true. */
|
||||
|
||||
if (pdb_rid_algorithm() && ((grp = getgrnam(name)) != NULL) &&
|
||||
if (pdb_rid_algorithm() &&
|
||||
(grp->gr_gid < max_algorithmic_gid())) {
|
||||
domain = talloc_strdup(tmp_ctx, get_global_sam_name());
|
||||
sid_compose(&sid, get_global_sam_sid(),
|
||||
|
Loading…
Reference in New Issue
Block a user