public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod
@ 2009-06-08  6:13 Wei Yongjun
  2009-06-08  6:16 ` [LTP] [PATCH 2/2] chmod05: fix the effective user when do cleanup Wei Yongjun
  2009-06-09 18:24 ` [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod Subrata Modak
  0 siblings, 2 replies; 4+ messages in thread
From: Wei Yongjun @ 2009-06-08  6:13 UTC (permalink / raw)
  To: Subrata Modak, ltp-list

Refer to the manpage:

  # man 2 chmod
  If the calling process is not privileged (Linux: does not have the
  CAP_FSETID capability), and the group of the file does not match
  the effective group ID of the process or one of its supplementary
  group IDs, the S_ISGID bit will be turned off, but this will not
  cause an error to be returned.

So, if we want S_ISGID bit be turned off after chmod(), we can not have
the CAP_FSETID capability and not match the effective group ID. The 'bin'
group always has the CAP_FSETID capability, so we can not change the own
of the TESTDIR to 'bin' group, instead, 'nobody' can be used.

This patch fixed the problem by change gid of chown to 'nobody' group and
change the gid of setegid() to 'bin' group.

Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
---
 testcases/kernel/syscalls/chmod/chmod05.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/testcases/kernel/syscalls/chmod/chmod05.c b/testcases/kernel/syscalls/chmod/chmod05.c
index 4504aaa..c6f1225 100644
--- a/testcases/kernel/syscalls/chmod/chmod05.c
+++ b/testcases/kernel/syscalls/chmod/chmod05.c
@@ -177,7 +177,7 @@ int main(int ac, char **av)
 			if ((PERMS & ~S_ISGID) != dir_mode) {
 				tst_resm(TFAIL, "%s: Incorrect modes 0%03o, "
 					 "Expected 0%03o", TESTDIR, dir_mode,
-					 PERMS);
+					 PERMS & ~S_ISGID);
 			} else {
 				tst_resm(TPASS,
 					 "Functionality of chmod(%s, %#o) successful",
@@ -241,12 +241,12 @@ void setup()
 				strerror(errno));
 	}
 
-	if (chown(TESTDIR, nobody_u->pw_uid, bin_group->gr_gid) == -1)
+	if (chown(TESTDIR, nobody_u->pw_uid, nobody_u->pw_gid) == -1)
 		tst_brkm(TBROK, cleanup, "Couldn't change owner of testdir: %s",
 				strerror(errno));
 
