Teampass 3.2.3.2 配置参数详解

Teampass 3.2.3.2 配置参数详解:teampass_misc 294 项站点参数全景、settings.php 数据库连接层与 SECUREFILE 主密钥机制、PHP 运行时层,参数查看与三种修改通道实测、14 类核心参数逐项实测语义(含防爆破锁定、2FA 生效条件、复杂度枚举),并给出按团队规模的生产配置模板。

Teampass密码管理PHP 应用自托管2026/10/24

Teampass 3.2.3.2 配置参数详解

目标:把 Teampass 3.2.3.2 安装后散落在三个层面的配置(数据库 teampass_misc 表的站点参数全集、settings.php 数据库连接层、PHP_* 运行时层)一次讲清:参数存在哪里、怎么查看、怎么修改才生效、每类核心参数的实测行为与生产推荐值。已在 Ubuntu 宿主机(Docker 29.8.1)部署的 Teampass 3.2.3.2 实例上实测通过,全部参数值、修改回执与验证查询均为真实执行记录。

一、环境信息

  • 实例版本:Teampass 3.2.3.2(teampass_misc 表 teampass_version=3.2.3、镜像常量 TP_VERSION_MINOR=2 实查一致)
  • 部署形态:应用 + MySQL 8.0 双服务(服务端 8.0.46),部署过程见《Teampass 3.2.3.2 Docker Compose 部署指南》
  • 应用内 PHP:8.3.35;站点 URL:http://192.168.146.128:8144/(安装向导写入)
  • 参数存储位置(本文三大层):
    1. 数据库表 teampass_misc(站点参数全集,type=admin 共 294 项,另 type=complex 2 项、cron 1 项、timestamp 1 项);
    2. 文件 /var/www/html/storage/config/settings.php(数据库连接常量,1192 字节配置树中的 1048 字节文件);
    3. PHP 运行时 /usr/local/etc/php/conf.d/teampass-env.ini(由镜像 entrypoint 按 PHP_* 环境变量生成)。

二、前置条件

  1. 已完成 3.2.3.2 安装向导并能以管理员登录(维护模式已关闭);
  2. 具备数据库只读查询能力(直连 MySQL 或容器内 mysql 客户端),用于核对参数落库值;
  3. 管理员后台设置页面可用(参数修改的首选通道);
  4. 了解基础加密事实:teampass_misc 中标记 is_encrypted=1 的参数值为密文(如 bck_script_passkey、duo_skey、ldap_password、email_auth_pwd),不可手改。

三、参数查看与修改方式

3.1 查看:后台界面与数据库直查

后台「管理 → 设置」按功能分页展示全部参数,适合日常查看。需要全景或核对落库值时直查数据库(实测命令):

docker exec teampass-3.2.3.2-db mysql -uteampass -pq1w2e3r4 teampass \
  -e "SELECT type, COUNT(*) FROM teampass_misc GROUP BY type;"

docker exec teampass-3.2.3.2-db mysql -uteampass -pq1w2e3r4 teampass \
  -e "SELECT intitule, IF(is_encrypted=1,'<enc>',valeur) AS v
      FROM teampass_misc WHERE type='admin' ORDER BY intitule;"

实测回显(节选):

admin      294
complex      2
cron         1
timestamp    1

3.2 修改:后台设置界面(推荐)

管理员在后台修改任意参数,保存即写库生效。实测样例:把剪贴板清空时长 clipboard_life_duration 从 30 改为 60,保存后直查数据库:

intitule                 valeur   updated_at
clipboard_life_duration  60       1792835759

updated_at 同步刷新,无需重启任何服务。

3.3 修改:程序化接口(同写库路径)

后台保存走的是同一个后端接口(admin.queries.php 的 save_option_change),自动化场景可程序化调用。实测(关闭维护模式):

  • 请求载荷 {field: "maintenance_mode", value: "0"}
  • 实测回执 {"error":false,"misc":"1 ; 0","message":""}(回显变更痕迹,库里 1 改 0)
  • 随后普通用户登录立即不再被维护模式拦截

接口对个别字段有服务端校验(实测可见:nb_bad_authentication、bruteforce_lock_duration、api_rate_limit_per_minute 强制非负整数;bruteforce_lock_duration 传 0 会被纠正为 10)。

3.4 修改:直接改数据库(仅限非加密项,慎用)

UPDATE teampass_misc SET valeur='...' WHERE type='admin' AND intitule='...' 技术上可行(参数即普通行),但要注意:加密项(is_encrypted=1)写入明文后应用无法解密使用;直接改库绕过接口的取值校验。除批量初始化场景外建议走 3.2/3.3 通道。

