mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
sharesec: Implement --view-all
Listing individual shares can be quite slow when you have a lot of shares. This implements a --view-all option that prints something like [share1] REVISION:1 OWNER:(NULL SID) GROUP:(NULL SID) ACL:S-1-1-0:ALLOWED/0/FULL [share2] REVISION:1 OWNER:(NULL SID) GROUP:(NULL SID) ACL:S-1-1-0:ALLOWED/0/FULL Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Michael Adam <obnox@samba.org>
This commit is contained in:
parent
4ee73fd97b
commit
780e2b092d
@ -36,7 +36,8 @@ enum acl_mode { SMB_ACL_DELETE,
|
||||
SMB_SD_DELETE,
|
||||
SMB_SD_SETSDDL,
|
||||
SMB_SD_VIEWSDDL,
|
||||
SMB_ACL_VIEW };
|
||||
SMB_ACL_VIEW,
|
||||
SMB_ACL_VIEW_ALL };
|
||||
|
||||
struct perm_value {
|
||||
const char *perm;
|
||||
@ -432,6 +433,9 @@ static int change_share_sec(TALLOC_CTX *mem_ctx, const char *sharename, char *th
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case SMB_ACL_VIEW_ALL:
|
||||
/* should not happen */
|
||||
return 0;
|
||||
case SMB_ACL_VIEW:
|
||||
sec_desc_print( stdout, old);
|
||||
return 0;
|
||||
@ -565,6 +569,10 @@ static int view_sharesec_sddl(const char *sharename)
|
||||
main program
|
||||
********************************************************************/
|
||||
|
||||
enum {
|
||||
OPT_VIEW_ALL = 1000,
|
||||
};
|
||||
|
||||
int main(int argc, const char *argv[])
|
||||
{
|
||||
int opt;
|
||||
@ -588,6 +596,8 @@ int main(int argc, const char *argv[])
|
||||
{ "viewsddl", 'V', POPT_ARG_NONE, the_acl, 'V',
|
||||
"View the SD in sddl format" },
|
||||
{ "view", 'v', POPT_ARG_NONE, NULL, 'v', "View current share permissions" },
|
||||
{ "view-all", 0, POPT_ARG_NONE, NULL, OPT_VIEW_ALL,
|
||||
"View all current share permissions" },
|
||||
{ "machine-sid", 'M', POPT_ARG_NONE, NULL, 'M', "Initialize the machine SID" },
|
||||
{ "force", 'F', POPT_ARG_NONE, NULL, 'F', "Force storing the ACL", "ACLS" },
|
||||
POPT_COMMON_SAMBA
|
||||
@ -656,6 +666,9 @@ int main(int argc, const char *argv[])
|
||||
case 'M':
|
||||
initialize_sid = True;
|
||||
break;
|
||||
case OPT_VIEW_ALL:
|
||||
mode = SMB_ACL_VIEW_ALL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -683,6 +696,25 @@ int main(int argc, const char *argv[])
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (mode == SMB_ACL_VIEW_ALL) {
|
||||
int i;
|
||||
|
||||
for (i=0; i<lp_numservices(); i++) {
|
||||
TALLOC_CTX *frame = talloc_stackframe();
|
||||
const char *service = lp_servicename(frame, i);
|
||||
|
||||
if (service == NULL) {
|
||||
continue;
|
||||
}
|
||||
|
||||
printf("[%s]\n", service);
|
||||
change_share_sec(frame, service, NULL, SMB_ACL_VIEW);
|
||||
printf("\n");
|
||||
TALLOC_FREE(frame);
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* get the sharename */
|
||||
|
||||
if(!poptPeekArg(pc)) {
|
||||
@ -711,6 +743,7 @@ int main(int argc, const char *argv[])
|
||||
break;
|
||||
}
|
||||
|
||||
done:
|
||||
talloc_destroy(ctx);
|
||||
|
||||
return retval;
|
||||
|
Loading…
Reference in New Issue
Block a user