Skip to content

Commit 9ef372e

Browse files
committed
fix: prevent whitebox keyring from blocking xrdp remote login
The original script directly started both gnome-keyring-daemon and deepin-keyring-whitebox during X session initialization, which caused issues with xrdp remote login sessions. The deepin-keyring-whitebox service was blocking xrdp connections. This change replaces the direct script execution with a systemd user service (dde-keyring.service) that includes conditional logic to skip deepin-keyring-whitebox startup when XRDP_SESSION environment variable is detected. The service properly handles both keyring components with appropriate dependencies and timeouts. Key changes: 1. Removed direct keyring startup from Xsession script 2. Added new systemd user service for keyring management 3. Added XRDP_SESSION environment check to skip whitebox in remote sessions 4. Maintained gnome-keyring functionality for all session types 5. Set proper service dependencies and timeout handling Log: Fixed xrdp remote login issue caused by deepin-keyring-whitebox service Influence: 1. Test local desktop login to ensure keyring services start normally 2. Test xrdp remote login to verify whitebox service is properly skipped 3. Verify gnome-keyring-daemon starts in both local and remote sessions 4. Check that password management and SSH key functionality work correctly 5. Test session startup time and service dependencies fix: 解决白盒密钥服务阻塞xrdp远程登录的问题 原脚本在X会话初始化时直接启动gnome-keyring-daemon和deepin-keyring- whitebox,这导致xrdp远程登录会话出现问题。deepin-keyring-whitebox服务会 阻塞xrdp连接。 此次更改将直接脚本执行替换为systemd用户服务(dde-keyring.service),该服务 包含条件逻辑,在检测到XRDP_SESSION环境变量时跳过deepin-keyring-whitebox 启动。该服务通过适当的依赖关系和超时设置来正确处理两个密钥环组件。 主要变更: 1. 从Xsession脚本中移除直接启动密钥环的代码 2. 新增systemd用户服务用于密钥环管理 3. 添加XRDP_SESSION环境检查以在远程会话中跳过白盒服务 4. 为所有会话类型保持gnome-keyring功能正常 5. 设置正确的服务依赖关系和超时处理 Log: 修复deepin-keyring-whitebox服务导致的xrdp远程登录问题 Influence: 1. 测试本地桌面登录,确保密钥环服务正常启动 2. 测试xrdp远程登录,验证白盒服务被正确跳过 3. 验证gnome-keyring-daemon在本地和远程会话中都能启动 4. 检查密码管理和SSH密钥功能正常工作 5. 测试会话启动时间和服务依赖关系
1 parent 7a6866a commit 9ef372e

File tree

3 files changed

+33
-9
lines changed

3 files changed

+33
-9
lines changed
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)