F45 的 oo7:桌面密钥服务换了实现
Fedora 45 把桌面的秘密服务统一到 oo7(官方 ChangeSet:oo7 Secrets Service Provider)。这不是”多装一个包”——它接管了 org.freedesktop.secrets 这个 D-Bus 名字,原先由 gnome-keyring 提供。
证据:谁在提供秘密服务
Section titled “证据:谁在提供秘密服务”rpm -q oo7-cli oo7-daemon oo7-portalls -l /usr/lib/systemd/user/dbus-org.freedesktop.secrets.servicerpm -qf /usr/lib/systemd/user/dbus-org.freedesktop.secrets.servicerpm -q gnome-keyringoo7-cli-0.7.0~beta-2.fc45.x86_64oo7-daemon-0.7.0~beta-2.fc45.x86_64oo7-portal-0.7.0~beta-2.fc45.x86_64
/usr/lib/systemd/user/dbus-org.freedesktop.secrets.service -> oo7-daemon.service
oo7-daemon-0.7.0~beta-2.fc45.x86_64
package gnome-keyring is not installed三行结论:
dbus-org.freedesktop.secrets.service是个符号链接,指向oo7-daemon.service;- 这个链接由
oo7-daemon包拥有; gnome-keyring在 F45 上已经不在。
版本号里的 ~beta 也值得注意:F45 交付的是 0.7.0 的 beta 版本。
三个包各干什么
Section titled “三个包各干什么”cat /usr/lib/systemd/user/oo7-daemon.service[Unit]Description=Secret service (oo7 implementation)
[Service]Type=dbusBusName=org.freedesktop.secretsStandardError=journalExecStart=/usr/libexec/oo7-daemon| 包 | 提供 | 作用 |
|---|---|---|
oo7-daemon | oo7-daemon.service、dbus-org.freedesktop.secrets.service | 实现 Secret Service,持有 D-Bus 名字 |
oo7-portal | oo7-portal.service、/usr/libexec/oo7-portal | 沙箱应用的 portal 后端 |
oo7-cli | /usr/bin/oo7-cli | 命令行读写钥匙串 |
Type=dbus + BusName= 是关键:有客户端请求 org.freedesktop.secrets 时,systemd 才启动守护进程。这解释了为什么 systemctl status oo7-daemon 平时是 inactive (dead) ——它是按需拉起,不是常驻。
用 oo7-cli 读写
Section titled “用 oo7-cli 读写”oo7-cli --helpoo7-cli --versionSystem keyring access from the terminal
Commands: delete lookup search store list lock unlock repair change-secret
oo7-cli 0.7.0-beta存一条(注意参数是位置参数,不是 --label / --attribute):
oo7-cli store t1 app=x -s hello守护进程日志会确认:
INFO create_item{label="t1" replace=true}: oo7::file::unlocked_keyring: Successfully created item一个必须知道的依赖
Section titled “一个必须知道的依赖”oo7-cli list 与 oo7-cli lookup 在没有 systemd 用户会话的环境里会失败,日志是:
Activating service name='org.freedesktop.systemd1' ... failed: Process org.freedesktop.systemd1 exited with status 1原因:守护进程要访问 org.freedesktop.systemd1.Manager(用于锁/解锁管理),而裸 D-Bus 会话里没有用户级 systemd。
实际含义:store 能成功,list / lookup 需要真正的登录会话。在 SSH 或容器里做自动化时,先确认 systemctl --user 可用(loginctl enable-linger)。
升级后的迁移检查清单
Section titled “升级后的迁移检查清单”rpm -q oo7-daemon gnome-keyring—— 确认前者在、后者已不在;ls -l /usr/lib/systemd/user/dbus-org.freedesktop.secrets.service—— 确认指向oo7-daemon.service;- 打开”密码与密钥”类工具,确认默认钥匙串还在、条目可读;
- 用一次需要保存凭据的应用(浏览器、邮件、Git 凭据助手)验证读写;
- 自动登录的机器,重启后单独确认解锁是否仍然自动完成。
本页的包布局、D-Bus 名字接管、oo7-cli store 成功都是 F45 上实测的。桌面会话里的迁移行为、自动解锁、SSH agent 集成没有做整机验证——实验环境里没有 Workstation 桌面会话。这几项请在自己的桌面上按上面的清单逐条确认。
- Fedora Workstation 45 — 桌面版的变化与选择
- 桌面应用分发(Flatpak) — 沙箱应用与 portal
- Fedora 45:变化、下载与升级入口 — 六项变化总览
- 报错速查 —
command not found一类问题的对照 - 官方:Fedora 45 ChangeSet