summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2019-02-27 16:45:07 +0100
committerJeremy Allison <jra@samba.org>2019-03-04 18:11:17 +0000
commitec8984f8dd1f8c00a489a5aaf5e51a85f0bfd3ad (patch)
tree997439e04f35ce425a1a2ae2d02d4f47c649d46b /source3
parent52e1171e21b56880f75b3e8f0be9c8fdf1503934 (diff)
downloadsamba-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.c40
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;
}
}