#!/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}"