diff options
Diffstat (limited to 'source3/printing')
-rw-r--r-- | source3/printing/nt_printing.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c index 9b22ed5227..164ad58742 100644 --- a/source3/printing/nt_printing.c +++ b/source3/printing/nt_printing.c @@ -3039,16 +3039,19 @@ static SEC_DESC_BUF *construct_default_printer_sdb(TALLOC_CTX *ctx) if (winbind_lookup_name(lp_workgroup(), &owner_sid, &name_type)) { sid_append_rid(&owner_sid, DOMAIN_USER_RID_ADMIN); } else { + uint32 owner_rid; - /* Backup plan - make printer owned by admins or root. This should - emulate a lanman printer as security settings can't be - changed. */ + /* Backup plan - make printer owned by admins or root. + This should emulate a lanman printer as security + settings can't be changed. */ - if (!lookup_name( "Printer Administrators", &owner_sid, &name_type) && - !lookup_name( "Administrators", &owner_sid, &name_type) && - !lookup_name( "Administrator", &owner_sid, &name_type) && - !lookup_name("root", &owner_sid, &name_type)) { - sid_copy(&owner_sid, &global_sid_World); + sid_peek_rid(&owner_sid, &owner_rid); + + if (owner_rid != BUILTIN_ALIAS_RID_PRINT_OPS && + owner_rid != BUILTIN_ALIAS_RID_ADMINS && + owner_rid != DOMAIN_USER_RID_ADMIN && + !lookup_name("root", &owner_sid, &name_type)) { + sid_copy(&owner_sid, &global_sid_World); } } |