summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/share/common19
-rw-r--r--src/share/ma/update_users2
2 files changed, 19 insertions, 2 deletions
diff --git a/src/share/common b/src/share/common
index ac0b5d6..f954bb9 100644
--- a/src/share/common
+++ b/src/share/common
@@ -390,7 +390,7 @@ translate_ssh_variables() {
path="$2"
# get the user's home directory
- userHome=$(getent passwd "$uname" | cut -d: -f6)
+ userHome=$(get_homedir "$uname")
# translate '%u' to user name
path=${path/\%u/"$uname"}
@@ -458,6 +458,23 @@ check_key_file_permissions() {
fi
}
+# return a list of all users on the system
+list_users() {
+ if type getent &>/dev/null ; then
+ # for linux and FreeBSD systems
+ getent passwd | cut -d: -f1
+ elif type dscl &>/dev/null ; then
+ # for Darwin systems
+ dscl localhost -list /Search/Users
+ fi
+}
+
+# return the path to the home directory of a user
+get_homedir() {
+ local uname=${1:-`whoami`}
+ eval "echo ~${uname}"
+}
+
### CONVERSION UTILITIES
# output the ssh key for a given key ID
diff --git a/src/share/ma/update_users b/src/share/ma/update_users
index 3a5c006..c5c74cf 100644
--- a/src/share/ma/update_users
+++ b/src/share/ma/update_users
@@ -24,7 +24,7 @@ if [ "$1" ] ; then
unames="$@"
else
# or just look at all users if none specified
- unames=$(getent passwd | cut -d: -f1)
+ unames=$(list_users)
fi
# set mode