1
0
mirror of https://github.com/samba-team/samba.git synced 2025-12-16 00:23:52 +03:00

added the 'lsaenumacctwithright' command to rpcclient. This allows you

to lookup what SIDs have a particular privilege (that is how
privileges are stored).
This commit is contained in:
Andrew Tridgell
-
parent f364921864
commit 3ddb5fb0dd
6 changed files with 243 additions and 5 deletions

View File

@@ -2395,7 +2395,6 @@ void init_q_remove_acct_rights(LSA_Q_REMOVE_ACCT_RIGHTS *q_q,
init_dom_sid2(&q_q->sid, sid);
q_q->removeall = removeall;
init_unistr2_array(&q_q->rights, count, rights);
q_q->count = 5;
}
@@ -2426,7 +2425,7 @@ BOOL lsa_io_q_remove_acct_rights(const char *desc, LSA_Q_REMOVE_ACCT_RIGHTS *q_q
}
/*******************************************************************
reads or writes a LSA_R_ENUM_ACCT_RIGHTS structure.
reads or writes a LSA_R_REMOVE_ACCT_RIGHTS structure.
********************************************************************/
BOOL lsa_io_r_remove_acct_rights(const char *desc, LSA_R_REMOVE_ACCT_RIGHTS *r_c, prs_struct *ps, int depth)
{
@@ -2446,3 +2445,68 @@ void init_r_remove_acct_rights(LSA_R_REMOVE_ACCT_RIGHTS *q_r)
{
DEBUG(5, ("init_r_remove_acct_rights\n"));
}
/*******************************************************************
Inits an LSA_Q_ENUM_ACCT_WITH_RIGHT structure.
********************************************************************/
void init_q_enum_acct_with_right(LSA_Q_ENUM_ACCT_WITH_RIGHT *q_q,
POLICY_HND *hnd,
const char *right)
{
DEBUG(5, ("init_q_enum_acct_with_right\n"));
q_q->pol = *hnd;
init_unistr2(&q_q->right, right, strlen(right));
init_str_hdr(&q_q->right_hdr,
q_q->right.uni_max_len*2,
q_q->right.uni_max_len*2, right?1:0);
}
/*******************************************************************
reads or writes a LSA_Q_ENUM_ACCT_WITH_RIGHT structure.
********************************************************************/
BOOL lsa_io_q_enum_acct_with_right(const char *desc, LSA_Q_ENUM_ACCT_WITH_RIGHT *q_q, prs_struct *ps, int depth)
{
prs_debug(ps, depth, desc, "lsa_io_q_enum_acct_with_right");
depth++;
if (!smb_io_pol_hnd("", &q_q->pol, ps, depth))
return False;
if (!prs_uint32("ref_id ", ps, depth, &q_q->right_hdr.buffer))
return False;
if (UNMARSHALLING(ps) && q_q->right_hdr.buffer == 0) {
return True;
}
if (!smb_io_strhdr("", &q_q->right_hdr, ps, depth))
return False;
if (!smb_io_unistr2("", &q_q->right, q_q->right_hdr.buffer, ps, depth))
return False;
return True;
}
/*******************************************************************
reads or writes a LSA_R_ENUM_ACCT_WITH_RIGHT structure.
********************************************************************/
BOOL lsa_io_r_enum_acct_with_right(const char *desc, LSA_R_ENUM_ACCT_WITH_RIGHT *r_c, prs_struct *ps, int depth)
{
prs_debug(ps, depth, desc, "lsa_io_r_enum_acct_with_right");
depth++;
if (!prs_uint32("count ", ps, depth, &r_c->count))
return False;
if (!smb_io_sid_array("sids ", &r_c->sids, ps, depth))
return False;
if(!prs_ntstatus("status", ps, depth, &r_c->status))
return False;
return True;
}