[CRIU] [PATCH 1/3] security: check additional groups,v5

Christopher Covington cov at codeaurora.org
Wed Aug 6 06:04:09 PDT 2014


Hi,

This change breaks `criu check` and `criu dump` for me because I don't have an
/etc/passwd.

On 07/14/2014 02:24 PM, Ruslan Kuprieiev wrote:
> Currently, we only check if process gids match primary gid of user.
> But process and user have additional groups too. So lets:
>      1) check that process rgid,egid and sgid are in the user's grouplist.
>      2) on restore check that user has all groups from the images.

> --- a/security.c
> +++ b/security.c
> @@ -1,14 +1,23 @@
>  #include <unistd.h>
> +#include <pwd.h>
> +#include <grp.h>
> +#include <limits.h>
> +#include <stdlib.h>
> +#include <string.h>
> +
>  #include "crtools.h"
>  #include "proc_parse.h"
>  #include "log.h"
> +#include "xmalloc.h"
> +#include "bug.h"
>  
>  #include "protobuf/creds.pb-c.h"
>  
>  /*
> - * UID and GID of user requesting for C/R
> + * UID, GID and groups of user requesting for C/R
>   */
>  static unsigned int cr_uid, cr_gid;
> +static unsigned int cr_ngroups, *cr_groups;
>  
>  /*
>   * Setup what user is requesting for dump (via rpc or using
> @@ -17,11 +26,36 @@ static unsigned int cr_uid, cr_gid;
>   * access to. (Or implement some trickier security policy).
>   */
>  
> -void restrict_uid(unsigned int uid, unsigned int gid)
> +int restrict_uid(unsigned int uid, unsigned int gid)
>  {
> -	pr_info("Restrict C/R with %u:%u uid\n", uid, gid);
> +	struct passwd *pwd;
> +	unsigned int buf[NGROUPS_MAX];
> +	int nbuf;
> +
> +	pr_info("Restrict C/R with %u:%u uid:gid\n", uid, gid);
>  	cr_uid = uid;
>  	cr_gid = gid;
> +
> +	pwd = getpwuid(uid);
> +	if (!pwd) {
> +		pr_perror("Can't get password file entry");
> +		return -1;
> +	}

Could CRIU just revert to the old behavior rather than exiting if /etc/passwd
doesn't exist?

Thanks,
Christopher

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by the Linux Foundation.


More information about the CRIU mailing list