[PATCH] find -context option

KaiGai Kohei kaigai at kaigai.gr.jp
Mon Jun 18 14:03:08 UTC 2007


Hi,

It's a reminder. :)

Is there any comment about the patch to support -context option for
findutils applet, I posted a week ago?

If it has no matter, I want to merge the feature.
Thanks,

KaiGai Kohei wrote:
> This patch enables to apply -context matching rule for find applet.
> 
> It returns TRUE, if checked entry has same security context
> with given one by -context option.
> 
> example of usage)
> # ./busybox find /etc -context system_u:object_r:shadow_t
> /etc/gshadow
> /etc/.pwd.lock
> /etc/shadow
> /etc/gshadow-
> /etc/shadow-
> 
> It will print any file under /etc, have a security context of
> 'system_u:object_r:shadow_t'.
> 
> Any comment please,
> Thanks,
> --
> KaiGai Kohei <kaigai at kaigai.gr.jp>
> 
> 
> ------------------------------------------------------------------------
> 
> Index: busybox/include/usage.h
> ===================================================================
> --- busybox/include/usage.h	(revision 18764)
> +++ busybox/include/usage.h	(working copy)
> @@ -980,6 +980,8 @@
>         "\n	-delete		Delete files; Turns on -depth option" \
>  	) USE_FEATURE_FIND_PATH( \
>         "\n	-path		Path matches PATTERN" \
> +	) USE_FEATURE_FIND_CONTEXT ( \
> +       "\n	-context	File has specified security context" \
>  	) USE_FEATURE_FIND_PAREN( \
>         "\n	(EXPR)		Group an expression" \
>  	)
> Index: busybox/findutils/find.c
> ===================================================================
> --- busybox/findutils/find.c	(revision 18764)
> +++ busybox/findutils/find.c	(working copy)
> @@ -81,6 +81,7 @@
>  USE_FEATURE_FIND_PRUNE( ACTS(prune))
>  USE_FEATURE_FIND_DELETE(ACTS(delete))
>  USE_FEATURE_FIND_PATH(  ACTS(path, const char *pattern;))
> +USE_FEATURE_FIND_CONTEXT(ACTS(context, security_context_t context;))
>  
>  static action ***actions;
>  static bool need_print = 1;
> @@ -336,7 +337,27 @@
>  }
>  #endif
>  
> +#if ENABLE_FEATURE_FIND_CONTEXT
> +ACTF(context)
> +{
> +	security_context_t con;
> +	int rc;
>  
> +	if (recurse_flags & ACTION_FOLLOWLINKS) {
> +		rc = getfilecon(fileName, &con);
> +	} else {
> +		rc = lgetfilecon(fileName, &con);
> +	}
> +	if (rc < 0)
> +		return FALSE;
> +
> +	rc = strcmp(ap->context, con);
> +	freecon(con);
> +
> +	return rc == 0;
> +}
> +#endif
> +
>  static int fileAction(const char *fileName, struct stat *statbuf, void* junk, int depth)
>  {
>  	int i;
> @@ -419,6 +440,7 @@
>  	USE_FEATURE_FIND_PRUNE( PARM_prune     ,)
>  	USE_FEATURE_FIND_DELETE(PARM_delete    ,)
>  	USE_FEATURE_FIND_PATH(  PARM_path      ,)
> +	USE_FEATURE_FIND_CONTEXT(PARM_context  ,)
>  #if ENABLE_DESKTOP
>  	                        PARM_and       ,
>  	                        PARM_or        ,
> @@ -448,6 +470,7 @@
>  	USE_FEATURE_FIND_PRUNE( "-prune" ,)
>  	USE_FEATURE_FIND_DELETE("-delete",)
>  	USE_FEATURE_FIND_PATH(  "-path"  ,)
> +	USE_FEATURE_FIND_CONTEXT("-context",)
>  #if ENABLE_DESKTOP
>  	                        "-and"   ,
>  	                        "-or"    ,
> @@ -709,6 +732,18 @@
>  			ap->size = XATOOFF(arg1);
>  		}
>  #endif
> +#if ENABLE_FEATURE_FIND_CONTEXT
> +		else if (parm == PARM_context) {
> +			action_context *ap;
> +
> +			if (!*++argv)
> +				bb_error_msg_and_die(bb_msg_requires_arg, arg);
> +			ap = ALLOC_ACTION(context);
> +			ap->context = NULL;
> +			if (selinux_raw_to_trans_context(argv[0], &ap->context))
> +				bb_perror_msg("%s", argv[0]);
> +		}
> +#endif
>  		else
>  			bb_show_usage();
>  		argv++;
> Index: busybox/findutils/Config.in
> ===================================================================
> --- busybox/findutils/Config.in	(revision 18764)
> +++ busybox/findutils/Config.in	(working copy)
> @@ -151,6 +151,13 @@
>  	help
>  	  The -path option matches whole pathnames instead of just filenames.
>  
> +config FEATURE_FIND_CONTEXT
> +	bool "Enable (-context) option for matching security context"
> +	default n
> +	depends on FIND && SELINUX
> +	help
> +	  Support the 'find -context' option for matching security context.
> +
>  config GREP
>  	bool "grep"
>  	default n
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://busybox.net/cgi-bin/mailman/listinfo/busybox


-- 
KaiGai Kohei <kaigai at kaigai.gr.jp>



More information about the busybox mailing list