You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.2 KiB
80 lines
3.2 KiB
#!/bin/bash
|
|
#
|
|
# Initial script for Live operating system
|
|
# This script are launching before starting init from linux-live script.
|
|
# Current dir allways must be set to root (/)
|
|
# All system path must be relative, except initrd dirs
|
|
|
|
ENABLED=yes
|
|
[ "$ENABLED" != "yes" ] && exit 0
|
|
|
|
PATH=.:/:/usr/bin:/usr/local/bin:/usr/local/sbin
|
|
DEBUGMODE=no
|
|
. usr/lib/ublinux/functions
|
|
. usr/lib/ublinux/os-config
|
|
debug_mode "$0" "$@"
|
|
|
|
echo $SYSCONF | grep -q ^/ && SYSCONF=.$SYSCONF
|
|
SOURCE=${SYSCONF}/config; [ -f ${SOURCE} ] && . ${SOURCE} 2>/dev/null
|
|
|
|
#$1 - username
|
|
#$2 - passwd
|
|
function set_passwd() {
|
|
sed -i /^$1:/d etc/shadow
|
|
echo "$1:$2:18652:0:99999:7:::" >> etc/shadow
|
|
sed -i s/$1:[!]*:/$1:x:/ etc/passwd
|
|
# if [ -d etc/tcb/$1 ] ;then
|
|
# sed -i /^$1:/d etc/tcb/$1/shadow
|
|
# echo "$1:$2:18652:0:99999:7:::" >> etc/tcb/$1/shadow
|
|
# fi
|
|
}
|
|
|
|
for ITEM_USERGROUP in $(echo "${DEFAULTGROUP},${ADMGROUPS},${USERGROUPS}" | tr ",;" " " ); do
|
|
FINDGROUP=$(grep -i "g\s*${ITEM_USERGROUP}\s*[[:digit:]]\s*" usr/share/ublinux-sysusers/*.sysusers | cut -d ":" -f2 | xargs)
|
|
if [[ -n ${FINDGROUP} ]]; then
|
|
FINDGROUP_NAMEGROUP=$(echo ${FINDGROUP} | cut -d' ' -f2)
|
|
FINDGROUP_IDGROUP=$(echo ${FINDGROUP} | cut -d " " -f3)
|
|
chroot . usr/bin/groupadd -f -g ${FINDGROUP_IDGROUP} ${FINDGROUP_NAMEGROUP}
|
|
fi
|
|
done
|
|
|
|
[ -f /tmp/.credential ] && . /tmp/.credential && rm -f /tmp/.credential
|
|
[ -z "$NEEDEDUSERS" ] && NEEDEDUSERS="$DEFAULTUSER:$ADMUID:$DEFAULTPASSWD:Администратор"
|
|
[ -z "$(cmdline_value users)" ] || NEEDEDUSERS=$(cmdline_value users)
|
|
[ "$NOSECUREROOTPASSWD" = "$DEFAULTROOTPASSWD" ] && ADDADM=yes
|
|
|
|
|
|
for a in $(echo $NEEDEDUSERS | tr ",;" " " ) ;do
|
|
NEEDEDUSER="$(echo $a | awk -F: '{ print $1 }')"
|
|
NEEDEDUID="$(echo $a | awk -F: '{ print $2 }')"
|
|
NEEDEDPASS="$(echo $a | awk -F: '{ print $3 }')"
|
|
NEEDEDCOMMENT="$(echo $a | awk -F: '{ print $4 }')"
|
|
[ "${NEEDEDPASS}" = "x" ] && NEEDEDPASS="${DEFAULTPASSWD}"
|
|
ADDGROUPS="${USERGROUPS}"
|
|
[ "$NEEDEDUID" = "$ADMUID" -a "$ADDADM" = "yes" ] && ADDGROUPS="${USERGROUPS}","${ADMGROUPS}"
|
|
# create user
|
|
if ! grep -q ^"${NEEDEDUSER}": etc/passwd ;then
|
|
chroot . usr/sbin/useradd -M -G "${DEFAULTGROUP}" -u "${NEEDEDUID}" -c "${NEEDEDCOMMENT}" "${NEEDEDUSER}" >/dev/null 2>&1 || chroot . usr/sbin/adduser -D -H -G "${DEFAULTGROUP}" -u "${NEEDEDUID}" -g "${NEEDEDCOMMENT}" "${NEEDEDUSER}" >/dev/null 2>&1
|
|
fi
|
|
# add to groups
|
|
for b in $(echo "${ADDGROUPS}" | tr ",;" " " ) ;do
|
|
chroot . usr/sbin/usermod -a -G $b "${NEEDEDUSER}" >/dev/null 2>&1
|
|
done
|
|
# set password
|
|
[ "${NEEDEDPASS}" = "" ] || set_passwd "${NEEDEDUSER}" "${NEEDEDPASS}"
|
|
# create home
|
|
if [ ! -d home/"${NEEDEDUSER}" ] ;then
|
|
cp -a etc/skel home/"${NEEDEDUSER}"
|
|
chroot . bin/chown -R "${NEEDEDUSER}":"${NEEDEDUSER}" home/"${NEEDEDUSER}"
|
|
chroot . chmod -fR u+rw,g-rwx,o-rwx home/"${NEEDEDUSER}"/
|
|
chroot . chmod -f 700 home/"${NEEDEDUSER}"
|
|
elif [ "${UPDATEHOME}" = "yes" ] ;then
|
|
cp -afT etc/skel home/"${NEEDEDUSER}"
|
|
#rsync -rlpt --ignore-existing etc/skel/ home/"${NEEDEDUSER}"
|
|
chroot . bin/chown -R "${NEEDEDUSER}":"${NEEDEDUSER}" home/"${NEEDEDUSER}"
|
|
chroot . chmod -fR u+rw,g-rwx,o-rwx home/"${NEEDEDUSER}"/
|
|
chroot . chmod -f 700 home/"${NEEDEDUSER}"
|
|
fi
|
|
done
|
|
set_passwd root "${DEFAULTROOTPASSWD}"
|