summaryrefslogtreecommitdiffstats
path: root/adduser
diff options
context:
space:
mode:
authorMike Makonnen <mtm@FreeBSD.org>2004-06-06 17:55:55 +0000
committerMike Makonnen <mtm@FreeBSD.org>2004-06-06 17:55:55 +0000
commit4328a7dd0badd93c60f736e301e187fb6b1d9b4b (patch)
treedcf879bbff512f921a8f6a2d8bf1aea72c502629 /adduser
parent01dd9570002ca5134d7014ab6adce4b9c5989b07 (diff)
downloadpw-darwin-4328a7dd0badd93c60f736e301e187fb6b1d9b4b.tar.gz
pw-darwin-4328a7dd0badd93c60f736e301e187fb6b1d9b4b.tar.zst
pw-darwin-4328a7dd0badd93c60f736e301e187fb6b1d9b4b.zip
Accept full path names in addition to base names for shells.
Make explicit in the documentation that valid shells need to be supplied only if the -S option is not given.
Diffstat (limited to 'adduser')
-rw-r--r--adduser/adduser.819
-rw-r--r--adduser/adduser.sh8
2 files changed, 16 insertions, 11 deletions
diff --git a/adduser/adduser.8 b/adduser/adduser.8
index 2f883f6..a87e6af 100644
--- a/adduser/adduser.8
+++ b/adduser/adduser.8
@@ -98,11 +98,13 @@ The
.Ql \&:
character is not allowed.
.It shell
-Only valid shells from the shell database
+Unless the
+.Fl S
+argument is supplied only valid shells from the shell database
.Pq Pa /etc/shells
are allowed.
-In
-addition, only the base name of the shell is necessary, not the full path.
+In addition,
+either the base name or the full path of the shell may be supplied.
.It UID
Automatically generated or your choice.
It must be less than 32000.
@@ -245,10 +247,10 @@ standard output.
Default shell for new users.
The
.Ar shell
-argument must be the base name of the shell,
-.Em not
-the full path.
-It must exist in
+argument may be the base name of the shell or the full path.
+Unless the
+.Fl S
+argument is supplied the shell must exist in
.Pa /etc/shells
or be the special shell
.Em nologin
@@ -372,7 +374,8 @@ is understood to mean that no home directory is to be
created for the user.
.It Ar shell
Login shell.
-This field should contain the full path to a valid login shell.
+This field should contain either the base name or
+the full path to a valid login shell.
.It Ar password
User password.
This field should contain a plaintext string, which will
diff --git a/adduser/adduser.sh b/adduser/adduser.sh
index c04463d..7e21cb5 100644
--- a/adduser/adduser.sh
+++ b/adduser/adduser.sh
@@ -118,7 +118,8 @@ valid_shells() {
}
# fullpath_from_shell shell
-# Given $shell, the basename component of a valid shell, get the
+# Given $shell, which is either the full path to a shell or
+# the basename component of a valid shell, get the
# full path to the shell from the /etc/shells file.
#
fullpath_from_shell() {
@@ -131,7 +132,8 @@ fullpath_from_shell() {
\#*|'')
;;
*)
- if [ "`basename $_path`" = "$_shell" ]; then
+ if [ "$_path" = "$_shell" -o \
+ "`basename $_path`" = "$_shell" ]; then
echo $_path
return 0
fi
@@ -372,7 +374,7 @@ get_gecos() {
# get_shell
# Get the account's shell. Works in interactive and batch mode. It
-# accepts only the base name of the shell, NOT the full path.
+# accepts either the base name of the shell or the full path.
# If an invalid shell is entered it will simply use the default shell.
#
get_shell() {