add support for tmpfs mount options in pam_namespace
This commit is contained in:
		
							parent
							
								
									72401d341e
								
							
						
					
					
						commit
						d47b309a1d
					
				
							
								
								
									
										93
									
								
								pam-1.1.6-namespace-mntopts.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								pam-1.1.6-namespace-mntopts.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,93 @@ | |||||||
|  | diff --git a/modules/pam_namespace/namespace.conf.5.xml b/modules/pam_namespace/namespace.conf.5.xml
 | ||||||
|  | index 673099b..f28350d 100644
 | ||||||
|  | --- a/modules/pam_namespace/namespace.conf.5.xml
 | ||||||
|  | +++ b/modules/pam_namespace/namespace.conf.5.xml
 | ||||||
|  | @@ -119,6 +119,14 @@
 | ||||||
|  |        contain the user name and will be shared among all users. | ||||||
|  |      </para> | ||||||
|  |   | ||||||
|  | +    <para><emphasis>mntopts</emphasis>=<replaceable>value</replaceable>
 | ||||||
|  | +      - this flag value is passed to the mount call when the tmpfs mount is done.
 | ||||||
|  | +      It allows for example the specification of the maximum size of the tmpfs
 | ||||||
|  | +      instance that is created by the mount call. See <citerefentry>
 | ||||||
|  | +      <refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum>
 | ||||||
|  | +      </citerefentry> for details.
 | ||||||
|  | +    </para>
 | ||||||
|  | +
 | ||||||
|  |      <para> | ||||||
|  |        The directory where polyinstantiated instances are to be | ||||||
|  |        created, must exist and must have, by default, the mode of 0000.  The | ||||||
|  | diff --git a/modules/pam_namespace/pam_namespace.c b/modules/pam_namespace/pam_namespace.c
 | ||||||
|  | index a40f05e..e0d5e30 100644
 | ||||||
|  | --- a/modules/pam_namespace/pam_namespace.c
 | ||||||
|  | +++ b/modules/pam_namespace/pam_namespace.c
 | ||||||
|  | @@ -64,6 +64,7 @@ static void del_polydir(struct polydir_s *poly)
 | ||||||
|  |  	if (poly) { | ||||||
|  |  		free(poly->uid); | ||||||
|  |  		free(poly->init_script); | ||||||
|  | +		free(poly->mount_opts);
 | ||||||
|  |  		free(poly); | ||||||
|  |  	} | ||||||
|  |  } | ||||||
|  | @@ -237,9 +238,9 @@ static int parse_method(char *method, struct polydir_s *poly,
 | ||||||
|  |      static const char *method_names[] = { "user", "context", "level", "tmpdir", | ||||||
|  |  	"tmpfs", NULL }; | ||||||
|  |      static const char *flag_names[] = { "create", "noinit", "iscript", | ||||||
|  | -	"shared", NULL };
 | ||||||
|  | +	"shared", "mntopts", NULL };
 | ||||||
|  |      static const unsigned int flag_values[] = { POLYDIR_CREATE, POLYDIR_NOINIT, | ||||||
|  | -	POLYDIR_ISCRIPT, POLYDIR_SHARED };
 | ||||||
|  | +	POLYDIR_ISCRIPT, POLYDIR_SHARED, POLYDIR_MNTOPTS };
 | ||||||
|  |      int i; | ||||||
|  |      char *flag; | ||||||
|  |   | ||||||
|  | @@ -279,6 +280,20 @@ static int parse_method(char *method, struct polydir_s *poly,
 | ||||||
|  |  					return -1; | ||||||
|  |  				}; | ||||||
|  |  				break; | ||||||
|  | +
 | ||||||
|  | +			    case POLYDIR_MNTOPTS:
 | ||||||
|  | +				if (flag[namelen] != '=')
 | ||||||
|  | +					break;
 | ||||||
|  | +				if (poly->method != TMPFS) {
 | ||||||
|  | +					pam_syslog(idata->pamh, LOG_WARNING, "Mount options applicable only to tmpfs method");
 | ||||||
|  | +					break;
 | ||||||
|  | +				}
 | ||||||
|  | +				free(poly->mount_opts); /* if duplicate mntopts specified */
 | ||||||
|  | +				if ((poly->mount_opts = strdup(flag+namelen+1)) == NULL) {
 | ||||||
|  | +					pam_syslog(idata->pamh, LOG_CRIT, "Memory allocation error");
 | ||||||
|  | +					return -1;
 | ||||||
|  | +				}
 | ||||||
|  | +				break;
 | ||||||
