跳转到内容
搜索 Fedora 文档

    浏览当前文档目录

    F45 的 oo7:桌面密钥服务换了实现

    Fedora 45 把桌面的秘密服务统一到 oo7(官方 ChangeSet:oo7 Secrets Service Provider)。这不是”多装一个包”——它接管了 org.freedesktop.secrets 这个 D-Bus 名字,原先由 gnome-keyring 提供。

    Terminal window
    rpm -q oo7-cli oo7-daemon oo7-portal
    ls -l /usr/lib/systemd/user/dbus-org.freedesktop.secrets.service
    rpm -qf /usr/lib/systemd/user/dbus-org.freedesktop.secrets.service
    rpm -q gnome-keyring
    oo7-cli-0.7.0~beta-2.fc45.x86_64
    oo7-daemon-0.7.0~beta-2.fc45.x86_64
    oo7-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

    三行结论:

    1. dbus-org.freedesktop.secrets.service 是个符号链接,指向 oo7-daemon.service;
    2. 这个链接由 oo7-daemon 包拥有;
    3. gnome-keyring 在 F45 上已经不在。

    版本号里的 ~beta 也值得注意:F45 交付的是 0.7.0 的 beta 版本。

    Terminal window
    cat /usr/lib/systemd/user/oo7-daemon.service
    [Unit]
    Description=Secret service (oo7 implementation)
    [Service]
    Type=dbus
    BusName=org.freedesktop.secrets
    StandardError=journal
    ExecStart=/usr/libexec/oo7-daemon
    包提供作用
    oo7-daemonoo7-daemon.service、dbus-org.freedesktop.secrets.service实现 Secret Service,持有 D-Bus 名字
    oo7-portaloo7-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) ——它是按需拉起,不是常驻。

    Terminal window
    oo7-cli --help
    oo7-cli --version
    System keyring access from the terminal
    Commands:
    delete lookup search store list lock unlock repair change-secret
    oo7-cli 0.7.0-beta

    存一条(注意参数是位置参数,不是 --label / --attribute):

    Terminal window
    oo7-cli store t1 app=x -s hello

    守护进程日志会确认:

    INFO create_item{label="t1" replace=true}: oo7::file::unlocked_keyring: Successfully created item

    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)。

    1. rpm -q oo7-daemon gnome-keyring —— 确认前者在、后者已不在;
    2. ls -l /usr/lib/systemd/user/dbus-org.freedesktop.secrets.service —— 确认指向 oo7-daemon.service;
    3. 打开”密码与密钥”类工具,确认默认钥匙串还在、条目可读;
    4. 用一次需要保存凭据的应用(浏览器、邮件、Git 凭据助手)验证读写;
    5. 自动登录的机器,重启后单独确认解锁是否仍然自动完成。

    本页的包布局、D-Bus 名字接管、oo7-cli store 成功都是 F45 上实测的。桌面会话里的迁移行为、自动解锁、SSH agent 集成没有做整机验证——实验环境里没有 Workstation 桌面会话。这几项请在自己的桌面上按上面的清单逐条确认。