Поднять FTP-сервер с несколькими группами пользователей:
1. анонимные. - доступ на чтение к публичным ресурсам;
2. авторизованные - доступ на чтение публичных ресурсов приватных ресурсов;
3. учетные записи для работы движков CMS - полный доступ в свою "домашний" каталог и только туда. (Обязательно)
4. Учетная запись для персонального файлообмена между компьютерами - полный доступ в "домашний" каталог и доступ на чтение публичных и приватных ресурсов. (Обязательно)
Все пользователи не должны иметь учетных записей в системе.
Реализация ProFTPD с модом sql.
Прочитал эту статью. Стал менять конфиги., так как в анонимный доступ был. Но после того как я изменил конфиги на такие:
Код: Выделить всё
# cat proftpd.conf
LoadModule mod_sql.c
LoadModule mod_sql_mysql.c
Include /etc/proftpd.d/12_mod_sql.conf
ServerType standalone
DefaultServer on
Umask 022
ServerName "<Name>"
ServerIdent on "<Server>"
ServerAdmin <LOGIN@SERVER>
IdentLookups off
UseReverseDNS off
Port 21
PassivePorts 49152 65534
#MasqueradeAddress None
AuthOrder mod_sql.c* mod_auth_unix.c
TimesGMT off
MaxInstances 30
MaxLoginAttempts 3
TimeoutLogin 300
TimeoutNoTransfer 120
TimeoutIdle 120
DisplayLogin welcome.msg
DisplayChdir .message
User ftp
Group ftp
DirFakeUser off nobody
DirFakeGroup off nobody
DefaultTransferMode binary
DefaultRoot ~
AllowForeignAddress off
AllowRetrieveRestart on
AllowStoreRestart on
DeleteAbortedStores off
TransferRate RETR 220
TransferRate STOR 250
TransferRate STOU 250
TransferRate APPE 250
SystemLog /var/log/proftpd/proftpd.log
TransferLog /var/log/proftpd/xfer.log
RequireValidShell off
<IfModule mod_auth_pam.c>
AuthPAM off
</IfModule>
<IfModule mod_tls.c>
TLSEngine off
TLSRequired off
TLSVerifyClient off
TLSProtocol SSLv23
TLSLog /var/log/proftpd_tls.log
TLSRSACertificateFile /etc/gadmin-proftpd/certs/cert.pem
TLSRSACertificateKeyFile /etc/gadmin-proftpd/certs/key.pem
TLSCACertificateFile /etc/gadmin-proftpd/certs/cacert.pem
TLSRenegotiate required off
</IfModule>
<IfModule mod_ratio.c>
Ratios off
SaveRatios off
RatioFile "/restricted/proftpd_ratios"
RatioTempFile "/restricted/proftpd_ratios_temp"
CwdRatioMsg "Please upload first!"
FileRatioErrMsg "FileRatio limit exceeded, upload something first..."
ByteRatioErrMsg "ByteRatio limit exceeded, upload something first..."
LeechRatioMsg "Your ratio is unlimited."
</IfModule>
<Limit LOGIN>
AllowALL
</Limit>
###########################################
<Anonymous /var/ftp/>
User ftp
Group ftp
UserAlias anonymous ftp
MaxClients 30
RequireValidShell off
AnonRequirePassword off
<Limit WRITE>
Order Deny, Allow
DenyAll
</Limit>
</Anonymous>
###########################################
Код: Выделить всё
# cat 12_mod_sql.conf
# DefaultRoot ~
#LoadModule mod_sql.c
<IfModule mod_sql.c>
SQLBackend mysql
SQLEngine on
SQLAuthenticate on
SQLAuthTypes Backend
SQLLogFile /var/log/proftpd/proftpd.mysql
SQLConnectInfo proftpd_admin@localhost proftpd 111
SQLUserInfo usertable userid passwd uid gid homedir shell
SQLGroupInfo grouptable groupname gid members
SQLUserWhereClause "disabled=0 and (NOW()<=expiration or expiration=-1 or expiration=0)"
SQLLog PASS counter
SQLNamedQuery counter UPDATE "lastlogin=now(), count=count+1 WHERE userid='%u'" usertable
SQLLog EXIT time_logout
SQLNamedQuery time_logout UPDATE "lastlogout=now() WHERE userid='%u'" usertable
SQLNamedQuery login_time SELECT "lastlogin from usertable where userid='%u'"
SQLShowInfo PASS "230" "Last login was: %{login_time}"
SQLLog RETR,STOR transfer1
SQLNamedQuery transfer1 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'c', NULL" xfer_stat
SQLLOG ERR_RETR,ERR_STOR transfer2
SQLNamedQuery transfer2 INSERT "'%u', '%f', '%b', '%h', '%a', '%m', '%T', now(), 'i', NULL" xfer_stat
</IfModule>
Создал базу данных с помощью SQL-скрипта для MySQL из дистрибутива proftpadmin. Тем же движком создал пользователя с каталогом.
Запускаю демон.
Теперь сервер вроде как запрашивает авторизацию. Но при попытке авторизоваться выдает ошибку в имени пользователя и пароля.
В логах пишет это.
Код: Выделить всё
# cat proftpd.log
Апр 06 12:21:18 <NAME> proftpd[27839] 127.0.0.1: ProFTPD 1.3.3 (stable) (built Thu Mar 17 2011 17:42:08 UTC) standalone mode STARTUP
Апр 06 12:21:32 <NAME> proftpd[27880] 127.0.0.1 (::ffff:81.201.248.237[::ffff:81.201.248.237]): FTP session opened.
Апр 06 12:21:38 <NAME> proftpd[27896] 127.0.0.1 (::ffff:81.201.248.237[::ffff:81.201.248.237]): FTP session opened.
Код: Выделить всё
# cat proftpd.mysql
Апр 06 12:21:32 mod_sql/4.2.5[27880]: defaulting to 'mysql' backend
Апр 06 12:21:32 mod_sql/4.2.5[27880]: backend module 'mod_sql_mysql/4.0.8'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: backend api 'mod_sql_api_v1'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: >>> sql_sess_init
Апр 06 12:21:32 mod_sql/4.2.5[27880]: entering mysql cmd_defineconnection
Апр 06 12:21:32 mod_sql/4.2.5[27880]: name: 'default'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: user: '<Login>'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: host: 'localhost'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: db: '<DB_NAME>'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: port: '3306'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: ttl: '0'
Апр 06 12:21:32 mod_sql/4.2.5[27880]: exiting mysql cmd_defineconnection
Апр 06 12:21:32 mod_sql/4.2.5[27880]: mod_sql engine : on
Апр 06 12:21:32 mod_sql/4.2.5[27880]: negative_cache : off
Апр 06 12:21:32 mod_sql/4.2.5[27880]: authenticate : users groups userset groupset
Апр 06 12:21:32 mod_sql/4.2.5[27880]: usertable : usertable
Апр 06 12:21:32 mod_sql/4.2.5[27880]: userid field : userid
Апр 06 12:21:32 mod_sql/4.2.5[27880]: password field : passwd
Апр 06 12:21:32 mod_sql/4.2.5[27880]: UID field : uid
Апр 06 12:21:32 mod_sql/4.2.5[27880]: GID field : gid
Апр 06 12:21:32 mod_sql/4.2.5[27880]: homedir field : homedir
Апр 06 12:21:32 mod_sql/4.2.5[27880]: shell field : shell
Апр 06 12:21:32 mod_sql/4.2.5[27880]: group table : grouptable
Апр 06 12:21:32 mod_sql/4.2.5[27880]: groupname field : groupname
Апр 06 12:21:32 mod_sql/4.2.5[27880]: grp GID field : gid
Апр 06 12:21:32 mod_sql/4.2.5[27880]: grp members field : members
Апр 06 12:21:32 mod_sql/4.2.5[27880]: SQLMinUserUID : 999
Апр 06 12:21:32 mod_sql/4.2.5[27880]: SQLMinUserGID : 999
Апр 06 12:21:32 mod_sql/4.2.5[27880]: SQLDefaultUID : 65533
Апр 06 12:21:32 mod_sql/4.2.5[27880]: SQLDefaultGID : 65533
Апр 06 12:21:32 mod_sql/4.2.5[27880]: <<< sql_sess_init
Апр 06 12:21:33 mod_sql/4.2.5[27880]: >>> cmd_endpwent
Апр 06 12:21:33 mod_sql/4.2.5[27880]: <<< cmd_endpwent
Апр 06 12:21:33 mod_sql/4.2.5[27880]: >>> cmd_endgrent
Апр 06 12:21:33 mod_sql/4.2.5[27880]: <<< cmd_endgrent
Апр 06 12:21:38 mod_sql/4.2.5[27896]: defaulting to 'mysql' backend
Апр 06 12:21:38 mod_sql/4.2.5[27896]: backend module 'mod_sql_mysql/4.0.8'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: backend api 'mod_sql_api_v1'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: >>> sql_sess_init
Апр 06 12:21:38 mod_sql/4.2.5[27896]: entering mysql cmd_defineconnection
Апр 06 12:21:38 mod_sql/4.2.5[27896]: name: 'default'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: user: '<Login>'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: host: 'localhost'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: db: '<DB_Name>'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: port: '3306'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: ttl: '0'
Апр 06 12:21:38 mod_sql/4.2.5[27896]: exiting mysql cmd_defineconnection
Апр 06 12:21:38 mod_sql/4.2.5[27896]: mod_sql engine : on
Апр 06 12:21:38 mod_sql/4.2.5[27896]: negative_cache : off
Апр 06 12:21:38 mod_sql/4.2.5[27896]: authenticate : users groups userset groupset
Апр 06 12:21:38 mod_sql/4.2.5[27896]: usertable : usertable
Апр 06 12:21:38 mod_sql/4.2.5[27896]: userid field : userid
Апр 06 12:21:38 mod_sql/4.2.5[27896]: password field : passwd
Апр 06 12:21:38 mod_sql/4.2.5[27896]: UID field : uid
Апр 06 12:21:38 mod_sql/4.2.5[27896]: GID field : gid
Апр 06 12:21:38 mod_sql/4.2.5[27896]: homedir field : homedir
Апр 06 12:21:38 mod_sql/4.2.5[27896]: shell field : shell
Апр 06 12:21:38 mod_sql/4.2.5[27896]: group table : grouptable
Апр 06 12:21:38 mod_sql/4.2.5[27896]: groupname field : groupname
Апр 06 12:21:38 mod_sql/4.2.5[27896]: grp GID field : gid
Апр 06 12:21:38 mod_sql/4.2.5[27896]: grp members field : members
Апр 06 12:21:38 mod_sql/4.2.5[27896]: SQLMinUserUID : 999
Апр 06 12:21:38 mod_sql/4.2.5[27896]: SQLMinUserGID : 999
Апр 06 12:21:38 mod_sql/4.2.5[27896]: SQLDefaultUID : 65533
Апр 06 12:21:38 mod_sql/4.2.5[27896]: SQLDefaultGID : 65533
Апр 06 12:21:38 mod_sql/4.2.5[27896]: <<< sql_sess_init
Апр 06 12:21:38 mod_sql/4.2.5[27896]: >>> cmd_endpwent
Апр 06 12:21:38 mod_sql/4.2.5[27896]: <<< cmd_endpwent
Апр 06 12:21:38 mod_sql/4.2.5[27896]: >>> cmd_endgrent
Апр 06 12:21:38 mod_sql/4.2.5[27896]: <<< cmd_endgrent
Как побороть это?