3.5 数据库连接层与运行时层的修改边界

settings.php 中的数据库连接常量由安装向导生成,其中 DB_PASSWD 是 Defuse 密文(实测值形态 def50200...,与 secrets/ 主密钥文件配套),不能手写明文口令进去;变更数据库口令无法通过手改该文件完成。PHP_* 运行时参数通过 compose 环境变量修改后需重建应用服务(entrypoint 重新生成 teampass-env.ini)。

四、参数总览

294 项站点参数按存储与加密属性总览(实测统计):

属性数量/形态说明
普通明文参数绝大多数布尔存 0/1、数值存数字、列表存分号串(如 upload_docext)、空值表示未配置
加密参数(is_encrypted=1)bck_script_filename、bck_script_passkey、duo_host、duo_ikey、duo_skey、email_auth_username、email_auth_pwd、ldap_bdn、ldap_hosts、ldap_password 等直查显示密文,只能通过后台界面重新录入
复杂度定义(type=complex)2 行(值均为 48)文件夹密码复杂度档位记录
版本与升级水位teampass_version=3.2.3、upgrade_timestamp升级判断依据,勿手改

另有一批参数不在 teampass_misc 而在文件/环境层,统一口径见第五、十四节与第五、十三节。

五、核心参数分类详解

5.1 站点与路径

参数实测值说明
cpassman_dir/var/www/html应用根目录,安装向导写入,勿改
cpassman_urlhttp://192.168.146.128:8144/站点对外 URL,邮件/附件链接的基准,迁移域名后必改
url_to_files_folderhttp://192.168.146.128:8144/storage/files附件访问 URL 前缀,跟随站点 URL
faviconhttp://192.168.146.128:8144/favicon.ico站点图标
timezoneUTC展示时区,国内建议改 Asia/Shanghai
date_format / time_formatd/m/Y / H:i:s展示格式
default_languageenglish默认界面语言
ga_website_nameTeamPass for ChangeMeGoogle Authenticator 展示名,启用 2FA 前建议改为组织名

5.2 会话与登录安全

参数实测值说明
default_session_expiration_time60会话时长(分钟)。实测登录载荷中的 duree_session 与此联动
nb_bad_authentication10连续错误密码阈值。实测:连续 10 次错误后第 11 次登录返回 "Too many failed attempts, your account is blocked until: …",锁定 10 分钟
bruteforce_lock_duration(服务端强制 ≥1,传 0 纠正为 10)锁定时长(分钟),锁定记录与解锁码落 teampass_auth_failures 表(实测含 source=login/remote_ip 两类记录与 unlock_code)
encryptClientServer1客户端-服务端传输载荷加密开关(登录请求 AES 加密实测即依赖此机制)
enable_http_request_login0允许纯 HTTP 请求直接登录,保持关闭
admin_2fa_required1管理员强制 2FA。实测语义:仅在至少一种双因素提供者启用时生效(Google/Yubico/Duo 任一为 1),全关时管理员登录不触发 2FA
enable_sts0HSTS(配合 HTTPS 反代启用)

5.3 双因素认证

参数实测值说明
google_authentication0TOTP(Google Authenticator)开关,最常用的 2FA 通道
yubico_authentication / duo0 / 0YubiKey / Duo,Duo 需配 duo_host/ikey/skey(均为密文)
webauthn_provider_enabled0WebAuthn/Passkey 登录提供者;webauthn_rp_name=TeamPass、webauthn_login_mode=0、webauthn_passwordless_satisfies_mfa=1
mfa_auth_requested_roles 相关—支持按角色要求 2FA(区分手工角色与 AD 组映射角色,代码实查两种来源都计入)

启用 TOTP 后 admin_2fa_required=1 即对管理员生效;独立的 TOTP 管理可配合 《2FAuth 8.0.3 介绍与选型指南》自托管验证器。

5.4 密码与复杂度

  • 复杂度档位为固定枚举:0 / 20 / 38 / 48 / 60 五档(对应后台五档描述)。实测给文件夹传 64 直接报 Undefined array key 64;teampass_misc 中 type=complex 两行记录了实测文件夹的档位(均 48)。
  • security_dashboard_min_password_length=12:安全仪表盘的最小口令长度评分基线(注意与安装向导的 10 位硬性策略是两回事)。
  • use_md5_password_as_salt=0:保持关闭(旧版兼容项)。
  • enable_local_password_recovery=1:本地密码找回,无邮件服务器时会受影响。

5.5 条目与文件夹行为

参数实测值说明
anyone_can_modify / anyone_can_modify_bydefault0 / 0条目默认仅作者与管理员可改
duplicate_item / duplicate_folder / item_duplicate_in_same_folder0 / 0 / 0禁止重复建同名条目/文件夹
enable_user_can_create_folders0普通用户建文件夹总开关。实测:即使角色对文件夹有写权限,无此授权的用户建子文件夹仍被拒("You are not allowed to do that!"),根目录建文件夹另受 can_create_root_folder 用户能力控制("Folder is not allowed for this user")
clipboard_life_duration30(实测改为 60 即时生效)剪贴板中密码自动清空秒数
show_description / show_last_items1 / 1列表展示项
enable_massive_move_delete0批量移动/删除,保持默认关闭

5.6 个人空间与知识库

参数实测值说明
enable_pf_feature0个人空间。实测创建用户时 personal_folder=1,该开关关闭时个人目录不出现
enable_kb / enable_suggestion0 / 0知识库与条目建议
enable_favourites1收藏夹

5.7 API

参数实测值说明
api0REST API 总开关
api_token_duration60API 令牌有效期(分钟)
api_rate_limit_per_minute120每分钟调用上限(服务端强制非负)
api_require_https1API 强制 HTTPS,启用 API 时保持
api_cors_origins空跨域白名单,按需填写

5.8 邮件与通知

email_smtp_server/email_smtp_auth/email_auth_username/email_auth_pwd(后两者密文)/email_from/email_security/email_smtp_verify_certificate=1 组成 SMTP 配置组;emails_templates_enabled=1 启用模板;enable_send_email_on_user_login=0 控制登录通知;sending_emails_job_frequency=2 为发信任务频率。未配置 SMTP 时用户创建流程仍可用(实测创建用户后接口直接回传自动生成口令),但找回密码、邮件通知类功能不可用。

5.9 LDAP 目录认证

ldap_mode=0(本地认证)、ldap_port=389、ldap_ssl=0、ldap_tls=0、ldap_and_local_authentication=0;启用时需配 ldap_hosts/ldap_password/ldap_bdn(三项均密文存储)、ldap_user_attribute、ldap_group_objectclasses_attibute(实测默认值 top,groupofuniquenames,注意该参数名拼写即为官方原样)等。AD/LDAP 组到角色的映射经 ldap_groups_roles 表落地。

5.10 附件与上传

参数实测值说明
upload_maxfilesize100mb应用层附件上限(与 PHP 层 PHP_UPLOAD_MAX_FILESIZE=100M 对齐)
upload_docext / upload_imagesext / upload_otherext / upload_pkgextdoc,docx… / jpg,jpeg,gif,png / sql,xml / 7z,rar,tar,zip类型白名单
upload_all_extensions_file0不放开全部类型
enable_attachment_encryption1附件落盘加密
files_with_defusedone附件加密迁移水位标记

5.11 任务与后台处理

参数实测值说明
enable_tasks_manager1后台任务管理器(建条目回执中的 encryption_task_created:true 即由它异步完成密钥分发)
tasks_manager_refreshing_period20任务轮询周期(秒)
task_maximum_run_time300单任务最大运行秒数
tasks_history_delay604800任务历史保留(秒,7 天)
tasks_log_retention_delay30任务日志保留(天)
enable_tasks_log0任务日志开关

5.12 加密与密钥治理

参数实测值说明
transparent_key_recovery_enabled1透明密钥恢复(管理员可代恢复用户密钥)
transparent_key_recovery_pbkdf2_iterations100000恢复密钥派生迭代次数
transparent_key_recovery_max_age_days730恢复数据有效期
transparent_key_recovery_integrity_check1完整性校验
aes_v2_write_enabled1新写入条目使用 AES v2 加密
hibp_enabled / hibp_check_interval_days0 / 7口令泄露库(HIBP)核对
security_dashboard_enabled0安全仪表盘

5.13 数据库连接层(settings.php)

安装向导生成的 /var/www/html/storage/config/settings.php 实测全文(口令密文截断展示):

<?php
define("DB_HOST", "db");
define("DB_USER", "teampass");
define("DB_PASSWD", "def502000a853d76eb93aa454e37c43ed363974eadc03a8578f8a…");
define("DB_NAME", "teampass");
define("DB_PREFIX", "teampass_");
define("DB_PORT", "3306");
define("DB_ENCODING", "utf8mb4");
define("DB_SSL", false); // if DB over SSL then comment this line
define("DB_CONNECT_OPTIONS", array(
    MYSQLI_OPT_CONNECT_TIMEOUT => 10
));
define("SECUREFILE", "ge6zX3sOqVEuhZoai9jeANbBcTxogTQgcu5KbfYT");
if (isset($_SESSION['settings']['timezone']) === true) {
    date_default_timezone_set($_SESSION['settings']['timezone']);
}

