diff options
author | Ralph Boehme <slow@samba.org> | 2019-02-27 16:45:07 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2019-03-04 18:11:17 +0000 |
commit | ec8984f8dd1f8c00a489a5aaf5e51a85f0bfd3ad (patch) | |
tree | 997439e04f35ce425a1a2ae2d02d4f47c649d46b /source3 | |
parent | 52e1171e21b56880f75b3e8f0be9c8fdf1503934 (diff) | |
download | samba-ec8984f8dd1f8c00a489a5aaf5e51a85f0bfd3ad.tar.gz |
smbcacls: add -x argument, prints maximum access
Signed-off-by: Ralph Boehme <slow@samba.org>
Diffstat (limited to 'source3')
-rw-r--r-- | source3/utils/smbcacls.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/source3/utils/smbcacls.c b/source3/utils/smbcacls.c index a3a40e9eeb9..b61d11df860 100644 --- a/source3/utils/smbcacls.c +++ b/source3/utils/smbcacls.c @@ -40,6 +40,7 @@ static int test_args; static int sddl; static int query_sec_info = -1; static int set_sec_info = -1; +static bool want_mxac; static const char *domain_sid = NULL; @@ -360,11 +361,32 @@ static bool set_secdesc(struct cli_state *cli, const char *filename, } /***************************************************** +get maximum access for a file +*******************************************************/ +static int cacl_mxac(struct cli_state *cli, const char *filename) +{ + NTSTATUS status; + uint32_t mxac; + + status = cli_query_mxac(cli, filename, &mxac); + if (!NT_STATUS_IS_OK(status)) { + printf("Failed to get mxac: %s\n", nt_errstr(status)); + return EXIT_FAILED; + } + + printf("Maximum access: 0x%x\n", mxac); + + return EXIT_OK; +} + + +/***************************************************** dump the acls for a file *******************************************************/ static int cacl_dump(struct cli_state *cli, const char *filename, bool numeric) { struct security_descriptor *sd; + int ret; if (test_args) { return EXIT_OK; @@ -386,6 +408,13 @@ static int cacl_dump(struct cli_state *cli, const char *filename, bool numeric) sec_desc_print(cli, stdout, sd, numeric); } + if (want_mxac) { + ret = cacl_mxac(cli, filename); + if (ret != EXIT_OK) { + return ret; + } + } + return EXIT_OK; } @@ -910,6 +939,14 @@ int main(int argc, char *argv[]) .descrip = "Set the max protocol level", .argDescrip = "LEVEL", }, + { + .longName = "maximum-access", + .shortName = 'x', + .argInfo = POPT_ARG_NONE, + .arg = NULL, + .val = 'x', + .descrip = "Query maximum persmissions", + }, POPT_COMMON_SAMBA POPT_COMMON_CONNECTION POPT_COMMON_CREDENTIALS @@ -975,6 +1012,9 @@ int main(int argc, char *argv[]) case 'm': lp_set_cmdline("client max protocol", poptGetOptArg(pc)); break; + case 'x': + want_mxac = true; + break; } } |