eth0.pro

Linux is working. The future is open.



Нужно было быстренько поднять FTP сервер. Я как человек мыслящий на будущее, с масштабированием, а не только конкретной задачей, выбрал для этих целей сервер ProFTPd с хранением пользователей в PostgreSQL.

И так, ставим пакетики proftpd-basic и proftpd-mod-pgsql. Подразумевается, что СУБД уже установлена и настроена.

Приступаем к настройке. Я укажу только то, что менял (остальное по-умолчанию для моего Debian 6.0.6).

proftpd.conf:

# Отключаем поддержку IPv6 за ненадобностью в данный момент:
UseIPv6				off

# Название сервера, отображается в ходе подключения (по к райней мере в консольных клиентах):
ServerName			"My FTP..."

# "Запирает" пользователей в их домашних каталог и не дает выйти выше:
DefaultRoot			~

# Включаем файл настроек SQL:
Include /etc/proftpd/sql.conf

sql.conf, за подробностями сюда: http://www.proftpd.org/docs/contrib/mod_sql.html

# "Драйвер" для базы данных:
SQLBackend	postgres

# Включаем модуль:
SQLEngine on

# Как будем аутентифицировать:
# on - 
# off - отключаем аутентификацию через SQL-модуль (но, например, логирование в базу останется)
# users - в базе смотрим лишь данные о пользователе, параметры группы там не ищем
# groups - смотрим на предмет данных о группе (groupid, gid например)
# userset -
# groupset
SQLAuthenticate users

# Выбрал данный тип, т.к. из подходящих был еще Crypt, но там проблема с паролями длиннее 8 символов:
SQLAuthTypes Plaintext

# параметры подключения к серверу PostgreSQL:
SQLConnectInfo dbname@dbaddress dbuser dbpassword

# Писать в этот лог отладочную информацию о работе модуля, по завершении настройки закомментировать:
SQLLogFile		/var/log/proftpd/sql.log

# Домашний каталог виртуальных пользователей по-умолчанию, на случай если тот не указан в базе:
SQLDefaultHomedir	/home/ftp

modules.conf:

# Раскомментировать следующие строки:
LoadModule mod_sql.c
LoadModule mod_sql_postgres.c
LoadModule mod_sql_passwd.c

Остается лишь создать таблицы в базе данных:

-- Table: users

-- DROP TABLE users;

CREATE TABLE users
(
  id serial NOT NULL,
  userid character varying(30) NOT NULL,
  passwd character varying(80) NOT NULL,
  uid integer,
  gid integer,
  homedir character varying(255),
  shell character varying(32),
  CONSTRAINT users_pkey PRIMARY KEY (id ),
  CONSTRAINT users_userid_key UNIQUE (userid )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE users
  OWNER TO dbuser;


-- Table: groups

-- DROP TABLE groups;

CREATE TABLE groups
(
  id serial NOT NULL,
  groupname character varying(30),
  gid integer NOT NULL,
  members character varying(255),
  CONSTRAINT groups_pkey PRIMARY KEY (id ),
  CONSTRAINT groups_groupname_key UNIQUE (groupname )
)
WITH (
  OIDS=FALSE
);
ALTER TABLE groups
  OWNER TO dbuser;

5 фев 2013 г. | Теги: Debian PostgreSQL FTP