X-Git-Url: http://ftp.carnet.hr/carnet-debian/scm?p=ossec-hids.git;a=blobdiff_plain;f=src%2Finit%2Fadduser.sh;fp=src%2Finit%2Fadduser.sh;h=a4d88f3c5fbe6b787a3e4f80fba46345c7200d89;hp=0000000000000000000000000000000000000000;hb=3f728675941dc69d4e544d3a880a56240a6e394a;hpb=927951d1c1ad45ba9e7325f07d996154a91c911b diff --git a/src/init/adduser.sh b/src/init/adduser.sh new file mode 100755 index 0000000..a4d88f3 --- /dev/null +++ b/src/init/adduser.sh @@ -0,0 +1,114 @@ +#!/bin/sh + +set -e +set -u + +if ! [ $# -eq 5 ]; then + echo "Usage: ${0} USERNAME_DEFAULT USERNAME_MAIL USERNAME_REMOTE GROUPNAME DIRECTORY."; + exit 1; +fi + +echo "Wait for success..." + +USER=$1 +USER_MAIL=$2 +USER_REM=$3 +GROUP=$4 +DIR=$5 + +UNAME=$(uname); + +# Thanks Chuck L. for the mac addusers +if [ "$UNAME" = "Darwin" ]; then + if ! id -u "${USER}" > /dev/null 2>&1; then + + # Creating for <= 10.4 + if /usr/bin/sw_vers 2>/dev/null| grep "ProductVersion" | grep -E "10.2.|10.3|10.4" > /dev/null 2>&1; then + chmod +x ./init/darwin-addusers.pl + ./init/darwin-addusers.pl + else + chmod +x ./init/osx105-addusers.sh + ./init/osx105-addusers.sh + fi + fi + +else + if [ "$UNAME" = "FreeBSD" -o "$UNAME" = "DragonFly" ]; then + GROUPADD="/usr/sbin/pw groupadd" + USERADD="/usr/sbin/pw useradd" + OSMYSHELL="/sbin/nologin" + elif [ "$UNAME" = "SunOS" ]; then + GROUPADD="/usr/sbin/groupadd" + USERADD="/usr/sbin/useradd" + OSMYSHELL="/bin/false" + elif [ "$UNAME" = "AIX" ]; then + GROUPADD="/usr/sbin/mkgroup" + USERADD="/usr/sbin/useradd" + OSMYSHELL="/bin/false" + elif [ "$UNAME" = "OpenBSD" ]; then + GROUPADD="/usr/sbin/groupadd" + USERADD="/usr/sbin/useradd" + OSMYSHELL="/sbin/nologin" + else + # Alpine linux has adduser/addgroup + if [ -e "/etc/alpine-release" ]; then + GROUPADD="/usr/sbin/addgroup" + USERADD="/usr/sbin/adduser" + OSMYSHELL="/sbin/nologin" + else + # All current linux distributions should support system accounts for + # users/groups. If not, leave the GROUPADD/USERADD as it was before + # this change + sys_acct_chk () { + $1 --help 2>&1 | grep -e " *-r.*system account" >/dev/null 2>&1 && echo "$1 -r" || echo "$1" + } + GROUPADD=$(sys_acct_chk "/usr/sbin/groupadd -f") + USERADD=$(sys_acct_chk "/usr/sbin/useradd") + OSMYSHELL="/sbin/nologin" + fi + fi + + if [ -x /usr/bin/getent ]; then + if [ `getent group "${GROUP}" | wc -l` -lt 1 ]; then + ${GROUPADD} "${GROUP}" + fi + elif ! grep "^${GROUP}" /etc/group > /dev/null 2>&1; then + ${GROUPADD} "${GROUP}" + fi + + if [ "${OSMYSHELL}" = "/sbin/nologin" ]; then + # We first check if /sbin/nologin is present. If it is not, + # we look for /bin/false. If none of them is present, we + # just stick with nologin (no need to fail the install for that). + if [ ! -f ${OSMYSHELL} ]; then + if [ -f /bin/false ]; then + OSMYSHELL="/bin/false" + fi + fi + fi + + for U in ${USER} ${USER_MAIL} ${USER_REM}; do + if [ -x /usr/bin/getent ]; then + if [ `getent passwd ${U} | wc -l` -lt 1 ]; then + if [ "$UNAME" = "OpenBSD" ] || [ "$UNAME" = "SunOS" ]; then + ${USERADD} -d "${DIR}" -s ${OSMYSHELL} -g "${GROUP}" "${U}" + elif [ -e "/etc/alpine-release" ]; then + ${USERADD} -G ${GROUP} -s ${OSMYSHELL} -h ${DIR} -S ${U} + else + ${USERADD} "${U}" -d "${DIR}" -s ${OSMYSHELL} -g "${GROUP}" + fi + fi + elif [ ! `grep "^${U}" /etc/passwd > /dev/null 2>&1` ]; then + if [ "$UNAME" = "OpenBSD" ] || [ "$UNAME" = "SunOS" ]; then + ${USERADD} -d "${DIR}" -s ${OSMYSHELL} -g "${GROUP}" "${U}" + elif [ -e "/etc/alpine-release" ]; then + ${USERADD} -G ${GROUP} -s ${OSMYSHELL} -h ${DIR} -S ${U} + else + ${USERADD} "${U}" -d "${DIR}" -s ${OSMYSHELL} -g "${GROUP}" + fi + fi + done +fi + +echo "success"; +exit 0;