* [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 an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.