Ключевые слова:ftp, ldap, auth, quote, (найти похожие документы)
From: Roman Sozinov <http://sozinov.blogspot.com>
Date: Mon, 3 Jan 2008 14:31:37 +0000 (UTC)
Subject: ProFTPd + LDAP - пользователи и их квоты
Оригинал: http://sozinov.blogspot.com/2007/05/proftpd-ldap.html
Беря пример с Microsoft Active Directory, можно интегрировать
LDAP-директорию пользователей с FTP-сервисом на основе ProFTPd. Кроме
того, что в качестве аутентификационной базы пользователей можно
использовать LDAP, в нем можно хранить и дополнительные средства
авторизации - такие как данные о лимитах для пользователей (quota).
ProFTPd должен быть собран с поддержкой LDAP (В Debian 4.0 Etch с этим
всё в порядке). В качестве LDAP-сервиса использовался OpenLDAP 2.3.30
(тоже из Debian-репозитария пакетов).
Первым делом следует добавить описание атрибута ftpQuota в nis-схему
(файл /etc/ldap/schema/nis.schema).
attributetype ( 1.3.6.1.1.1.1.28 NAME 'ftpQuota'
DESC 'Quota FTP'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26
SINGLE-VALUE )
objectclass ( 1.3.6.1.1.1.2.0 NAME 'posixAccount'
DESC 'Abstraction of an account with POSIX attributes'
SUP top AUXILIARY
MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory )
MAY ( userPassword $ loginShell $ gecos $ description $ ftpQuota )
)
После этого перезапустить LDAP-сервис и удостовериться, что он
нормально принял внесенные изменения
# /etc/init.d/slapd restart
Stopping OpenLDAP: slapd.
Starting OpenLDAP: slapd.
Если всё нормально, создать в LDAP-директории пользовательскую запись
для ftp-доступа. Как пример:
dn: cn=ftpuser,ou=Users,o=My Company,c=LT
cn: ftpuser
ipNetworkNumber: 12
uid: ftpuser
objectClass: ipNetwork
objectClass: posixAccount
objectClass: top
userPassword: {MD5}ce4O7AJ89gFcMRd7PVaE7Q==
gidNumber: 65534
uidNumber: 106
homeDirectory: /var/home/ftpuser
ftpQuota: false,hard,10485760,0,0,0,0,0
Отредактировать основной конфигурационный файл ftp-сервиса -
/etc/proftpd/proftpd.conf. Добавить строки
LDAPServer localhost
LDAPDNInfo "cn=searcher,o=My Company,c=LT" password
LDAPDoAuth on "ou=Sites,o=My Company,c=LT" "(&(uid=%v)
(objectclass=posixAccount))"
LDAPDefaultGID 106
LDAPDefaultUID 65534
LDAPForceDefaultGID off
LDAPForceDefaultUID off
LDAPDoQuotaLookups on "ou=Users,o=My Company,c=LT" "(&(uid=%v)(objectclass=posixAccount))"
QuotaLimitTable ldap:
QuotaLock /tmp/quota
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaLog "/var/log/proftpd/quota.log"
QuotaShowQuotas on
QuotaTallyTable file:/var/log/ftpquota.tally
LDAPDNInfo - необходим, если у вас закрыт доступ для анонимного
пользователя
LDAPDoAuth - аутентификация, база для поиска пользователя (по uid)
LDAPDoQuotaLookups - включить поиск квот, база для поиска
Перед перезапуском ftp-сервиса, чтобы изменения вступили в силу,
необходимо создать файл /var/log/ftpquota.tally, который будет
меняться, храня информацию об использовании лимитов
ftp-пользователями.
# ftpquota --create-table --type=tally --units=Mb --table-path=/var/log/ftpquota.tally
# /etc/init.d/proftpd restart
Stopping ftp server: proftpd.
Starting ftp server: proftpd.
После перезапуска можно проверить
# ftp localhost
Connected to localhost.
220 ProFTPD 1.3.0 Server (Debian) [127.0.0.1]
Name (localhost:root): ftpuser
331 Password required for ftpuser.
Password:
230 User ftpuser logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quote SITE QUOTA
200-The current quota for this session are [current/limit]:
200-Name: ftpuser
200-Quota Type: User
200-Per Session: False
200-Limit Type: Soft
200- Uploaded Mb: 4.08/10.00
200- Downloaded Mb: unlimited
200- Transferred Mb: unlimited
200- Uploaded files: unlimited
200- Downloaded files: unlimited
200- Transferred files: unlimited
200 Please contact root@server if these entries are inaccurate
Ссылки:
1. ProFTPd + OpenLDAP + quota
2. ProFTPD module mod_quotatab_ldap
3. ProFTPd - List of Directives