[LTP] [PATCH v2] tst_test.c: Set system default umaks to 0022

Wei Gao wegao@suse.com
Thu Feb 22 14:53:58 CET 2024


On Wed, Feb 21, 2024 at 05:19:07PM +0100, Petr Vorel wrote:
> Hi all,
> 
> > On Tue, Feb 20, 2024 at 10:18:37AM +0100, Petr Vorel wrote:
> > > Hi Wei,
> 
> > > >  	char *tdebug_env = getenv("LTP_ENABLE_DEBUG");
> 
> > > > +	umask(0022);
> 
> > > I don't think this is a good idea. Changing umask() in the library can influent
> > > tests. Could you please instead add umask(0) (to reset umask) on the tests which
> > > need it? The way it's done in open07.c.
> 
> First I thought that modifying umask (either with umask(0022) or just reset with
> umask(0)) is not a good idea, but now I'm not sure:
> 
> 1) We have quite a few tests, which will needs it:
> NEW API tests:
> $ git grep '^\s*umask(0' $(git grep -l tst_test.h) | wc -l
> 15
> 
> All tests:
> $ git grep '^\s*umask(0' testcases/ | wc -l
> 34
> 
> And for sure some other, which will fail when too restrictive umask is set.
> 
> Wouldn't be better to have it in the library? Hopefully fewer tests would be
> influenced this setup (and would need to set different umask()).
> 
> > cgroup_core01.c and statx07.c can use umask(0) in tests and i have updated the patch.
> 
> > But chdir01 will still failed on vfat and exfat. Like following error msg:
> > chdir01.c:100: TFAIL: nobody: chdir("subdir") returned unexpected value -1: EACCES (13)
> 
> FYI test fails on vfat and ntfs when umask is 0077 (because override file and
> directory permissions) (other filesystems are ok).
> 
> > The reason is umask(0) should set before mount /dev/loop0 to /tmp/xxx/mntpoint, otherwise you 
> > have no chance modify permission of file. What's your suggestion?
> 
> > susetest:/tmp/LTP_chd5JtblL/mntpoint # mount | grep loop0
> > /dev/loop0 on /tmp/LTP_chd5JtblL/mntpoint type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
> > /dev/loop0 on /var/tmp/LTP_chd5JtblL/mntpoint type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
> 
> 2) tests, which set .mount_device = 1 and have more restrictive umask will not
> work. Workaround would be to not use it and mount manually in the setup().
> Or, reset umask with umask(0).
> 
> WDYT?

Currently i only need fix one case chdir01 so i will try to do workaround(mount mount manually in setup).
If new fail happen in future then i suppose we need consider do umask in lib.

Thanks for your comments.

> 
> Kind regards,
> Petr
> 
> > susetest:/tmp/LTP_chd5JtblL # chmod 777 mntpoint <<<< 
> > susetest:/tmp/LTP_chd5JtblL # ll
> > total 307216
> > drwx------ 4 root root     16384 Dec 31  1969 mntpoint  <<<<<<<< group and other has no any permission even try chmod
> > -rw------- 1 root root 314572800 Feb 19 04:51 test_dev.img
> 
> > susetest:/tmp/LTP_chd5JtblL/mntpoint # touch aa
> > susetest:/tmp/LTP_chd5JtblL/mntpoint # ll
> > total 16
> > -rwx------ 1 root root    0a
> > drwx------ 2 root root 8192 Feb 19 04:50 keep_out
> > drwx------ 2 root root 8192 Feb 19 04:50 subdir
> > -rwx------ 1 root root    0 Feb 19 04:50 testfile <<<<<<
> 
> > Thanks.
> 
> 
> > > Kind regards,
> > > Petr


More information about the ltp mailing list