|  |  			} | ||||||
|  |  		} | ||||||
|  |  	} | ||||||
|  | @@ -1464,7 +1479,7 @@ static int ns_setup(struct polydir_s *polyptr,
 | ||||||
|  |      } | ||||||
|  |   | ||||||
|  |      if (polyptr->method == TMPFS) { | ||||||
|  | -	if (mount("tmpfs", polyptr->dir, "tmpfs", 0, NULL) < 0) {
 | ||||||
|  | +	if (mount("tmpfs", polyptr->dir, "tmpfs", 0, polyptr->mount_opts) < 0) {
 | ||||||
|  |  	    pam_syslog(idata->pamh, LOG_ERR, "Error mounting tmpfs on %s, %m", | ||||||
|  |  		polyptr->dir); | ||||||
|  |              return PAM_SESSION_ERR; | ||||||
|  | diff --git a/modules/pam_namespace/pam_namespace.h b/modules/pam_namespace/pam_namespace.h
 | ||||||
|  | index 51d2388..47ebcc3 100644
 | ||||||
|  | --- a/modules/pam_namespace/pam_namespace.h
 | ||||||
|  | +++ b/modules/pam_namespace/pam_namespace.h
 | ||||||
|  | @@ -116,6 +116,7 @@
 | ||||||
|  |  #define POLYDIR_NOINIT        0x00000004 /* no init script */ | ||||||
|  |  #define POLYDIR_SHARED        0x00000008 /* share context/level instances among users */ | ||||||
|  |  #define POLYDIR_ISCRIPT       0x00000010 /* non default init script */ | ||||||
|  | +#define POLYDIR_MNTOPTS       0x00000020 /* mount options for tmpfs mount */
 | ||||||
|  |   | ||||||
|  |   | ||||||
|  |  #define NAMESPACE_MAX_DIR_LEN 80 | ||||||
|  | @@ -164,6 +165,7 @@ struct polydir_s {
 | ||||||
|  |      uid_t *uid;				/* list of override uids */ | ||||||
|  |      unsigned int flags;			/* polydir flags */ | ||||||
|  |      char *init_script;			/* path to init script */ | ||||||
|  | +    char *mount_opts;			/* mount options for tmpfs mount */
 | ||||||
|  |      uid_t owner;			/* user which should own the polydir */ | ||||||
|  |      gid_t group;			/* group which should own the polydir */ | ||||||
|  |      mode_t mode;			/* mode of the polydir */ | ||||||
							
								
								
									
										9
									
								
								pam.spec
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								pam.spec
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ | |||||||
| Summary: An extensible library which provides authentication for applications | Summary: An extensible library which provides authentication for applications | ||||||
| Name: pam | Name: pam | ||||||
| Version: 1.1.6 | Version: 1.1.6 | ||||||
| Release: 2%{?dist} | Release: 3%{?dist} | ||||||
| # The library is BSD licensed with option to relicense as GPLv2+ | # The library is BSD licensed with option to relicense as GPLv2+ | ||||||
| # - this option is redundant as the BSD license allows that anyway. | # - this option is redundant as the BSD license allows that anyway. | ||||||
| # pam_timestamp, pam_loginuid, and pam_console modules are GPLv2+. | # pam_timestamp, pam_loginuid, and pam_console modules are GPLv2+. | ||||||
| @ -46,7 +46,10 @@ Patch20: pam-1.1.5-unix-no-fallback.patch | |||||||
| Patch21: pam-1.1.6-install-empty.patch | Patch21: pam-1.1.6-install-empty.patch | ||||||
| # | # | ||||||
| Patch22: pam-1.1.5-unix-build.patch | Patch22: pam-1.1.5-unix-build.patch | ||||||
|  | # Upstreamed | ||||||
| Patch23: pam-1.1.6-autoupdate.patch | Patch23: pam-1.1.6-autoupdate.patch | ||||||
|  | # Upstreamed | ||||||
|  | Patch24: pam-1.1.6-namespace-mntopts.patch | ||||||
| 
 | 
 | ||||||
| %define _sbindir /sbin | %define _sbindir /sbin | ||||||
| %define _moduledir /%{_lib}/security | %define _moduledir /%{_lib}/security | ||||||
| @ -125,6 +128,7 @@ mv pam-redhat-%{pam_redhat_version}/* modules | |||||||
| %patch21 -p1 -b .empty | %patch21 -p1 -b .empty | ||||||
| %patch22 -p1 -b .build | %patch22 -p1 -b .build | ||||||
| %patch23 -p1 -b .autoupdate | %patch23 -p1 -b .autoupdate | ||||||
|  | %patch24 -p1 -b .mntopts | ||||||
| 
 | 
 | ||||||
| %build | %build | ||||||
| autoreconf | autoreconf | ||||||
| @ -378,6 +382,9 @@ fi | |||||||
| %doc doc/adg/*.txt doc/adg/html | %doc doc/adg/*.txt doc/adg/html | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Oct 15 2012 Tomas Mraz <tmraz@redhat.com> 1.1.6-3 | ||||||
|  | - add support for tmpfs mount options in pam_namespace | ||||||
|  | 
 | ||||||
| * Mon Sep  3 2012 Tomas Mraz <tmraz@redhat.com> 1.1.6-2 | * Mon Sep  3 2012 Tomas Mraz <tmraz@redhat.com> 1.1.6-2 | ||||||
| - link setuid binaries with full relro (#853158) | - link setuid binaries with full relro (#853158) | ||||||
| - add rhost and tty to auditing data in modules (#677664) | - add rhost and tty to auditing data in modules (#677664) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user