usermod 2.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
#! /bin/bash
# ------------------------------------------------------------------------------
# Copyright (c) 2010, 2011, 2012 Vifib SARL and Contributors.
# All Rights Reserved.
#
# WARNING: This program as such is intended to be used by professional
# programmers who take the whole responsibility of assessing all potential
# consequences resulting from its eventual inadequacies and bugs
# End users who are looking for a ready-to-use solution with commercial
# guarantees and support are strongly advised to contract a Free Software
# Service Company
#
# This program is Free Software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 3
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
#
# ------------------------------------------------------------------------------
#
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
# Simulate the command usermod to change a user on the Cygwin
#   usermod -d path -g init-group -s /bin/false -G group NAME
#
#   -g, --gid GROUP
#     The group name or number of the user's new initial login group. The group must exist.
#
#   -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]
#     A list of supplementary groups which the user is also a member of.
#
#   -s
#     Shell used by user
#

while getopts "Dd:g:G:p:s:r" opt ; do
    case $opt in
        d)
            USER_HOME=$OPTARG
            ;;
        g)
48
            USER_INIT_GROUP=$OPTARG
49 50
            ;;
        G)
51
            USER_OTHER_GROUP=$OPTARG
52 53 54 55 56 57 58 59 60 61
            ;;
        p)
            USER_PASSWORD=$OPTARG
            ;;
        s)
            USER_SHELL=$OPTARG
            ;;
        r)
            ;;
        *)
Marco Mariani's avatar
Marco Mariani committed
62
            echo Error while adding user in Cygwin
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
            exit 1
            ;;
    esac
done

shift $(($OPTIND - 1))
USER_NAME=$1

if [[ "$USER_NAME" == "" ]] ; then
    echo Error: no user name specified.
    exit 1
fi
USER_HOME=${USER_HOME:=/home/$USER_NAME}

grep -q "^${USER_NAME}" /etc/passwd || mkpasswd | grep "^${USER_NAME}:" >> /etc/passwd
[[ $USER_HOME == "/home/$USER_NAME" ]] || sed -i -e "s%:/home/${USER_NAME}:%:${USER_HOME}:%g" /etc/passwd
79 80 81
[[ ! "$USER_HOME" == "" ]] && [[ ! -f $USER_HOME ]] && mkdir -p $USER_HOME && chown $USER_NAME.$USER_INIT_GROUP $USER_HOME

set_primary_group $USER_NAME $USER_INIT_GROUP