Информация
На главную Главная

Мой t-cards.ru
Войти Войти
Зарегистрироваться Регистрация

Разное
Форум Форум
Вернуться Форумы на t-cards.ru> Hard"n"Soft
Логин
Пароль
Регистрация Участники Поиск >> FAQ


Сообщения в теме: "Настройка ProFTPd с хранением аккаунтов в MySQL..."
14.03.2005 14:45
Admin

Регистрация: 05.10.2005
Проживание: Москва
Сообщения: 284
По умолчаниюНастройка ProFTPd с хранением аккаунтов в MySQL

Пример:
#proftpd.conf
ServerType standalone
ServerIdent on "Linux Gentoo 2.6.10 ProFTPd 1.10 Ready"
DefaultServer on
IdentLookups off
AllowForeignAddress off

Port 21
Umask 022

MaxInstances 30
MaxClientsPerHost 10 "Reached max number of connections from this host"
MaxClientsPerUser 3 "Reached max number of connections for this username"
MaxLoginAttempts 3 "Reached max login attempts"

TimeoutIdle 600
TimeoutLogin 120
TimeoutNoTransfer 900

User ftp
Group ftp

TransferLog /var/log/proftpd.log
ExtendedLog /var/log/proftpd.log

AllowOverwrite on

#Настройки коннекта на MySQL - база данных home, ftp_login ftp_passwd - логин с паролем для входа на сервер, localhost - адрес сервера
SQLConnectInfo home@localhost:3306 ftp_login ftp_passwd
SQLAuthTypes PlainText
#ftp_users - имя таблицы с юзерами, далее по порядку поля логин, пароль, номер юзера и группы (у меня по умолчанию 5001), домашний каталог и оболочка (у меня везде /bin/nologin)
SQLUserInfo ftp_users userid passwd uid gid homedir shell
DefaultRoot ~
RequireValidShell off
#ftp_groups - имя таблицы с группами, groupname везде у меня ftp, gid=5001, members везде NULL. Только одна запись там.
SQLGroupInfo ftp_groups groupname gid members
SQLAuthenticate users groups
SQLLogFile /var/log/proftpd_sql.log
#И далее все по списку, настройки анонимного доступа, если надо и т.д..


Скрипты для создания таблиц в БД:

CREATE TABLE ftp_groups (
id INTEGER(11) NOT NULL AUTO_INCREMENT,
groupname VARCHAR(255) NOT NULL,
gid INTEGER(11) NOT NULL DEFAULT "0",
members VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY id (id)
)TYPE=MyISAM ;

CREATE TABLE ftp_users (
id INTEGER(11) NOT NULL AUTO_INCREMENT,
userid VARCHAR(50) NOT NULL,
passwd VARCHAR(100) NOT NULL,
uid INTEGER(11) NOT NULL DEFAULT "0",
gid INTEGER(11) NOT NULL DEFAULT "0",
homedir VARCHAR(255) NOT NULL,
shell VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY id (id),
UNIQUE KEY userid (userid)
)TYPE=MyISAM ;
14.03.2005 15:22
Admin

Регистрация: 05.10.2005
Проживание: Москва
Сообщения: 284
По умолчаниюНастройка ProFTPd с хранением аккаунтов в MySQL

А теперь вот скрипт для добавления нового юзера (кто хотите, усовершенствуйте, пока некогда :)))
Пользовать например вот так: "./addftpuser login password"

#!/bin/bash

SQL_USER="ftp_user"
SQL_PW="ftp_passwd"
SQL_DB="home"
HOME_DIR="/home/ftp/"

if [ "$2" = "" ]; then
echo "No user or password!"
exit 1
fi

if [ "$1" != "" ] && [ "$2" != "" ]; then
SQL_QUERY_CHECK="SELECT userid FROM ftp_users WHERE userid="""$1""""
STR=`mysql -u"$SQL_USER" -p"$SQL_PW" -D"$SQL_DB" -e"$SQL_QUERY_CHECK" |grep "$1"`

if [ ! -z $STR ];
then echo "User ""$1"" already exists!"
exit 1
fi
echo "Adding user to database..."
SQL_QUERY="INSERT ftp_users(userid,passwd,uid,gid,homedir,shell) SELECT """$1""", """$2""", 5001,5001, """$HOME_DIR""$1""","/bin/nologin""
mysql -u"$SQL_USER" -p"$SQL_PW" -D"$SQL_DB" -e"$SQL_QUERY"
echo "Creating home directory ""$HOME_DIR""$1""..."
mkdir "$HOME_DIR""$1"
echo "Setting owner on directory..."
chown 5001:5001 "$HOME_DIR""$1"
echo "Done!"
exit 0
fi
14.03.2005 20:19
Новичок

Регистрация: 07.10.2005
Проживание: Град Обреченный
Сообщения: 12
По умолчаниюНастройка ProFTPd с хранением аккаунтов в MySQL

Вот и поговорили )))
14.03.2005 20:35
Admin

Регистрация: 05.10.2005
Проживание: Москва
Сообщения: 284
По умолчаниюНастройка ProFTPd с хранением аккаунтов в MySQL

Чего ты смеешься, я последний скрипт на тебе проверил! :))
21.03.2005 17:09
Admin

Регистрация: 05.10.2005
Проживание: Москва
Сообщения: 284
По умолчаниюНастройка ProFTPd с хранением аккаунтов в MySQL

Вот еще скрипт, чтоб удалить юзера (кстати модицифировал скрипт добавления):

Пользовать например вот так: "./delftpuser login"

#!/bin/bash

SQL_USER="ftp_user"
SQL_PW="ftp_passwd"
SQL_DB="home"
HOME_DIR="/home/ftp/"

if [ "$2" = "" ]; then
echo "No user!"
exit 1
fi

SQL_QUERY_CHECK="SELECT userid FROM ftp_users WHERE userid="""$1""""
STR=`mysql -u"$SQL_USER" -p"$SQL_PW" -D"$SQL_DB" -e"$SQL_QUERY_CHECK" |grep "$1"`

if [ -z $STR ];
then echo "No user ""$1"" in database!"
exit 1
fi

echo "Deleting user from database..."
SQL_QUERY="DELETE FROM ftp_users WHERE userid="""$1""""
mysql -u"$SQL_USER" -p"$SQL_PW" -D"$SQL_DB" -e"$SQL_QUERY"

echo "Removing user files..."
rm -r "$HOME_DIR""$1"/*.*
echo "Removing directory..."
rmdir "$HOME_DIR""$1"
echo "Done!"

exit 0