* [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
* [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
* 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
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).