Skip to main content

Create User Linux and DB

Dit script wordt gebruikt om een of meer gebruikers aan te maken. Gebruiker wordt aangemaakt op Linux systeem en op de database. De gebruiker krijgt een database met de naam hetzelfde als de gebruikersnaam.

adduser.sh

#!/bin/bash
# Script to add a user to Linux system

DB_FILE=createDBUsers.tmp

addThisUser() {
if [ $(id -u) -eq 0 ]; then

        echo "" >> $DB_FILE

        if [ "$1" == "" ]; then
                read -p "Enter username : " username
        else
                username=$1
        fi
        if [ "$2" == "" ]; then
                read -s -p "Enter password : " password
        else
                password=$2
        fi

        egrep "^$username" /etc/passwd >/dev/null
        if [ $? -eq 0 ]; then
                echo "$username exists!"
                exit 1
        else
                U_HOME=/var/www/softwaredeveloper/$username
                U_GROUP=sftp
                U_SHELL=/bin/bash

                pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)

                useradd -d $U_HOME -g $U_GROUP -m -s $U_SHELL -p $pass $username
                [ $? -eq 0 ] && echo "User $username has been added to system!" || echo "Failed to add a user!"

                chown $username $U_HOME
                echo "<?php echo \"welkom $username\"; ?>" > $U_HOME/index.php
                chown $username $U_HOME/index.php

                echo "" > $DB_FILE
                echo  "CREATE USER \`$username\`@\`%\` IDENTIFIED BY '$password';" >> $DB_FILE
                echo  "ALTER USER  \`$username\`@\`%\` REQUIRE NONE;" >> $DB_FILE
                echo  "CREATE DATABASE IF NOT EXISTS \`$username\`;" >> $DB_FILE
                echo  "GRANT ALL PRIVILEGES ON \`$username\`.* TO \`$username\`@\`%\`;" >> $DB_FILE


                if [ "$2" == "" ]; then
                        echo "Database not created (will only be done automatically is password is provided via command line"
                        echo "Create database with mysql < $DB_FILE"
                        echo "for batch creation uncomment line #mysql < $DB_FILE"
                else
                        mysql < $DB_FILE
                        echo "Database $username created"
                fi
        fi
else
        echo "Only root may add a user to the system"
        echo
        echo "Usage:"
        echo "sudo $0 u12345 password"
        exit 2
fi
}

# is parameter is file then read input from file <user> <password>
# else read two command line params
if test -f "$1"; then
        while IFS= read -r line
        do
                addThisUser $line
        done < $1
else
        addThisUser $1 $2
fi

Beschrijving sudo adduser.sh gebruiker password

In regel 11 en 16 wordt er gecontroleerd of de gebruikersnaam en wachtwoord als parameters zijn meegegven. Als dat niet het geval dan vraagt het script om een gebruikersnaam en/of wachtwoord.

Regel 22 controleert of de opgegeven gebruierk al bestaat.

Op regel 33 wordt de gebruiker aan het Linux systeem toegeovoegd, de waarden die daar boven staan worden gebruikt bij het aanmaken van een gebruiker.

Op regel 37 wordt een standaard index.php voor de gebruiker aangemaakt.

Op regel 40 en verder wordt een file gemaakt waarin SQL commando's worden geplaatst. De inhoud van de ze file moet na dit script nog zelf worden uitgevoerd.

Op regel 47 wordt gekeken of er een password is ingegeven als parameter als dat het geval is dan wordt de db user ook gemaakt.

Hiervoor moet mysql zo zijn geconfigureerd dat er een file vanuit de command line kan worden uitgevoerd.

Op regel 67 begint het scipt eigenlijk (alles daarvoor is een grote functie). Als parameter 1 een file is dan wordt er een file met gerbuikersnamen en wachtwoorden verewerkt en anders wordt de functie 'addThisUser' gewoon aangeroepen metdezelfde paramters alsdat dit scipt is aangeroepen.

--