ProFTPd — FTP-сервер для Linux.
apt install proftpd apt install proftpd proftpd-mod-ldap apt install proftpd-doc
AuthUserFile /etc/proftpd/proftpd.passwd AuthGroupFile /etc/proftpd/proftpd.group
nobody:x:65534:
ftpasswd --passwd --name=FTP-User --uid=2001 --gid 65534 --home=/srv/ftp/FTP-User --shell=/bin/false --file /etc/proftpd/proftpd.passwd
Необходимо проверить, есть ли указанные для пользователей оболочки в файле.
ftpasswd --passwd --name=FTP-User --file /etc/proftpd/proftpd.passwd --change-password
Пример работы с сервером OpenLDAP
LoadModule mod_ldap.c
<IfModule mod_ldap.c> LDAPServer ldap://ldap/??sub LDAPBindDN "cn=admin,dc=organization" "PASSWORD" LDAPUsers ou=ftp,dc=organization (uid=%u) (uidNumber=%u) LDAPSearchScope subtree </IfModule>
AuthOrder mod_ldap.c Include /etc/proftpd/ldap.conf
Таблицы:
quota.limittab
— лимиты для пользователейquota.tallytab
— размер файлов созданных пользователемНастройка сервера:
<IfModule mod_quotatab.c> QuotaEngine on QuotaOptions ScanOnLogin QuotaDirectoryTally on QuotaDisplayUnits Gb QuotaShowQuotas on QuotaLimitTable file:/etc/proftpd/quota.limittab QuotaTallyTable file:/etc/proftpd/quota.tallytab QuotaLog /var/log/proftpd/quota.log </IfModule>
Параметр QuotaOptions ScanOnLogin
позволяет производить пересчёт размеров файлов в папке пользователя при его входе на сервер.
Создание таблиц (выполняется один раз):
#!/bin/bash ftpquota --create-table --type=limit --table-path=/etc/proftpd/quota.limittab ftpquota --create-table --type=tally --table-path=/etc/proftpd/quota.tallytab
Создание лимита для пользователя FTPuser
в размере 5 Гбайт:
#!/bin/bash UserName=FTPuser ftpquota --name=$UserName \ --bytes-upload=5 --add-record --type=limit --quota-type=user \ --units=Gb --verbose --table-path=/etc/proftpd/quota.limittab
Изменение лимита для пользователя FTPuser
на 50 Гбайт:
#!/bin/bash UserName=FTPuser ftpquota --name=$UserName --bytes-upload=50 --update-record --type=limit --quota-type=user \ --units=Gb --verbose --table-path=/etc/proftpd/quota.limittab
Удаление лимита для пользователя FTPuser
:
#!/bin/bash UserName=FTPuser ftpquota --delete-record --type=limit --name=$UserName --quota-type=user \ --table-path=/etc/proftpd/quota.limittab ftpquota --delete-record --name=$UserName --verbose --quota-type=user \ --type=tally --table-path=/etc/proftpd/quota.tallytab