* [PATCH v2 0/2] generic/079 test fails if 'nobody' and 'daemon' don't exist @ 2021-09-24 9:19 Luis Henriques 2021-09-24 9:19 ` [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists Luis Henriques 2021-09-24 9:19 ` [PATCH v2 2/2] generic/079: make sure users 'nobody' and 'daemon' exist Luis Henriques 0 siblings, 2 replies; 6+ messages in thread From: Luis Henriques @ 2021-09-24 9:19 UTC (permalink / raw) To: fstests Cc: Eric Biggers, Darrick J . Wong, Eryu Guan, Luis Chamberlain, Luis Henriques Hi! Here's v2 of this humble patchset. Here's what changed since v1: - 'user' variable in _require_user_exists() is now local, as suggested by Eric Biggers. (I've also added Darrick's Reviewed-by tag to the 2nd patch only.) Original cover-letter: Test generic/079 currently fails if for some reason the 'nobody' or 'daemon' users don't exist: *** starting up add_acl(/mnt/scratch/079/immutable.f) did not set errno == EPERM add_acl(/mnt/scratch/079/immutable.d) did not set errno == EPERM add_acl(/mnt/scratch/079/append-only.f) did not set errno == EPERM add_acl(/mnt/scratch/079/append-only.d) did not set errno == EPERM testing immutable...FAILED! (2 tests failed) testing append-only...FAILED! (2 tests failed) *** cleaning up The first patch that follows adds a new function _require_user_exists() that will verify a user exists in the system (and refactors existent _require_user() to use the new function). The second patch is the actual test fix. Luis Henriques (2): common/rc: add _require_user_exists() to check if a user exists generic/079: make sure users 'nobody' and 'daemon' exist common/rc | 27 ++++++++++++++++++--------- tests/generic/079 | 2 ++ 2 files changed, 20 insertions(+), 9 deletions(-) ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists 2021-09-24 9:19 [PATCH v2 0/2] generic/079 test fails if 'nobody' and 'daemon' don't exist Luis Henriques @ 2021-09-24 9:19 ` Luis Henriques 2021-09-26 10:13 ` Zorro Lang 2021-09-24 9:19 ` [PATCH v2 2/2] generic/079: make sure users 'nobody' and 'daemon' exist Luis Henriques 1 sibling, 1 reply; 6+ messages in thread From: Luis Henriques @ 2021-09-24 9:19 UTC (permalink / raw) To: fstests Cc: Eric Biggers, Darrick J . Wong, Eryu Guan, Luis Chamberlain, Luis Henriques Function _require_user() does check if a user exists *and* if it is able to execute commands. Add a new function to simply check if a user exists. Signed-off-by: Luis Henriques <lhenriques@suse.de> --- common/rc | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/common/rc b/common/rc index 154bc2dd7e94..de9ba56eefcf 100644 --- a/common/rc +++ b/common/rc @@ -2289,18 +2289,27 @@ _cat_group() cat /etc/group } -# check for a user on the machine, fsgqa as default +# check if a user exists in the system +# +_require_user_exists() +{ + local user=$1 + _cat_passwd | grep -q $user + [ "$?" == "0" ] || _notrun "$user user not defined." +} + +# check if a user exists and is able to execute commands. +# Uses 'fsgqa' user as default. # _require_user() { - qa_user=fsgqa - if [ -n "$1" ];then - qa_user=$1 - fi - _cat_passwd | grep -q $qa_user - [ "$?" == "0" ] || _notrun "$qa_user user not defined." - echo /bin/true | su $qa_user - [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." + qa_user=fsgqa + if [ -n "$1" ];then + qa_user=$1 + fi + _require_user_exists $qa_user + echo /bin/true | su $qa_user + [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." } # check for a chown support ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists 2021-09-24 9:19 ` [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists Luis Henriques @ 2021-09-26 10:13 ` Zorro Lang 2021-09-26 10:22 ` Zorro Lang 0 siblings, 1 reply; 6+ messages in thread From: Zorro Lang @ 2021-09-26 10:13 UTC (permalink / raw) To: Luis Henriques Cc: fstests, Eric Biggers, Darrick J . Wong, Eryu Guan, Luis Chamberlain On Fri, Sep 24, 2021 at 10:19:10AM +0100, Luis Henriques wrote: > Function _require_user() does check if a user exists *and* if it is able > to execute commands. Add a new function to simply check if a user exists. > > Signed-off-by: Luis Henriques <lhenriques@suse.de> > --- > common/rc | 27 ++++++++++++++++++--------- > 1 file changed, 18 insertions(+), 9 deletions(-) > > diff --git a/common/rc b/common/rc > index 154bc2dd7e94..de9ba56eefcf 100644 > --- a/common/rc > +++ b/common/rc > @@ -2289,18 +2289,27 @@ _cat_group() > cat /etc/group > } > > -# check for a user on the machine, fsgqa as default > +# check if a user exists in the system > +# > +_require_user_exists() > +{ > + local user=$1 > + _cat_passwd | grep -q $user > + [ "$?" == "0" ] || _notrun "$user user not defined." As _require_user() does "su $qa_user" after the "grep", so it really make sure there's an "user". But if the _require_user_exists() only trys to grep /etc/passed to make sure there's an "$user", I'd like to make the "grep" condition be more exact. For example, if there's an user "myuser100" in the /etc/passwd, then _require_user_exists "myuser" or "user100" or "user1" or "user10" all return 0. So how about: _cat_passwd | grep -qw $user Or more exact: _cat_passwd | cut -d: -f1 | grep -qw $user Or other better command line:) Thanks, Zorro > +} > + > +# check if a user exists and is able to execute commands. > +# Uses 'fsgqa' user as default. > # > _require_user() > { > - qa_user=fsgqa > - if [ -n "$1" ];then > - qa_user=$1 > - fi > - _cat_passwd | grep -q $qa_user > - [ "$?" == "0" ] || _notrun "$qa_user user not defined." > - echo /bin/true | su $qa_user > - [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." > + qa_user=fsgqa > + if [ -n "$1" ];then > + qa_user=$1 > + fi > + _require_user_exists $qa_user > + echo /bin/true | su $qa_user > + [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." > } > > # check for a chown support > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists 2021-09-26 10:13 ` Zorro Lang @ 2021-09-26 10:22 ` Zorro Lang 2021-09-27 8:44 ` Luis Henriques 0 siblings, 1 reply; 6+ messages in thread From: Zorro Lang @ 2021-09-26 10:22 UTC (permalink / raw) To: Luis Henriques, fstests, Eric Biggers, Darrick J . Wong, Eryu Guan, Luis Chamberlain On Sun, Sep 26, 2021 at 06:13:54PM +0800, Zorro Lang wrote: > On Fri, Sep 24, 2021 at 10:19:10AM +0100, Luis Henriques wrote: > > Function _require_user() does check if a user exists *and* if it is able > > to execute commands. Add a new function to simply check if a user exists. > > > > Signed-off-by: Luis Henriques <lhenriques@suse.de> > > --- > > common/rc | 27 ++++++++++++++++++--------- > > 1 file changed, 18 insertions(+), 9 deletions(-) > > > > diff --git a/common/rc b/common/rc > > index 154bc2dd7e94..de9ba56eefcf 100644 > > --- a/common/rc > > +++ b/common/rc > > @@ -2289,18 +2289,27 @@ _cat_group() > > cat /etc/group > > } > > > > -# check for a user on the machine, fsgqa as default > > +# check if a user exists in the system > > +# > > +_require_user_exists() > > +{ > > + local user=$1 > > + _cat_passwd | grep -q $user > > + [ "$?" == "0" ] || _notrun "$user user not defined." > > As _require_user() does "su $qa_user" after the "grep", so it really make sure > there's an "user". But if the _require_user_exists() only trys to grep /etc/passed > to make sure there's an "$user", I'd like to make the "grep" condition be more exact. > For example, if there's an user "myuser100" in the /etc/passwd, then _require_user_exists > "myuser" or "user100" or "user1" or "user10" all return 0. > > So how about: > _cat_passwd | grep -qw $user > > Or more exact: > _cat_passwd | cut -d: -f1 | grep -qw $user > > Or other better command line:) Oh, the "-w" doesn't work with an user with "_", likes myuser_123. So how about: _cat_passwd | grep -q ^$user: Thanks, Zorro > > Thanks, > Zorro > > > +} > > + > > +# check if a user exists and is able to execute commands. > > +# Uses 'fsgqa' user as default. > > # > > _require_user() > > { > > - qa_user=fsgqa > > - if [ -n "$1" ];then > > - qa_user=$1 > > - fi > > - _cat_passwd | grep -q $qa_user > > - [ "$?" == "0" ] || _notrun "$qa_user user not defined." > > - echo /bin/true | su $qa_user > > - [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." > > + qa_user=fsgqa > > + if [ -n "$1" ];then > > + qa_user=$1 > > + fi > > + _require_user_exists $qa_user > > + echo /bin/true | su $qa_user > > + [ "$?" == "0" ] || _notrun "$qa_user cannot execute commands." > > } > > > > # check for a chown support > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists 2021-09-26 10:22 ` Zorro Lang @ 2021-09-27 8:44 ` Luis Henriques 0 siblings, 0 replies; 6+ messages in thread From: Luis Henriques @ 2021-09-27 8:44 UTC (permalink / raw) To: Zorro Lang Cc: fstests, Eric Biggers, Darrick J . Wong, Eryu Guan, Luis Chamberlain On Sun, Sep 26, 2021 at 06:22:17PM +0800, Zorro Lang wrote: > On Sun, Sep 26, 2021 at 06:13:54PM +0800, Zorro Lang wrote: > > On Fri, Sep 24, 2021 at 10:19:10AM +0100, Luis Henriques wrote: > > > Function _require_user() does check if a user exists *and* if it is able > > > to execute commands. Add a new function to simply check if a user exists. > > > > > > Signed-off-by: Luis Henriques <lhenriques@suse.de> > > > --- > > > common/rc | 27 ++++++++++++++++++--------- > > > 1 file changed, 18 insertions(+), 9 deletions(-) > > > > > > diff --git a/common/rc b/common/rc > > > index 154bc2dd7e94..de9ba56eefcf 100644 > > > --- a/common/rc > > > +++ b/common/rc > > > @@ -2289,18 +2289,27 @@ _cat_group() > > > cat /etc/group > > > } > > > > > > -# check for a user on the machine, fsgqa as default > > > +# check if a user exists in the system > > > +# > > > +_require_user_exists() > > > +{ > > > + local user=$1 > > > + _cat_passwd | grep -q $user > > > + [ "$?" == "0" ] || _notrun "$user user not defined." > > > > As _require_user() does "su $qa_user" after the "grep", so it really make sure > > there's an "user". But if the _require_user_exists() only trys to grep /etc/passed > > to make sure there's an "$user", I'd like to make the "grep" condition be more exact. > > For example, if there's an user "myuser100" in the /etc/passwd, then _require_user_exists > > "myuser" or "user100" or "user1" or "user10" all return 0. > > > > So how about: > > _cat_passwd | grep -qw $user > > > > Or more exact: > > _cat_passwd | cut -d: -f1 | grep -qw $user > > > > Or other better command line:) > > Oh, the "-w" doesn't work with an user with "_", likes myuser_123. So > how about: > > _cat_passwd | grep -q ^$user: Yep, that seems to make sense. I'll prepare v3 and send it out soon. Cheers, -- Luís ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] generic/079: make sure users 'nobody' and 'daemon' exist 2021-09-24 9:19 [PATCH v2 0/2] generic/079 test fails if 'nobody' and 'daemon' don't exist Luis Henriques 2021-09-24 9:19 ` [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists Luis Henriques @ 2021-09-24 9:19 ` Luis Henriques 1 sibling, 0 replies; 6+ messages in thread From: Luis Henriques @ 2021-09-24 9:19 UTC (permalink / raw) To: fstests Cc: Eric Biggers, Darrick J . Wong, Eryu Guan, Luis Chamberlain, Luis Henriques Test 'src/t_immutable' assumes the existence of users 'nobody' and 'daemon' on the system. If any of these users don't exist, the test will fail with: add_acl(/media/scratch/079/immutable.f) did not set errno == EPERM ... because it tries to set ACLs such as: u::rwx,g::rwx,o::rwx,u:daemon:rwx,m::rwx Use the new _require_user_exists() function to ensure these users exist. Signed-off-by: Luis Henriques <lhenriques@suse.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> --- tests/generic/079 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/generic/079 b/tests/generic/079 index 829275db8cdf..9e7ccd31c8e2 100755 --- a/tests/generic/079 +++ b/tests/generic/079 @@ -26,6 +26,8 @@ _cleanup() _supported_fs generic _require_chattr ia +_require_user_exists "nobody" +_require_user_exists "daemon" _require_test_program "t_immutable" _require_scratch ^ permalink raw reply related [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-09-27 8:44 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-09-24 9:19 [PATCH v2 0/2] generic/079 test fails if 'nobody' and 'daemon' don't exist Luis Henriques 2021-09-24 9:19 ` [PATCH v2 1/2] common/rc: add _require_user_exists() to check if a user exists Luis Henriques 2021-09-26 10:13 ` Zorro Lang 2021-09-26 10:22 ` Zorro Lang 2021-09-27 8:44 ` Luis Henriques 2021-09-24 9:19 ` [PATCH v2 2/2] generic/079: make sure users 'nobody' and 'daemon' exist Luis Henriques
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).