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 ;
|
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
|
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
|