⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.c

📁 samba最新软件
💻 C
📖 第 1 页 / 共 5 页
字号:
****************************************************************************/static int cmd_acl(struct smbclient_context *ctx, const char **args){	char *fname;	union smb_fileinfo query;	NTSTATUS status;	int fnum;	if (!args[1]) {		d_printf("acl <filename>\n");		return 1;	}	fname = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[1]);	fnum = smbcli_nt_create_full(ctx->cli->tree, fname, 0, 				     SEC_STD_READ_CONTROL,				     0,				     NTCREATEX_SHARE_ACCESS_DELETE|				     NTCREATEX_SHARE_ACCESS_READ|				     NTCREATEX_SHARE_ACCESS_WRITE, 				     NTCREATEX_DISP_OPEN,				     0, 0);	if (fnum == -1) {		d_printf("%s - %s\n", fname, smbcli_errstr(ctx->cli->tree));		return -1;	}	query.query_secdesc.level = RAW_FILEINFO_SEC_DESC;	query.query_secdesc.in.file.fnum = fnum;	query.query_secdesc.in.secinfo_flags = 0x7;	status = smb_raw_fileinfo(ctx->cli->tree, ctx, &query);	if (!NT_STATUS_IS_OK(status)) {		d_printf("%s - %s\n", fname, nt_errstr(status));		return 1;	}	NDR_PRINT_DEBUG(security_descriptor, query.query_secdesc.out.sd);	return 0;}/****************************************************************************lookup a name or sid****************************************************************************/static int cmd_lookup(struct smbclient_context *ctx, const char **args){	NTSTATUS status;	struct dom_sid *sid;	if (!args[1]) {		d_printf("lookup <sid|name>\n");		return 1;	}	sid = dom_sid_parse_talloc(ctx, args[1]);	if (sid == NULL) {		const char *sidstr;		status = smblsa_lookup_name(ctx->cli, args[1], ctx, &sidstr);		if (!NT_STATUS_IS_OK(status)) {			d_printf("lsa_LookupNames - %s\n", nt_errstr(status));			return 1;		}		d_printf("%s\n", sidstr);	} else {		const char *name;		status = smblsa_lookup_sid(ctx->cli, args[1], ctx, &name);		if (!NT_STATUS_IS_OK(status)) {			d_printf("lsa_LookupSids - %s\n", nt_errstr(status));			return 1;		}		d_printf("%s\n", name);	}	return 0;}/****************************************************************************show privileges for a user****************************************************************************/static int cmd_privileges(struct smbclient_context *ctx, const char **args){	NTSTATUS status;	struct dom_sid *sid;	struct lsa_RightSet rights;	unsigned i;	if (!args[1]) {		d_printf("privileges <sid|name>\n");		return 1;	}	sid = dom_sid_parse_talloc(ctx, args[1]);	if (sid == NULL) {		const char *sid_str;		status = smblsa_lookup_name(ctx->cli, args[1], ctx, &sid_str);		if (!NT_STATUS_IS_OK(status)) {			d_printf("lsa_LookupNames - %s\n", nt_errstr(status));			return 1;		}		sid = dom_sid_parse_talloc(ctx, sid_str);	}	status = smblsa_sid_privileges(ctx->cli, sid, ctx, &rights);	if (!NT_STATUS_IS_OK(status)) {		d_printf("lsa_EnumAccountRights - %s\n", nt_errstr(status));		return 1;	}	for (i=0;i<rights.count;i++) {		d_printf("\t%s\n", rights.names[i].string);	}	return 0;}/****************************************************************************add privileges for a user****************************************************************************/static int cmd_addprivileges(struct smbclient_context *ctx, const char **args){	NTSTATUS status;	struct dom_sid *sid;	struct lsa_RightSet rights;	int i;	if (!args[1]) {		d_printf("addprivileges <sid|name> <privilege...>\n");		return 1;	}	sid = dom_sid_parse_talloc(ctx, args[1]);	if (sid == NULL) {		const char *sid_str;		status = smblsa_lookup_name(ctx->cli, args[1], ctx, &sid_str);		if (!NT_STATUS_IS_OK(status)) {			d_printf("lsa_LookupNames - %s\n", nt_errstr(status));			return 1;		}		sid = dom_sid_parse_talloc(ctx, sid_str);	}	ZERO_STRUCT(rights);	for (i = 2; args[i]; i++) {		rights.names = talloc_realloc(ctx, rights.names, 					      struct lsa_StringLarge, rights.count+1);		rights.names[rights.count].string = talloc_strdup(ctx, args[i]);		rights.count++;	}	status = smblsa_sid_add_privileges(ctx->cli, sid, ctx, &rights);	if (!NT_STATUS_IS_OK(status)) {		d_printf("lsa_AddAccountRights - %s\n", nt_errstr(status));		return 1;	}	return 0;}/****************************************************************************delete privileges for a user****************************************************************************/static int cmd_delprivileges(struct smbclient_context *ctx, const char **args){	NTSTATUS status;	struct dom_sid *sid;	struct lsa_RightSet rights;	int i;	if (!args[1]) {		d_printf("delprivileges <sid|name> <privilege...>\n");		return 1;	}	sid = dom_sid_parse_talloc(ctx, args[1]);	if (sid == NULL) {		const char *sid_str;		status = smblsa_lookup_name(ctx->cli, args[1], ctx, &sid_str);		if (!NT_STATUS_IS_OK(status)) {			d_printf("lsa_LookupNames - %s\n", nt_errstr(status));			return 1;		}		sid = dom_sid_parse_talloc(ctx, sid_str);	}	ZERO_STRUCT(rights);	for (i = 2; args[i]; i++) {		rights.names = talloc_realloc(ctx, rights.names, 					      struct lsa_StringLarge, rights.count+1);		rights.names[rights.count].string = talloc_strdup(ctx, args[i]);		rights.count++;	}	status = smblsa_sid_del_privileges(ctx->cli, sid, ctx, &rights);	if (!NT_STATUS_IS_OK(status)) {		d_printf("lsa_RemoveAccountRights - %s\n", nt_errstr(status));		return 1;	}	return 0;}/********************************************************************************************************************************************************/static int cmd_open(struct smbclient_context *ctx, const char **args){	char *mask;		if (!args[1]) {		d_printf("open <filename>\n");		return 1;	}	mask = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[1]);	smbcli_open(ctx->cli->tree, mask, O_RDWR, DENY_ALL);	return 0;}/****************************************************************************remove a directory****************************************************************************/static int cmd_rmdir(struct smbclient_context *ctx, const char **args){	char *mask;  	if (!args[1]) {		d_printf("rmdir <dirname>\n");		return 1;	}	mask = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[1]);	if (NT_STATUS_IS_ERR(smbcli_rmdir(ctx->cli->tree, mask))) {		d_printf("%s removing remote directory file %s\n",			 smbcli_errstr(ctx->cli->tree),mask);	}		return 0;}/**************************************************************************** UNIX hardlink.****************************************************************************/static int cmd_link(struct smbclient_context *ctx, const char **args){	char *src,*dest;  	if (!(ctx->cli->transport->negotiate.capabilities & CAP_UNIX)) {		d_printf("Server doesn't support UNIX CIFS calls.\n");		return 1;	}		if (!args[1] || !args[2]) {		d_printf("link <src> <dest>\n");		return 1;	}	src = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[1]);	dest = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[2]);	if (NT_STATUS_IS_ERR(smbcli_unix_hardlink(ctx->cli->tree, src, dest))) {		d_printf("%s linking files (%s -> %s)\n", smbcli_errstr(ctx->cli->tree), src, dest);		return 1;	}  	return 0;}/**************************************************************************** UNIX symlink.****************************************************************************/static int cmd_symlink(struct smbclient_context *ctx, const char **args){	char *src,*dest;  	if (!(ctx->cli->transport->negotiate.capabilities & CAP_UNIX)) {		d_printf("Server doesn't support UNIX CIFS calls.\n");		return 1;	}	if (!args[1] || !args[2]) {		d_printf("symlink <src> <dest>\n");		return 1;	}	src = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[1]);	dest = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[2]);	if (NT_STATUS_IS_ERR(smbcli_unix_symlink(ctx->cli->tree, src, dest))) {		d_printf("%s symlinking files (%s -> %s)\n",			smbcli_errstr(ctx->cli->tree), src, dest);		return 1;	} 	return 0;}/**************************************************************************** UNIX chmod.****************************************************************************/static int cmd_chmod(struct smbclient_context *ctx, const char **args){	char *src;	mode_t mode;  	if (!(ctx->cli->transport->negotiate.capabilities & CAP_UNIX)) {		d_printf("Server doesn't support UNIX CIFS calls.\n");		return 1;	}	if (!args[1] || !args[2]) {		d_printf("chmod mode file\n");		return 1;	}	src = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[2]);		mode = (mode_t)strtol(args[1], NULL, 8);	if (NT_STATUS_IS_ERR(smbcli_unix_chmod(ctx->cli->tree, src, mode))) {		d_printf("%s chmod file %s 0%o\n",			smbcli_errstr(ctx->cli->tree), src, (mode_t)mode);		return 1;	} 	return 0;}/**************************************************************************** UNIX chown.****************************************************************************/static int cmd_chown(struct smbclient_context *ctx, const char **args){	char *src;	uid_t uid;	gid_t gid;  	if (!(ctx->cli->transport->negotiate.capabilities & CAP_UNIX)) {		d_printf("Server doesn't support UNIX CIFS calls.\n");		return 1;	}	if (!args[1] || !args[2] || !args[3]) {		d_printf("chown uid gid file\n");		return 1;	}	uid = (uid_t)atoi(args[1]);	gid = (gid_t)atoi(args[2]);	src = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[3]);	if (NT_STATUS_IS_ERR(smbcli_unix_chown(ctx->cli->tree, src, uid, gid))) {		d_printf("%s chown file %s uid=%d, gid=%d\n",			smbcli_errstr(ctx->cli->tree), src, (int)uid, (int)gid);		return 1;	} 	return 0;}/****************************************************************************rename some files****************************************************************************/static int cmd_rename(struct smbclient_context *ctx, const char **args){	char *src,*dest;  	if (!args[1] || !args[2]) {		d_printf("rename <src> <dest>\n");		return 1;	}	src = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[1]);	dest = talloc_asprintf(ctx, "%s%s", ctx->remote_cur_dir, args[2]);	if (NT_STATUS_IS_ERR(smbcli_rename(ctx->cli->tree, src, dest))) {		d_printf("%s renaming files\n",smbcli_errstr(ctx->cli->tree));		return 1;	}		return 0;}/****************************************************************************toggle the prompt flag****************************************************************************/static int cmd_prompt(struct smbclient_context *ctx, const char **args){	ctx->prompt = !ctx->prompt;	DEBUG(2,("prompting is now %s\n",ctx->prompt?"on":"off"));		return 1;}/****************************************************************************set the newer than time****************************************************************************/static int cmd_newer(struct smbclient_context *ctx, const char **args){	struct stat sbuf;	if (args[1] && (stat(args[1],&sbuf) == 0)) {		ctx->newer_than = sbuf.st_mtime;		DEBUG(1,("Getting files newer than %s",			 asctime(localtime(&ctx->newer_than))));	} else {		ctx->newer_than = 0;	}	if (args[1] && ctx->newer_than == 0) {		d_printf("Error setting newer-than time\n");		return 1;	}	return 0;}/****************************************************************************set the archive level****************************************************************************/static int cmd_archive(struct smbclient_context *ctx, const char **args){	if (args[1]) {		ctx->archive_level = atoi(args[1]);	} else		d_printf("Archive level is %d\n",ctx->archive_level);	return 0;}/****************************************************************************toggle the lowercaseflag****************************************************************************/static int cmd_lowercase(struct smbclient_context *ctx, const char **args){	ctx->lowercase = !ctx->lowercase;	DEBUG(2,("filename lowercasing is now %s\n",ctx->lowercase?"on":"off"));	return 0;}/****************************************************************************toggle the recurse flag****************************************************************************/static int cmd_recurse(struct smbclient_context *ctx, const char **args){	ctx->recurse = !ctx->recurse;	DEBUG(2,("directory recursion is now %s\n",ctx->recurse?"on":"off"));	return 0;}/****************************************************************************toggle the translate flag****************************************************************************/static int cmd_translate(struct smbclient_context *ctx, const char **args){	ctx->translation = !ctx->translation;	DEBUG(2,("CR/LF<->LF and print text tr

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -