Magellan Linux

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1951 - (show annotations) (download)
Fri Oct 12 12:56:07 2012 UTC (11 years, 6 months ago) by niro
File size: 2517 byte(s)
-users created by packagemanagement should be system users
1 #!/bin/bash
2 # $Header: /home/cvsd/magellan-cvs/magellan-src/mage/usr/lib/mage/museradd,v 1.4 2005-06-01 15:48:43 niro Exp $
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 *) FIXED_USER_OPTS+=" $1" ;;
35 esac
36 shift
37 done
38
39 echo "${FIXED_USER_OPTS}"
40 }
41
42 busybox_fix_group_opts()
43 {
44 local i
45 local FIXED_GROUP_OPTS
46
47 for i in $*
48 do
49 case $1 in
50 -G) shift; FIXED_GROUP_OPTS+="$(echo $1 | sed 's:,:\ :g')" ;;
51 esac
52 shift
53 done
54
55 echo "${FIXED_GROUP_OPTS}"
56 }
57
58 if [[ ! -z ${MROOT} ]] && [[ ${MROOT} != / ]]
59 then
60 chroot="chroot ${MROOT} "
61 else
62 chroot=""
63 fi
64
65 while getopts "o:-" opt ; do
66 case "${opt}" in
67 o)
68 USER_OPTS="${OPTARG}"
69 ;;
70
71 -) break
72 ;;
73
74 *)
75 print_usage
76 exit 1
77 ;;
78 esac
79 done
80 shift $(($OPTIND - 1))
81
82 #exit if $1 is zero
83 if [ -z "$1" ]
84 then
85 print_usage
86 exit 1
87 fi
88
89 USER_TO_ADD="$1"
90
91 # busybox support needed?
92 if need_busybox_support adduser
93 then
94 echo -n " Adding user '${USER_TO_ADD}'"
95 [[ ! -z ${chroot} ]] && echo -n " into MROOT='${MROOT}'"
96 echo " ..."
97 ${chroot} adduser -S -D $(busybox_fix_user_opts ${USER_OPTS}) "${USER_TO_ADD}"
98 for grp in $(busybox_fix_group_opts ${USER_OPTS})
99 do
100 ${chroot} addgroup "${USER_TO_ADD}" "${grp}"
101 done
102
103 # normal systems
104 else
105 # get the info
106 my_user="$(${chroot} getent passwd ${USER_TO_ADD})"
107
108 if [ -z "${my_user}" ]
109 then
110 echo -n " Adding user '${USER_TO_ADD}'"
111 [[ ! -z ${chroot} ]] && echo -n " into MROOT='${MROOT}'"
112 echo " ..."
113 ${chroot} useradd -r ${USER_OPTS} "${USER_TO_ADD}"
114 else
115 echo -n " Modifing user '${USER_TO_ADD}'"
116 [[ ! -z ${chroot} ]] && echo -n " in MROOT='${MROOT}'"
117 echo " ..."
118 ${chroot} usermod ${USER_OPTS} "${USER_TO_ADD}"
119 fi
120 fi