From fdb190657f0147b0dc1fb085c0613f30a256fb74 Mon Sep 17 00:00:00 2001 From: Stefan Fiedler Date: Fri, 4 Aug 2006 11:19:17 +0000 Subject: [PATCH] Stefan Fiedler: sysfiles: add group membership management comfort menu [2006071716552279210] (https://www.rocklinux.net/submaster) git-svn-id: http://www.rocklinux.org/svn/rock-linux/trunk@7830 c5f82cb5-29bc-0310-9cd0-bff59a50e3bc --- package/base/sysfiles/stone_mod_user.sh | 30 +++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/package/base/sysfiles/stone_mod_user.sh b/package/base/sysfiles/stone_mod_user.sh index 23caccf8b..7096341e4 100644 --- a/package/base/sysfiles/stone_mod_user.sh +++ b/package/base/sysfiles/stone_mod_user.sh @@ -33,15 +33,17 @@ user_edit_user_change_shell() { # {{{ user_edit_user() { # {{{ IFS=: read username haspwd uid gid desc home shell < <( grep ^${1}: /etc/passwd ) read oldline < <( grep ^${1}: /etc/passwd ) + groups="`grep -e":$1," -e",$1," -e",$1$" -e":$1" /etc/group | cut -f1 -d: | tr '\n' ' '`" run=0 while [ ${run} -eq 0 ] ; do cmd="'Login: ${username}' 'gui_input \"Enter new login for ${username}\" \"${username}\" username'" cmd="${cmd} 'Has a password: $( [ -n "${haspwd}" ] && echo "yes" || echo "no" )' 'gui_yesno \"Must ${username} supply a password to login?\" && haspwd=x || unset haspwd'" cmd="${cmd} 'User ID: ${uid}' 'gui_input \"Enter new user ID for ${username}\" \"${uid}\" uid'" cmd="${cmd} 'Group ID: ${gid}' 'gui_input \"Enter new primary group ID for ${username}\" \"${gid}\" gid'" - cmd="${cmd} 'Long description: ${desc}' 'gui_input \"Enter new descryption for ${username}\" \"${desc}\" desc'" + cmd="${cmd} 'Long description: ${desc}' 'gui_input \"Enter new description for ${username}\" \"${desc}\" desc'" cmd="${cmd} 'Home directory: ${home}' 'gui_input \"Enter new home directory for ${username}\" \"${home}\" home'" cmd="${cmd} 'Shell: ${shell}' 'user_edit_user_change_shell ${username}'" + cmd="${cmd} 'Groups: ${groups}' 'user_edit_user_groups ${username}'" cmd="${cmd} 'Set new password' 'passwd \"${username}\" ; read -p \"Press -- to continue\"'" eval "gui_menu user_edit_user 'Manage account ${username}' ${cmd}" run=${?} @@ -75,6 +77,30 @@ user_add_user() { # {{{ gui_message "Error creating user: `cat ${tmp}`" rm "${tmp}" } # }}} +user_edit_user_groups() { # {{{ + run=0 + while [ ${run} -eq 0 ] ; do + cmd="" + while IFS=: read group groupid members ; do + members=" ${members/,/ } " + status="" + if [[ "${groupid}" == "${gid}" ]] ; then + status="1" + elif [[ "${members}" == *\ ${1}\ * ]] ; then + status="X" + members="${members// ${1} / }" + else + status=" " + members="${members} ${1} " + fi + members="$( echo "${members}" | sed -e 's,^ *,,g' -e 's, *$,,g' -e 's, *, ,g' )" + members="${members// /,}" + cmd="${cmd} '[${status}] ${group}' 'sed -i /etc/group -e \"s/^\(${group}.*:\).*$/\1${members}/\"'" + done < <( cut -f 1,3,4 -d: /etc/group ) + eval "gui_menu user_edit_user_groups 'Manage Group Memberships of User ${1}' ${cmd}" + run=${?} + done +} # }}} user_edit_group_members() { # {{{ IFS=: read groupname haspwd gid members < <( grep ^${1}: /etc/group ) read oldline < <( grep ^${1}: /etc/group ) @@ -138,7 +164,7 @@ user_add_group() { # {{{ main() { # {{{ run=0 while [ ${run} -eq 0 ] ; do - cmd="'User Managemeint' ''" + cmd="'User Management' ''" while IFS=: read username haspwd uid gid desc home shell ; do cmd="${cmd} '${desc:-No description} (${username})' 'user_edit_user ${username}'" done < /etc/passwd