| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- #!/bin/bash
- # info: adding system user
- #----------------------------------------------------------#
- # Variable&Function #
- #----------------------------------------------------------#
- # Argument defenition
- user="$1"
- password="$2"
- email="$3"
- role="$4"
- owner="${5-vesta}"
- package="${6-default}"
- fname=$7
- lname=$8
- # Importing variables
- source $VESTA/conf/vars.conf
- source $V_FUNC/shared_func.sh
- #----------------------------------------------------------#
- # Verifications #
- #----------------------------------------------------------#
- # Checking arg number
- check_args '5' "$#" 'user password email role owner [package] [fname] [lname]'
- # Checking argument format
- format_validation 'user' 'password' 'email' 'role' 'owner' 'package'
- format_validation 'fname' 'lname'
- # Checking user
- is_user_free "$user"
- # Checking 'vesta' user creation
- if [ "$user" != 'vesta' ]; then
- # Checking owner
- is_user_valid "$owner"
- # Checking owner role
- is_user_privileged "$owner"
- # Checking owner permission
- is_user_privileged "$owner" "$role"
- # Checking package
- is_package_valid "$package"
- fi
- #----------------------------------------------------------#
- # Action #
- #----------------------------------------------------------#
- # Importing main config
- source $V_CONF/vesta.conf
- # Parsing package data
- package_data=$(cat $V_PKG/$package.pkg)
- # Checking shell
- shell_conf=$(echo "$package_data"|grep 'SHELL'|cut -f 2 -d \')
- case $shell_conf in
- nologin) shell='/sbin/nologin' ;;
- bash) shell='/bin/bash' ;;
- *) shell='/sbin/nologin' ;;
- esac
- # Adding user
- /usr/sbin/adduser "$user" -s "$shell" -c "$email" -m -d "$V_HOME/$user"
- # Adding password
- echo "$password" | /usr/bin/passwd "$user" --stdin >/dev/null 2>&1
- # Building directory tree
- if [ ! -z "$BACKUP_SYSTEM" ] && [ "$BACKUP_SYSTEM" != 'no' ]; then
- mkdir $V_HOME/$user/backup
- chmod 751 $V_HOME/$user/backup
- fi
- if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
- mkdir $V_HOME/$user/conf
- mkdir $V_HOME/$user/web
- mkdir $V_HOME/$user/tmp
- chmod 751 $V_HOME/$user/conf
- chmod 751 $V_HOME/$user/web
- chmod 777 $V_HOME/$user/tmp
- chown $user:$user $V_HOME/$user/web
- fi
- if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
- mkdir $V_HOME/$user/mail
- chmod 751 $V_HOME/$user/mail
- fi
- # Set permissions
- chmod -R a+x $V_HOME/$user
- # Checking quota
- if [ ! -z "$DISK_QUOTA" ] && [ "$DISK_QUOTA" != 'no' ]; then
- DISK_QUOTA=$(echo "$package_data"|grep 'DISK_QUOTA' | cut -f 2 -d \')
- set_quota "$user" "$DISK_QUOTA"
- fi
- #----------------------------------------------------------#
- # Vesta #
- #----------------------------------------------------------#
- # Adding user dir
- mkdir $V_USERS/$user
- # Creating configuration files and pipes
- touch $V_USERS/$user/user.conf
- echo "v_upd_sys_user_disk $user" >> $V_QUEUE/disk.pipe
- if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then
- mkdir $V_USERS/$user/cert
- touch $V_USERS/$user/web.conf
- echo "v_upd_web_domains_traff $user" >> $V_QUEUE/traffic.pipe
- echo "v_upd_web_domains_disk $user" >> $V_QUEUE/disk.pipe
- fi
- if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then
- touch $V_USERS/$user/dns.conf
- mkdir $V_USERS/$user/zones
- fi
- if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then
- touch $V_USERS/$user/mail_domains.conf
- touch $V_USERS/$user/mail_boxes.conf
- echo "v_upd_mail_domains_disk $user" >> $V_QUEUE/disk.pipe
- fi
- if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then
- touch $V_USERS/$user/db.conf
- echo "v_upd_db_bases_disk $user" >> $V_QUEUE/disk.pipe
- fi
- if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then
- touch $V_USERS/$user/cron.conf
- fi
- # Filling user config
- echo "FNAME='$fname'
- LNAME='$lname'
- PACKAGE='$package'
- $package_data
- SUSPENDED='no'
- OWNER='$owner'
- ROLE='$role'
- CONTACT='$email'
- REPORTS='yes'
- IP_OWNED='0'
- U_CHILDS='0'
- U_DIR_DISK='0'
- U_DISK='0'
- U_BANDWIDTH='0'
- U_WEB_DOMAINS='0'
- U_WEB_SSL='0'
- U_DNS_DOMAINS='0'
- U_DATABASES='0'
- U_MAIL_DOMAINS='0'
- DATE='$V_DATE'" > $V_USERS/$user/user.conf
- # Filling owner config
- if [ "$user" != 'vesta' ]; then
- echo "USER='$user'" >> $V_USERS/$owner/child.conf
- increase_user_value "$owner" 'U_CHILDS'
- fi
- # Hiding password
- dt="$(date +%m-%d-%y" "%H:%m:%S)"
- V_EVENT="$dt $V_SCRIPT $user ***** $email $role $owner $package $fname $lname"
- # Logging
- log_event 'system' "$V_EVENT"
- exit $OK
|