Magellan Linux

Contents of /trunk/mage/usr/lib/mage/museradd

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2723 - (show annotations) (download)
Tue Jul 22 14:20:33 2014 UTC (9 years, 9 months ago) by niro
File size: 2769 byte(s)
-museradd: busybox does not support -l switch
1 #!/bin/bash
2 # $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()
10 {
11 echo "$(basename $0 .sh) adds users to /etc/passwd."
12 echo " USAGE: $(basename $0 .sh) -o OPTIONS USER_NAME .."
13 echo
14 echo " OPTIONS: -o \"OPTS\"all options from /usr/sbin/useradd can be used."
15 echo
16 echo " Examples:"
17 echo " $(basename $0 .sh) -o \"-u 22 -g sshd -d /var/empty -s /bin/false\" sshd"
18 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
85 case "${opt}" in
86 o)
87 USER_OPTS="${OPTARG}"
88 ;;
89
90 -) break
91 ;;
92
93 *)
94 print_usage
95 exit 1
96 ;;
97 esac
98 done
99 shift $(($OPTIND - 1))
100
101 #exit if $1 is zero
102 if [ -z "$1" ]
103 then
104 print_usage
105 exit 1
106 fi
107
108 USER_TO_ADD="$1"
109
110 # busybox support needed?
111 if need_busybox_support adduser
112 then
113 echo -n " Adding user '${USER_TO_ADD}'"
114 [[ ! -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
124 # get the info
125 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