Magellan Linux

Diff of /branches/mage-next/src/helper/museradd.in

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/mage/usr/lib/mage/museradd revision 42 by niro, Mon Jan 10 01:58:35 2005 UTC branches/mage-next/src/helper/museradd.in revision 2722 by niro, Tue Jul 22 14:19:44 2014 UTC
# Line 1  Line 1 
1  #!/bin/bash  #!/bin/bash
2  # version: 0.3.6-r11  # $Id$
3    
4    # include all needed files
5    [ -f /etc/mage.rc.global ] && source /etc/mage.rc.global
6    [ -f ${MAGERC} ] && source ${MAGERC}
7    [ -f ${MLIBDIR}/mage4.functions.sh ] && source ${MLIBDIR}/mage4.functions.sh
8    
9  print_usage()  print_usage()
10  {  {
# Line 13  print_usage() Line 18  print_usage()
18   echo   echo
19  }  }
20    
21    busybox_fix_user_opts()
22    {
23     local i
24     local FIXED_USER_OPTS
25    
26     for i in $*
27     do
28     case $1 in
29     -d) shift; FIXED_USER_OPTS+=" -h $1" ;;
30     -g) shift; FIXED_USER_OPTS+=" -G $1" ;;
31     -G) shift; shift; continue;; # will be parsed through fix_group_opts
32     -u) shift; [[ $1 -lt 100 ]] && FIXED_USER_OPTS+=" -S"; FIXED_USER_OPTS+=" -u $1" ;;
33     -r) FIXED_USER_OPTS+=" -S" ;;
34     -M) FIXED_USER_OPTS+=" -H" ;;
35     -l) continue ;; # just ignore this switch, adduser does not support it
36     *) FIXED_USER_OPTS+=" $1" ;;
37     esac
38     shift
39     done
40    
41     echo "${FIXED_USER_OPTS}"
42    }
43    
44    busybox_fix_group_opts()
45    {
46     local i
47     local FIXED_GROUP_OPTS
48    
49     for i in $*
50     do
51     case $1 in
52     -G) shift; FIXED_GROUP_OPTS+="$(echo $1 | sed 's:,:\ :g')" ;;
53     esac
54     shift
55     done
56    
57     echo "${FIXED_GROUP_OPTS}"
58    }
59    
60    fix_usermod_opts()
61    {
62     local i
63     local FIXED_USERMOD_OPTS
64    
65     for i in $*
66     do
67     case $1 in
68     -M) : ;; # usermod does not support the -M switch
69     *) FIXED_USERMOD_OPTS+=" $1" ;;
70     esac
71     shift
72     done
73    
74     echo "${FIXED_USERMOD_OPTS}"
75    }
76    
77    if [[ ! -z ${MROOT} ]] && [[ ${MROOT} != / ]]
78    then
79     chroot="chroot ${MROOT} "
80    else
81     chroot=""
82    fi
83    
84  while getopts "o:-" opt ; do  while getopts "o:-" opt ; do
85   case "${opt}" in   case "${opt}" in
86   o)   o)
# Line 39  fi Line 107  fi
107    
108  USER_TO_ADD="$1"  USER_TO_ADD="$1"
109    
110  #start nscd to cache passwd  # busybox support needed?
111  $(which nscd) -i passwd  if need_busybox_support adduser
 # get the info  
 my_user="$(getent passwd ${USER_TO_ADD})"  
   
 if [ -z "${my_user}" ]  
112  then  then
113   echo "     Adding user '${USER_TO_ADD}' ..."   echo -n "     Adding user '${USER_TO_ADD}'"
114   useradd ${USER_OPTS} "${USER_TO_ADD}"   [[ ! -z ${chroot} ]] && echo -n " into MROOT='${MROOT}'"
115     echo " ..."
116     ${chroot} adduser -S -D $(busybox_fix_user_opts ${USER_OPTS}) "${USER_TO_ADD}"
117     for grp in $(busybox_fix_group_opts ${USER_OPTS})
118     do
119     ${chroot} addgroup "${USER_TO_ADD}" "${grp}"
120     done
121    
122    # normal systems
123  else  else
124   echo "     Modifing user '${USER_TO_ADD}' ..."   # get the info
125   usermod ${USER_OPTS} "${USER_TO_ADD}"   my_user="$(${chroot} getent passwd ${USER_TO_ADD})"
126    
127     if [ -z "${my_user}" ]
128     then
129     echo -n "     Adding user '${USER_TO_ADD}'"
130     [[ ! -z ${chroot} ]] && echo -n " into MROOT='${MROOT}'"
131     echo " ..."
132     ${chroot} useradd -r ${USER_OPTS} "${USER_TO_ADD}"
133     else
134     echo -n "     Modifing user '${USER_TO_ADD}'"
135     [[ ! -z ${chroot} ]] && echo -n " in MROOT='${MROOT}'"
136     echo " ..."
137     ${chroot} usermod $(fix_usermod_opts ${USER_OPTS}) "${USER_TO_ADD}"
138     fi
139  fi  fi

Legend:
Removed from v.42  
changed lines
  Added in v.2722