要点:DB_PASSWD 为 Defuse 密文(def50200 前缀),解密主密钥在 secrets/<SECUREFILE> 指向的随机名文件(实测 136 字节,目录 0700、文件 0600,属主 nginx:nginx);DB_SSL 改 true 并配套证书可启用数据库传输加密。该文件经符号链接持久化到 storage/config/(机制详见部署指南持久化章节)。

5.14 运行时 PHP 层(环境变量)

entrypoint 按环境变量生成 teampass-env.ini,实测默认:memory_limit=512M、upload_max_filesize=100M、post_max_size=100M、max_execution_time=120。调整方式为改 compose 环境变量后重建应用服务,变量清单见部署指南环境变量表。

六、生产配置模板

两档按团队规模划分的推荐基线(均基于 5.x 实测语义;磁盘按 5 年附件与日志增量估算):

小团队(≤50 人、2 条目/人/周;4GB 内存 / 40GB 磁盘)

参数推荐值理由
maintenance_mode0默认 1 会锁死普通用户(实测坑点)
default_session_expiration_time60平衡安全与体验
nb_bad_authentication + bruteforce_lock_duration10 + 10实测默认即可用
admin_2fa_required + google_authentication1 + 1让管理员强制 2FA 真正生效
clipboard_life_duration30剪贴板泄漏窗口收敛
log_connections1登录审计(teampass_log_system 实测含 user_connection/failed_auth 记录)
timezoneAsia/Shanghai日志时间可读
api0不用 API 不开

中型团队(200 人、附件重度使用;8GB 内存 / 200GB 磁盘,PHP 内存可提至 512M 默认不变)

在小型基线上追加:

参数推荐值理由
ldap_mode + ldap_and_local_authentication1 + 1目录认证为主、本地管理员兜底
enable_tasks_manager + tasks_manager_refreshing_period1 + 20大量条目密钥分发依赖后台任务
hibp_enabled1周期性核对弱口令
security_dashboard_enabled1共享过度/弱口令治理
upload_maxfilesize按需 ≤100mb与 PHP 层保持一致,勿超 PHP_UPLOAD_MAX_FILESIZE
syslog_enable1(可选)审计日志外发 SIEM

七、常见问题

Q1:后台改了参数,数据库里查到的还是旧值? 确认改的是同一参数名(intitule 区分大小写);确认没有第二个写入口在覆盖(如安装向导重跑会把 cpassman_url 等重写)。程序化修改走 save_option_change 与后台同路径,实测即时落库(回执 {"error":false,"misc":"1 ; 60"}、直查 valeur=60)。

Q2:<enc> 参数(如 ldap_password、duo_skey、email_auth_pwd)在数据库里看到乱码/密文,能直接 UPDATE 吗? 不能。这些行 is_encrypted=1,应用读取时按密文解密,写入明文会导致功能异常。修改唯一正道是后台设置界面重新录入。

Q3:为什么管理员没配 2FA 也能登录,admin_2fa_required 不是 1 吗? 该参数只在至少一种双因素提供者(google_authentication/yubico_authentication/duo)启用时生效,这是实测确认的代码语义。要强制管理员 2FA,先启用 TOTP 提供者。

Q4:文件夹复杂度设成 64 报错? 复杂度是固定五档枚举(0/20/38/48/60),传 64 后端报 Undefined array key 64。已建文件夹可通过后台编辑修正档位(实测 64→48 修正成功)。

Q5:手改 settings.php 把 DB_PASSWD 写成明文会怎样? 应用按 Defuse 密文解密该字段,明文会导致数据库连接失败。数据库口令变更不能手写此文件;部署时应把数据库口令视为随安装固化的稳定值(配合卷持久化),变更需按官方升级/迁移流程处理。

Q6:安装后普通用户登录报 maintenance_mode_enabled? 全新安装默认维护模式开启,后台关闭即可(实测 1 → 0 后普通用户立即可登录),详见部署指南 FAQ。

Q7:删除的用户名重建报 User already exists? 软删除设计:删除即改名保留记录,重名校验覆盖软删除行。需走「恢复用户」;测试环境彻底重建的数据库清理方法见部署指南 FAQ Q5。

八、参考链接