Skip to content

Commit 8d55bf8

Browse files
committed
fix: replace legacy keyring script with systemd service
Remove legacy Xsession script 97deepin-keyring-wb and replace it with a new systemd service dde-keyring.service. The legacy script was causing xrdp remote login issues because it unconditionally started deepin- keyring-whitebox client, which would block in xrdp sessions. The new service includes a check for XRDP_SESSION environment variable to avoid starting the whitebox client in remote sessions. The changes include: 1. Remove 97deepin-keyring-wb from Xsession scripts list 2. Delete the legacy script file 3. Add new dde-keyring.service systemd unit 4. Configure the service to start after dbus socket 5. Add XRDP_SESSION check to conditionally start whitebox client 6. Integrate the service into dde-session-pre.target Log: Fixed xrdp remote login blocked by keyring service Influence: 1. Test normal desktop login to ensure keyring services start correctly 2. Test xrdp remote login to verify whitebox client is not started 3. Verify gnome-keyring-daemon starts in both local and remote sessions 4. Check systemd service status and logs for proper operation 5. Test session shutdown to ensure clean service termination fix: 替换遗留密钥脚本为 systemd 服务 移除遗留的 Xsession 脚本 97deepin-keyring-wb 并用新的 systemd 服务 dde- keyring.service 替代。遗留脚本无条件启动 deepin-keyring-whitebox 客户 端,导致 xrdp 远程登录被阻塞。新服务包含对 XRDP_SESSION 环境变量的检查, 避免在远程会话中启动白盒客户端。 变更包括: 1. 从 Xsession 脚本列表中移除 97deepin-keyring-wb 2. 删除遗留脚本文件 3. 新增 dde-keyring.service systemd 单元 4. 配置服务在 dbus socket 后启动 5. 添加 XRDP_SESSION 检查以条件性启动白盒客户端 6. 将服务集成到 dde-session-pre.target Log: 修复密钥服务阻塞 xrdp 远程登录的问题 Influence: 1. 测试正常桌面登录,确保密钥服务正确启动 2. 测试 xrdp 远程登录,验证白盒客户端未启动 3. 验证 gnome-keyring-daemon 在本地和远程会话中都能启动 4. 检查 systemd 服务状态和日志以确保正常运行 5. 测试会话关闭,确保服务正确终止
1 parent 7a6866a commit 8d55bf8

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed

debian/postinst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ case "$1" in
77
if [ -x /usr/bin/dde-oom-score-adj ]; then
88
setcap cap_sys_resource=ep /usr/bin/dde-oom-score-adj || true
99
fi
10+
1011
;;
1112
esac
1213

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
#!/bin/sh
2-
# Start deepin-keyring-whitebox and gnome-keyring-daemon for DDE session
3-
if [ -x /usr/bin/gnome-keyring-daemon ]; then
4-
echo "start gnome-keyring-daemon with components secrets,pkcs11,ssh"
5-
/usr/bin/gnome-keyring-daemon --start --components=secrets,pkcs11,ssh || true
6-
fi
2+
# Trigger dde-keyring.service via systemd user instance.
3+
# This service handles gnome-keyring-daemon and deepin-keyring-whitebox.
74

8-
if [ -x /usr/bin/deepin-keyring-whitebox ]; then
9-
echo "start deepin-keyring-whitebox client"
10-
/usr/bin/deepin-keyring-whitebox --opt-client=waitfifonotify || true
11-
fi
5+
if [ -f /usr/lib/systemd/user/dde-keyring.service ]; then
6+
systemctl --user start dde-keyring.service
7+
fi

systemd/CMakeLists.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ configure_file(dde-session-exit-task.service.in
77
configure_file(dde-session-shutdown.service.in
88
dde-session-shutdown.service
99
@ONLY)
10+
configure_file(dde-keyring.service.in
11+
dde-keyring.service
12+
@ONLY)
13+
1014

1115
set(SERVICES
1216
dde-session-initialized.target
@@ -15,6 +19,7 @@ set(SERVICES
1519
dde-session-core.target
1620
${CMAKE_CURRENT_BINARY_DIR}/dde-session-exit-task.service
1721
${CMAKE_CURRENT_BINARY_DIR}/dde-session-shutdown.service
22+
${CMAKE_CURRENT_BINARY_DIR}/dde-keyring.service
1823
dde-session-shutdown.target
1924
dde-session.target
2025
)
@@ -26,6 +31,8 @@ set(DDE_SESSION_PRE_WANTS
2631
dde-session-pre.target.wants/dde-quick-login@x11.service
2732
)
2833

34+
35+
2936
# dde-session-core.target.wants - core desktop components
3037
install(DIRECTORY DESTINATION lib/systemd/user/dde-session-core.target.wants/)
3138
set(DDE_SESSION_CORE_WANTS

systemd/dde-keyring.service.in

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[Unit]
2+
Description=Deepin Keyring Service (GNOME Keyring + Whitebox Client)
3+
Documentation=man:gnome-keyring-daemon(1)
4+
# Start after D-Bus session socket is available (set up by pam_systemd.so)
5+
After=dbus.socket
6+
PartOf=graphical-session.target
7+
8+
[Service]
9+
Type=oneshot
10+
RemainAfterExit=yes
11+
ExecStart=/bin/sh -c '\
12+
if [ -x /usr/bin/gnome-keyring-daemon ]; then \
13+
echo "start gnome-keyring-daemon with components secrets,pkcs11,ssh"; \
14+
/usr/bin/gnome-keyring-daemon --start --components=secrets,pkcs11,ssh; \
15+
fi; \
16+
if [ -x /usr/bin/deepin-keyring-whitebox ] && [ -z "$XRDP_SESSION" ]; then \
17+
echo "start deepin-keyring-whitebox client"; \
18+
/usr/bin/deepin-keyring-whitebox --opt-client=waitfifonotify & \
19+
fi'
20+
Restart=no
21+
TimeoutStartSec=180

0 commit comments

Comments
 (0)