#!/bin/sh # # asuser - execute a command as the given user with the user's primary group # # $Id$ PATH=/usr/bin:/bin; export PATH Die() { echo $0: fatal error: "$@"; exit 1; } sudo_opts= while : do case "$1" in -*) sudo_opts="$sudo_opts $1";; *) break;; esac shift done user=$1 shift [ $# -gt 0 ] || set ${SHELL:-bash} Getent() { getent "$1" "$2" | awk -F: '{print $'$3'}'; } [ -n "$user" ] || Die first argument must be a username [ -n "`Getent passwd $user 1`" ] || Die first argument must be a valid username group="`Getent group $user 1`" if [ -n "$group" ] then g_opt="-g $group" else g_opt= fi home=`Getent passwd "$user" 6` sudo $sudo_opts -u $user $g_opt env HOME=$home "$@"