X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=src%2Fshare%2Fcommon;h=bd887d39b410d333badc6048b08d5e777322ce4b;hb=3e5df3def466a61cd32bdcc1fd29da09dff43729;hp=1ce07fc3e70fcb2417a62ccefb9f4204466b614e;hpb=792b299e0850dfa3ab1072760f9e82febd81c366;p=monkeysphere.git diff --git a/src/share/common b/src/share/common index 1ce07fc..bd887d3 100644 --- a/src/share/common +++ b/src/share/common @@ -254,7 +254,7 @@ check_capability() { file_hash() { if type md5sum &>/dev/null ; then md5sum "$1" - elif type lockfile &>/dev/null ; then + elif type md5 &>/dev/null ; then md5 "$1" else failure "Neither md5sum nor md5 are in the path!" @@ -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"} @@ -425,6 +425,12 @@ check_key_file_permissions() { log debug "checking path permission '$path'..." + # rewrite path if it points to a symlink + if [ -h "$path" ] ; then + path=$(readlink -f "$path") + log debug "checking path symlink '$path'..." + fi + # return 255 if cannot stat file if ! stat=$(ls -ld "$path" 2>/dev/null) ; then log error "could not stat path '$path'." @@ -458,6 +464,25 @@ 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 + else + failure "Neither getent or dscl is in the path! Could not determine list of 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