gcoop-libre.pure-ftpd
Pure-FTPd
这是一个用于在 Debian/Ubuntu 上安装 Pure-FTPd 的 Ansible 角色。
需求
只有在启用 TLS 支持并需要生成证书时,此角色才有要求。
如果 pureftpd_tls_certificate_method
的值为 generate
,则需要在服务器上安装 openssl
。
如果 pureftpd_tls_certificate_method
的值为 certbot
,则应在远程服务器上可用 certbot
。您可以使用 geerlingguy.certbot
来安装它。
角色变量
可用的变量如下所示,以及默认值(请参见 defaults/main.yml
):
pureftpd_packages:
- pure-ftpd-common
- pure-ftpd
使用 APT 安装的包列表。
pureftpd_global_config_mode: standalone
pureftpd_global_config_virtualchroot: 'true'
pureftpd_global_config_uploadscript: ''
pureftpd_global_config_uploaduid: ''
pureftpd_global_config_uploadgid: ''
用于 Pure-FTPd 全局配置的属性。它们用于生成 /etc/default/pure-ftpd-common
。您可以在 templates/pure-ftpd-common.j2
中阅读更多关于这些选项的信息。
pureftpd_fortune: ''
在用户登录时显示的消息。
pureftpd_mysql:
server: localhost
port: 3306
socket: /var/run/mysqld/mysqld.sock
username: dbuser
password: dbpass
database: dbname
crypt: crypt
query_get_pw: SELECT Password FROM users WHERE User="\L"
query_get_dir: SELECT Dir FROM users WHERE User="\L"
query_get_uid: SELECT Uid FROM users WHERE User="\L"
default_uid: 1000
query_get_gid: SELECT Gid FROM users WHERE User="\L"
default_gid: 1000
query_get_qta_fs: SELECT QuotaFiles FROM users WHERE User="\L"
query_get_qta_sz: SELECT QuotaSize FROM users WHERE User="\L"
query_get_ratio_ul: SELECT ULRatio FROM users WHERE User="\L"
query_get_ratio_dl: SELECT DLRatio FROM users WHERE User="\L"
query_get_bandwidth_ul: SELECT ULBandwidth FROM users WHERE User="\L"
query_get_bandwidth_dl: SELECT DLBandwidth FROM users WHERE User="\L"
force_tilde_expansion: true
transactions: true
该属性设置在 MySQL 服务器上存储虚拟用户所需的配置。有关此配置的更多信息,请参见 Pure-FTPd 文档。
pureftpd_postgresql:
server: localhost
port: 5432
username: dbuser
password: dbpass
database: dbname
crypt: crypt
query_get_pw: SELECT "Password" FROM "users" WHERE "User"='\L'
query_get_dir: SELECT "Dir" FROM "users" WHERE "User"='\L'
query_get_uid: SELECT "Uid" FROM "users" WHERE "User"='\L'
default_uid: 1000
query_get_gid: SELECT "Gid" FROM "users" WHERE "User"='\L'
default_gid: 1000
query_get_qta_fs: SELECT "QuotaFiles" FROM "users" WHERE "User"='\L'
query_get_qta_sz: SELECT "QuotaSize" FROM "users" WHERE "User"='\L'
query_get_ratio_ul: SELECT "ULRatio" FROM "users" WHERE "User"='\L'
query_get_ratio_dl: SELECT "DLRatio" FROM "users" WHERE "User"='\L'
query_get_bandwidth_ul: SELECT "ULBandwidth" FROM "users" WHERE "User"='\L'
query_get_bandwidth_dl: SELECT "DLBandwidth" FROM "users" WHERE "User"='\L'
该属性设置在 PostgreSQL 服务器上存储虚拟用户所需的配置。有关此配置的更多信息,请参见 Pure-FTPd 文档。
pureftpd_ldap:
ldaps: True
tls: True
server: ldap.example.com
port: 389
bind_dn: cn=Manager,dc=example,dc=com
version: 3
bind_password: bindpass
base_dn: cn=Users,dc=example,dc=com
filter: '&(objectClass=posixAccount)(uid=\L)'
home_dir: homeDirectory
default_uid: 1000
force_default_uid: True
default_gid: 1000
force_default_gid: True
该属性设置在 LDAP 服务器上存储虚拟用户所需的配置。有关此配置的更多信息,请参见 Pure-FTPd 文档。
pureftpd_config:
AllowAnonymousFXP: 'no'
AllowUserFXP: 'no'
AltLog: 'clf:/var/log/pure-ftpd/transfer.log'
AnonymousBandwidth: '8'
AnonymousCanCreateDirs: 'no'
AnonymousCantUpload: 'yes'
AnonymousOnly: 'no'
AnonymousRatio: '1 10'
AntiWarez: 'yes'
AutoRename: 'no'
Bind: '127.0.0.1,21'
BrokenClientsCompatibility: 'no'
CallUploadScript: 'yes'
ChrootEveryone: 'yes'
ClientCharset: 'UTF-8'
CreateHomeDir: 'yes'
CustomerProof: 'yes'
Daemonize: 'yes'
DisplayDotFiles: 'yes'
DontResolve: 'yes'
ExtAuth: /var/run/ftpd.sock
ForcePassiveIP: '192.168.0.1'
FortunesFile: '/etc/pure-ftpd/cookie'
FSCharset: 'utf8'
IPV4Only: 'yes'
IPV6Only: 'yes'
KeepAllFiles: 'yes'
LDAPConfigFile: /etc/pureftpd-ldap.conf
LimitRecursion: '10000 8'
LogPID: 'yes'
MaxClientsNumber: '10'
MaxClientsPerIP: "{{ ansible_processor_cores }}"
MaxDiskUsage: '80'
MaxIdleTime: '15'
MaxLoad: '4'
MinUID: '1000'
MySQLConfigFile: /etc/pure-ftpd/mysql.conf
NoAnonymous: 'yes'
NoChmod: 'yes'
NoRename: 'yes'
NoTruncate: 'yes'
PAMAuthentication: 'no'
PassivePortRange: '30000 50000'
PerUserLimits: '3 20'
PGSQLConfigFile: /etc/pureftpd-pgsql.conf
PIDFile: '/var/run/pure-ftpd.pid'
ProhibitDotFilesRead: 'yes'
ProhibitDotFilesWrite: 'yes'
PureDB: /etc/pure-ftpd/pureftpd.pdb
Quota: '1000 10'
SyslogFacility: 'ftp'
TLS: '0'
TLSCipherSuite: 'ALL:!aNULL:!SSLv3'
TrustedIP: '10.1.1.1'
Umask: '113 002'
UnixAuthentication: 'no'
UserBandwidth: '8'
UserRatio: '1 10'
VerboseLog: 'no'
Pure-FTPd 的配置选项列表。有关此配置的更多信息,请参见 Pure-FTPd 文档。
TLS
选项有四个可能的值(从 0
到 3
),这些值的含义是:
0
: 禁用 SSL/TLS 支持。1
: 客户端可以通过传统方式或通过 SSL/TLS 层连接。2
: 拒绝明文会话,只接受 SSL/TLS 兼容的客户端。3
: 拒绝明文会话,只接受 SSL/TLS 兼容的客户端。也拒绝明文数据连接,因此强制使用私有数据连接。
有关更多信息,请查看 Pure-FTPd 文档。
pureftpd_auth_puredb: 10
pureftpd_auth_mysql: 0
pureftpd_auth_postgresql: 0
pureftpd_auth_ldap: 0
pureftpd_auth_pam: 80
pureftpd_auth_unix: 90
这些属性设置不同身份验证方法的优先级。只有值大于 0
的方法才会启用。
pureftpd_system_users:
- name: user1
password: p4ssW0rd
homedir: /var/ftp/user1
系统中应存在的用户列表。
pureftpd_system_deleted_users:
- name: user2
系统中不应存在的用户列表。对于删除系统上的旧 FTP 帐户很有用。
pureftpd_virtual_users_user: ftp
pureftpd_virtual_users_group: ftp
如果 Pure-FTPd 服务器将使用虚拟用户,则至少需要一个系统用户及其对应的组。
pureftpd_virtual_users_gid: ''
pureftpd_virtual_users_uid: ''
这些属性强制为它们设置 UID 和 GID。默认为未定义。
pureftpd_virtual_users:
- name: vuser1
password: p4ssW0rd
homedir: /var/ftp/vuser1
uid: 2000
gid: 2000
quota_files: 2000
quota_size: 500
bandwidth_ul: 5
bandwidth_dl: 5
ratio_ul: 10
ratio_dl: 1
使用 PureDB 作为存储方法创建的虚拟用户列表。name
、password
和 homedir
是必需的。
pureftpd_virtual_deleted_users:
- name: vuser2
不应存在于 PureDB 数据库中的用户列表。这对于删除旧 FTP 帐户很有用。
pureftpd_virtual_users_import: false
启用此属性后,角色将导入系统用户作为虚拟用户。
需要注意的是,只有具有 shell 访问权限的帐户才会被导入。设置为 nologin 的帐户必须手动添加。
pureftpd_tls_certificate_method: ''
此属性有三个有效值:
certbot
: 此选项将使用 certbot 请求 Let's Encrypt 证书。generate
: 此选项将使用openssl
创建自签名证书。upload
: 此选项将上传现有证书。pureftpd_tls_certificate_certbot: command: /opt/certbot/certbot-auto fqdn: ftp.example.com email: letsencrypt@example.com size: 4096 port: 80
使用 certbot
时,此字典设置 certbot 命令的路径和请求证书所需的一些选项。您需要设置证书的 FQDN 和 Let's Encrypt 帐户的电子邮件。您可以更改证书的密钥大小和 certbot
等待 Let's Encrypt 挑战的端口。
pureftpd_tls_certificate_openssl:
size: 4096
days: 365
fqdn: ftp.example.com
country: ''
state: ''
locality: ''
organization: ''
unit: ''
使用 generate
时,此字典设置 openssl
命令的选项。
pureftpd_tls_certificate_file: ''
pureftpd_tls_certificate_content: ''
使用 upload
时,这些选项设置要上传的文件或在服务器上创建的证书文件的内容。
依赖关系
无。
示例 Playbook
- hosts: webservers
roles:
- gcoop-libre.pure-ftpd
许可证
GPLv2
作者信息
此角色由 gcoop Cooperativa de Software Libre 于 2017 年创建。