Date: Fri, 7 Feb 2003 16:30:07 +0800 From: Adrian Chadd <adrian@freebsd.org> To: freebsd-current@freebsd.org Subject: [adrian@freebsd.org: adduser change: telling you when a group isn't there] Message-ID: <20030207083007.GD84685@skywalker.creative.net.au>
next in thread | raw e-mail | index | archive | help
Oops. I should have sent this to -current :-P
adrian
----- Forwarded message from Adrian Chadd <adrian@freebsd.org> -----
Date: Fri, 7 Feb 2003 16:10:56 +0800
From: Adrian Chadd <adrian@freebsd.org>
To: freebsd-hackers@freebsd.org
Subject: adduser change: telling you when a group isn't there
User-Agent: Mutt/1.4i
Hi,
The adduser in -current doesn't check if a specified group exists until
the call to pw right at the end. eep.
My sh foo isn't terribly great, but this did it for me.
Comments/rewrites are welcome. I'll commit the group consensus.
Adrian
diff:
--- /usr/src/usr.sbin/adduser/adduser.sh Fri Jan 24 02:05:51 2003
+++ adduser.sh Fri Feb 7 08:04:15 2003
@@ -47,6 +47,16 @@
fi
}
+# Check whether the given group exists
+check_group() {
+ ${PWCMD} show group $1 1> /dev/null 2> /dev/null
+ if [ "$?" = "0" ]; then
+ echo "1"
+ return
+ fi
+ echo "0"
+}
+
# get_nextuid
# Output the value of $_uid if it is available for use. If it
# is not, output the value of the next higher uid that is available.
@@ -570,8 +580,31 @@
get_user
get_gecos
get_uid
- get_logingroup
- get_groups
+ ok="NO"
+
+ # The code creates a group = $user if one doesn't exist.
+ # We are just going to capture other non-existant groups!
+ while [ "$ok" = "NO" ] ; do
+ ok="YES"
+ get_logingroup
+ if [ "$ulogingroup" != "" -a "$username" != "$ulogingroup" -a "`check_group $ulogingroup`" = "0" ]; then
+ echo "Group $ulogingroup does not exist!"
+ ok="NO"
+ fi
+ done
+
+ ok="NO"
+ while [ "$ok" = "NO" ] ; do
+ ok="YES"
+ get_groups
+ for i in $ugroups; do
+ if [ "$username" != "$i" -a "`check_group $i`" = "0" ]; then
+ echo "Group $i does not exist!"
+ ok="NO"
+ fi
+ done
+ done
+
get_class
get_shell
get_homedir
----- End forwarded message -----
--
Adrian Chadd <angryskul> learning is bad
<adrian@FreeBSD.org> <angryskul> it just makes the people around you dumber
(angryskul == alfred@irc) <angryskul> :(
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030207083007.GD84685>