-	/* change to nobody:nobody */
-	if (setegid(nobody_u->pw_gid) == -1 ||
+	/* change to nobody:bin */
+	if (setegid(bin_group->gr_gid) == -1 ||
 		 seteuid(nobody_u->pw_uid) == -1)
 		tst_brkm(TBROK, cleanup, "Couldn't switch to nobody:nobody: %s",
 				strerror(errno));
-- 
1.6.0.2.530.g67faa





------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [LTP] [PATCH 2/2] chmod05: fix the effective user when do cleanup
  2009-06-08  6:13 [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod Wei Yongjun
@ 2009-06-08  6:16 ` Wei Yongjun
  2009-06-09 18:24   ` Subrata Modak
  2009-06-09 18:24 ` [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod Subrata Modak
  1 sibling, 1 reply; 4+ messages in thread
From: Wei Yongjun @ 2009-06-08  6:16 UTC (permalink / raw)
  To: Subrata Modak, ltp-list

The TESTDIR is created by root user, but when we do cleanup, the effective
user had been changed to nobody, so the cleanup will be failed when the
TESTDIR is removed.

  chmod05     0  WARN  :  tst_rmdir(): rmobj(/tmp/chmOpEdLA) failed: \
  remove(/tmp/chmOpEdLA) failed; errno=1: Operation not permitted

This patch fixed the problem by reset the effective user to root.

Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
---
 testcases/kernel/syscalls/chmod/chmod05.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/testcases/kernel/syscalls/chmod/chmod05.c b/testcases/kernel/syscalls/chmod/chmod05.c
index c6f1225..252f14e 100644
--- a/testcases/kernel/syscalls/chmod/chmod05.c
+++ b/testcases/kernel/syscalls/chmod/chmod05.c
@@ -266,6 +266,9 @@ void cleanup()
 	 */
 	TEST_CLEANUP;
 
+	setegid(0);
+	seteuid(0);
+
 	/* Remove tmp dir and all files in it */
 	tst_rmdir();
 
-- 
1.6.0.2.530.g67faa





------------------------------------------------------------------------------
OpenSolaris 2009.06 is a cutting edge operating system for enterprises 
looking to deploy the next generation of Solaris that includes the latest 
innovations from Sun and the OpenSource community. Download a copy and 
enjoy capabilities such as Networking, Storage and Virtualization. 
Go to: http://p.sf.net/sfu/opensolaris-get
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod
  2009-06-08  6:13 [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod Wei Yongjun
  2009-06-08  6:16 ` [LTP] [PATCH 2/2] chmod05: fix the effective user when do cleanup Wei Yongjun
@ 2009-06-09 18:24 ` Subrata Modak
  1 sibling, 0 replies; 4+ messages in thread
From: Subrata Modak @ 2009-06-09 18:24 UTC (permalink / raw)
  To: Wei Yongjun; +Cc: ltp-list

On Mon, 2009-06-08 at 14:13 +0800, Wei Yongjun wrote: 
> Refer to the manpage:
> 
>   # man 2 chmod
>   If the calling process is not privileged (Linux: does not have the
>   CAP_FSETID capability), and the group of the file does not match
>   the effective group ID of the process or one of its supplementary
>   group IDs, the S_ISGID bit will be turned off, but this will not
>   cause an error to be returned.
> 
> So, if we want S_ISGID bit be turned off after chmod(), we can not have
> the CAP_FSETID capability and not match the effective group ID. The 'bin'
> group always has the CAP_FSETID capability, so we can not change the own
> of the TESTDIR to 'bin' group, instead, 'nobody' can be used.
> 
> This patch fixed the problem by change gid of chown to 'nobody' group and
> change the gid of setegid() to 'bin' group.
> 
> Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>

Thanks.

Regards--
Subrata

> ---
>  testcases/kernel/syscalls/chmod/chmod05.c |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/chmod/chmod05.c b/testcases/kernel/syscalls/chmod/chmod05.c
> index 4504aaa..c6f1225 100644
> --- a/testcases/kernel/syscalls/chmod/chmod05.c
> +++ b/testcases/kernel/syscalls/chmod/chmod05.c
> @@ -177,7 +177,7 @@ int main(int ac, char **av)
>  			if ((PERMS & ~S_ISGID) != dir_mode) {
>  				tst_resm(TFAIL, "%s: Incorrect modes 0%03o, "
>  					 "Expected 0%03o", TESTDIR, dir_mode,
> -					 PERMS);
> +					 PERMS & ~S_ISGID);
>  			} else {
>  				tst_resm(TPASS,
>  					 "Functionality of chmod(%s, %#o) successful",
> @@ -241,12 +241,12 @@ void setup()
>  				strerror(errno));
>  	}
> 
> -	if (chown(TESTDIR, nobody_u->pw_uid, bin_group->gr_gid) == -1)
> +	if (chown(TESTDIR, nobody_u->pw_uid, nobody_u->pw_gid) == -1)
>  		tst_brkm(TBROK, cleanup, "Couldn't change owner of testdir: %s",
>  				strerror(errno));
> 
> -	/* change to nobody:nobody */
> -	if (setegid(nobody_u->pw_gid) == -1 ||
> +	/* change to nobody:bin */
> +	if (setegid(bin_group->gr_gid) == -1 ||
>  		 seteuid(nobody_u->pw_uid) == -1)
>  		tst_brkm(TBROK, cleanup, "Couldn't switch to nobody:nobody: %s",
>  				strerror(errno));


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [LTP] [PATCH 2/2] chmod05: fix the effective user when do cleanup
  2009-06-08  6:16 ` [LTP] [PATCH 2/2] chmod05: fix the effective user when do cleanup Wei Yongjun
@ 2009-06-09 18:24   ` Subrata Modak
  0 siblings, 0 replies; 4+ messages in thread
From: Subrata Modak @ 2009-06-09 18:24 UTC (permalink / raw)
  To: Wei Yongjun; +Cc: ltp-list

On Mon, 2009-06-08 at 14:16 +0800, Wei Yongjun wrote: 
> The TESTDIR is created by root user, but when we do cleanup, the effective
> user had been changed to nobody, so the cleanup will be failed when the
> TESTDIR is removed.
> 
>   chmod05     0  WARN  :  tst_rmdir(): rmobj(/tmp/chmOpEdLA) failed: \
>   remove(/tmp/chmOpEdLA) failed; errno=1: Operation not permitted
> 
> This patch fixed the problem by reset the effective user to root.
> 
> Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>

Thanks for fixing this as well.

Regards--
Subrata

> ---
>  testcases/kernel/syscalls/chmod/chmod05.c |    3 +++
>  1 files changed, 3 insertions(+), 0 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/chmod/chmod05.c b/testcases/kernel/syscalls/chmod/chmod05.c
> index c6f1225..252f14e 100644
> --- a/testcases/kernel/syscalls/chmod/chmod05.c
> +++ b/testcases/kernel/syscalls/chmod/chmod05.c
> @@ -266,6 +266,9 @@ void cleanup()
>  	 */
>  	TEST_CLEANUP;
> 
> +	setegid(0);
> +	seteuid(0);
> +
>  	/* Remove tmp dir and all files in it */
>  	tst_rmdir();
> 


------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensing option that enables unlimited
royalty-free distribution of the report engine for externally facing 
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-06-09 18:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-08  6:13 [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod Wei Yongjun
2009-06-08  6:16 ` [LTP] [PATCH 2/2] chmod05: fix the effective user when do cleanup Wei Yongjun
2009-06-09 18:24   ` Subrata Modak
2009-06-09 18:24 ` [LTP] [PATCH 1/2] chmod05: fix to modify the group ownership before do dir chmod Subrata Modak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox