Продолжаем настройку своего собственного хостинга. Следующий этап настройки это реализация возможности предоставлять FTP доступ клиентам хостинга (нескольким пользователям). Причем каждый пользователь должен получить доступ к собственной папке (не иметь доступ к чужим данным). Реализовывать это пользователями системы нерационально. Лучший вариант хранения этих пользователей в БД MySQL. Сейчас рассмотрим, как это сделать.
1. Поставим сам FTP сервер ProFTPD:
Emerge proftpd
Дождемся установки. И запустим наш ftp сервер:
/etc/init.d/proftpd start
2. Теперь в заранее поставленной MySQL, создаем базу данных proftpd:
CREATE DATABASE `proftpd` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `proftpd`;
Теперь создаем 2 таблицы и наполняем их тестовыми данными:
CREATE TABLE IF NOT EXISTS `groups` ( `groupname` varchar(30) NOT NULL default '', `gid` int(11) NOT NULL default '0', `members` varchar(255) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `users` ( `username` varchar(30) NOT NULL default '', `password` varchar(30) NOT NULL default '', `uid` int(11) default NULL, `gid` int(11) default NULL, `homedir` varchar(255) default NULL, `shell` varchar(255) default NULL, `count` int(11) NOT NULL default '0', UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; INSERT INTO `users` (`username`, `password`, `uid`, `gid`, `homedir`, `shell`, `count`) VALUES ('user', 'pass', 5010, 5010, '/home/webmaster/www/', '/bin/nologin', 0);
Настройка Mysql на этом закончена теперь приступим к настройке самого сервера. Да еще sql лучше выполнять через myPHPadmin настройку которого мы расматривали в предыдущей статье.
3. Теперь настраиваем конфигурацию FTP сервер. Открываем файл proftpd.conf в папке /etc/proftpd и изменяем таким образом:
ServerName «FTP Server World Programs»
DefaultServer on
Port 21
Umask 002
TimeoutLogin 120
TimeoutIdle 600
TimeoutNoTransfer 900
TimeoutStalled 3600
User proftpd
Group proftpd
MaxInstances 50
MaxClientsPerHost 5
AllowRetrieveRestart on
AllowStoreRestart on
AllowOverwrite on
AllowOverride off
RootLogin off
IdentLookups off
UseReverseDNS off
DenyFilter *.*/
TimesGMT off
DefaultRoot ~
RLimitCPU 600 600
RLimitMemory 64M 64M
RLimitOpenFiles 1024 1024
LogFormat default «%h %l %u %t «%r» %s %b»
LogFormat auth «%v [%P] %h %t «%r» %s»
LogFormat write «%h %l %u %t «%r» %s %b»
<Global>
SQLConnectInfo proftpd@localhost root password # это пароль для конекта к Mysql (скорее он другой)
SQLAuthTypes plaintext
SQLUserInfo users username password uid gid homedir NULL
RequireValidShell off
SQLGroupInfo groups groupname gid members
SQLAuthenticate users*
SQLNamedQuery getcount SELECT «count, username from users where username=’%u'»
SQLNamedQuery updatecount UPDATE «count=count+1 WHERE username=’%u'» users
SQLShowInfo PASS «230» «You’ve logged on %{getcount} times, %u»
SQLLog PASS updatecount
RootLogin on
AuthAliasOnly off
UseFtpUsers off
LoginPasswordPrompt off
AllowOverwrite on
</Global>
ListOptions -a
Созраняем файл и пререзапускаем FTP сервер:
/etc/init.d/proftpd restart
Теперь проверем работает ли пользователь конектимся к нашему ftp и вводим логин user пароль pass , мы должны приконектиться и увидеть папку /home/webmaster/www/.
Если этого непроизошло проверьте существует ли она на самом деле, а если существует то дайте её права доступа для всех пользователей (ну или для конкретно созданного, это делается уже в самой системе). На это всё! Статью написал Пензин Константин — Web прораммист компании World Programs
Спонсор статьи World Programs — Разработка Сайтов В Тольятти