Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ########## Создание нового пользователя ##########
- ###### Основные переменные ######
- # c - Комментарий
- # n - Имя пользователя
- # PASS - Пароль
- # q - Количество подключений пользователя
- # e -Адрес электронной почты, куда отправлять логин/пасс
- homedir='/var/data' # Корневой каталог FTP-сервера
- logdir='/var/log/usergen' # Каталог, в котором будут храниться протоколы работы скрипта
- g='ftpusers' # g - Основная группа
- s='/usr/sbin/nologin' # s - Шелл пользователя. По умолчанию /usr/sbin/nologin
- basedir='/root/ftp' # Каталог с базой пользователей
- basename='users'
- basenamec='users.cpt'
- admaddr='admin@domain.com'
- ###### Проверка наличия директорий и файлов ######
- # Проверка наличлия корневой директории FTP-сервера
- if ! [ -d /var/data ]; then
- echo 'No ftp-root directory!'
- fi
- # Проверка наличия директории лог-файлов
- #if ! [ -d /var/log/usergen ]; then
- # echo 'No log directory!'
- #fi
- ##### Ввод пользовательских данных ######
- ##### Текстовое меню #####
- clear
- echo "Создать пользователя для внутреннего использования?"
- echo "Y/n"
- read f1
- #### Проверка ввода ###
- if [ -z f1 ];
- then
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Пустой ввод!"
- echo
- exit 1
- fi
- if [ "`echo $n | sed 's/[y,n]*//'`" = "" ];
- then
- echo
- echo "Ok, продолжаем!"
- else
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "введите или y или n !"
- exit 1
- fi
- if [ $f1 == y ]; ## Начало ветвления "Внутренний пользователь"
- then
- echo 'Введите имя пользователя'
- read n
- ## Проверка корректности ввода ##
- ## Пустой ввод
- if [ -z $n ];
- then
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Не введен логин пользователя"
- echo
- exit 1
- fi
- ## Допустимые символы ##
- if [ "`echo $n | sed 's/[a-z,0-9,_,-]*//'`" = "" ];
- then
- echo
- echo "Ok, продолжаем!"
- else
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Введите корректный логин пользователя!"
- exit 1
- fi
- ###### Проверка существования пользователя ######
- grep "$n:" /etc/passwd # >/dev/null
- if [ $? -ne 1 ];
- then
- echo 'User exist!'
- exit 1
- fi
- echo 'ВНИМАНИЕ! Пользователь будет добавлен в группу ftpusers'
- echo 'Shell по умолчанию /usr/sbin/nologin'
- echo 'Введите описание пользователя'
- read c
- # Генерируется пароль
- echo "Генерация пароля..."
- PASS=`pwgen -n1 -A`
- ######## Создание пользователя #########
- # -b - базовый каталог. В нем будет создан каталог пользователя
- # -g - основная группа. Для пользователей FTP основной группой явзялется ftpusers
- # -G - Дополнительные группы
- # -m - Создать каталог пользователя
- # -s - оболочка пользователя
- # -N - Не создавать группу с таким же именем, что и у пользователя
- useradd -b $homedir -c "$c" -g $g -G users -m -N -s $s $n
- #Изменение пароля пользователя
- echo "$n:$PASS"| chpasswd
- #Установка корректных прав на каталог
- chown root.ftpusers $homedir/$n
- chmod g+w $homedir/$n
- #Удаление скрытых файлов
- rm -rf $homedir/$n/.*
- clear
- echo
- echo "Создан пользователь $n с паролем $PASS Комментарий: $c"
- echo
- exit 0
- fi ## Конец ветвления "Внутренний пользователь"
- #### Расшифровываем базу пользователей
- echo 'Снимите защиту базы пользователей'
- echo 'Введите пароль'
- read pass1
- ccrypt -d -K "$pass1" $basedir/$basenamec
- if [ ! -e $basedir/$basename ];
- then
- echo 'Защита базы данных не снята!'
- exit 1
- fi
- echo 'Введите имя пользователя'
- read n
- ## Проверка корректности ввода ##
- ## Пустой ввод
- if [ -z $n ]; then
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Не введен логин пользователя"
- echo
- exit 1
- fi
- ## Допустимые символы ##
- if [ "`echo $n | sed 's/[a-z,0-9,_,-]*//'`" = "" ]; then
- echo
- echo "Ok, продолжаем!"
- else
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Введите корректный логин пользователя!"
- exit 1
- fi
- ###### Проверка существования пользователя ######
- grep "$n:" /etc/passwd # >/dev/null
- if [ $? -ne 1 ]; then
- echo 'User exist!'
- exit 0
- fi
- echo 'ВНИМАНИЕ! Пользователь будет добавлен в группу ftpusers'
- echo 'Shell по умолчанию /usr/sbin/nologin'
- echo 'Введите описание пользователя'
- read c
- echo 'Количество подключений'
- read q
- ## Проверка корректности ввода ##
- ## Пустой ввод
- if [ -z $q ]; then
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Значение не введено!"
- echo
- exit 1
- fi
- ## Допустимые символы ##
- if [ "`echo $q | sed 's/[0-9]*//'`" = "" ]; then
- echo
- echo "Ok, продолжаем!"
- else
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Некорректный ввод!"
- exit 1
- fi
- echo 'Адерс электронной почты Организации'
- read e
- ## Проверка корректности ввода ##
- ## Пустой ввод
- if [ -z $e ]; then
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Адрес электронной почты не введен!"
- echo
- exit 1
- fi
- ## Допустимые символы ##
- if [ "`echo $LOGIN | sed 's/[a-z,0-9,_,-,@,.]*//'`" = "" ]; then
- echo
- echo "Ok, продолжаем!"
- else
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Введите корректный адрес!"
- exit 1
- fi
- clear
- echo "Использовать блокировку учетной записи по сроку давности?"
- echo "Y/n"
- read f2
- #### Проверка ввода ###
- if [ -z f2 ];
- then
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "Пустой ввод!"
- echo
- exit 1
- fi
- if [ "`echo $f2 | sed 's/[y,n]*//'`" = "" ];
- then
- echo
- echo "Ok, продолжаем!"
- else
- clear
- echo
- echo "### ОШИБКА!!! ###"
- echo
- echo "введите или y или n !"
- echo "Пользователь НЕ СОЗДАН!"
- exit 1
- fi
- if [ $f2 == y ];
- then
- echo "Введите дату истечения срока действия пароля $n"
- echo "в формате ДД/ММ/ГГГГ"
- read datb
- else
- datb="00/00/0000"
- fi
- # Генерируется пароль
- echo "Генерация пароля..."
- PASS=`pwgen -n1 -A`
- ######## Создание пользователя #########
- # -b - базовый каталог. В нем будет создан каталог пользователя
- # -g - основная группа. Для пользователей FTP основной группой явзялется ftpusers
- # -G - Дополнительные группы
- # -m - Создать каталог пользователя
- # -s - оболочка пользователя
- # -N - Не создавать группу с таким же именем, что и у пользователя
- useradd -b $homedir -c "$c" -g $g -G users -m -N -s $s $n
- #Изменение пароля пользователя
- echo "$n:$PASS"| chpasswd
- #Установка даты истечения срока действия аккаунта, если она была задана. Проверка переменной f2
- echo $f2
- echo $datab
- echo $n
- if [ $f2 == y ];
- then
- chage -E "$datb" $n
- fi
- #Установка корректных прав на каталог
- chown root.ftpusers $homedir/$n
- chmod g+w $homedir/$n
- #Удаление скрытых файлов
- rm -rf $homedir/$n/.*
- #Запись в базу
- tme=`date +%H:%M:%S`
- dte=`date +%d.%m.%Y`
- echo "$n $PASS $q $e $tme $dte blocked $datb comment: $c " >> $basedir/$basename
- #### Защита базы пользователей
- echo 'Шифрование базы данных...'
- if [ -e $basedir/$basenamec ];
- then
- echo "ВНИМАНИЕ! База уже зашифрована!"
- echo "Выход..."
- exit 1
- fi
- ccrypt -e -K "$pass1" $basedir/$basename
- if [ ! -e $basedir/$basenamec ];
- then
- echo 'ВНИМАНИЕ! База не зашифрована!'
- exit 1
- fi
- #### Отправка пароля на почту
- #Отправка по заявленному адресу
- #mail -s "STORAGE: User created" $e < "Password: $PASS"
- #Отрпавка на мыло мне
- #mail -s "STORAGE: User created" $admaddr < "Password: $PASS"
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement