djwdj 发表于 2023-8-9 18:37

小学生分析xrdp登录闪退

环境:centos7.9最小安装
         openbox
         无大牌桌面
         无DM
xrdp登录成功就闪退,日志就一行: sesman_data_in: scp_process_msg failed

先不科学搜索,没结果。再假科学搜索,不对路。
最后科学搜索,打开翻译器一个个看。也没有

想起:日志没有写,就是外部问题

```
rpm -ql xrdp
```
找到/etc配置
>..
> /etc/xrdp/openssl.conf
/etc/xrdp/pulse
/etc/xrdp/pulse/default.pa
/etc/xrdp/sesman.ini
/etc/xrdp/xrdp.ini
/etc/xrdp/xrdp_keyboard.ini
..
/usr/libexec/xrdp/reconnectwm.sh
/usr/libexec/xrdp/startwm-bash.sh
/usr/libexec/xrdp/startwm.sh
...

看到sesman.ini和日志字符接近

读取/etc/xrdp/sesman.ini
8行UserWindowManager=startwm.sh

根据包信息切换到/usr/libexec/xrdp目录
读取/usr/libexec/xrdp/startwm.sh
里面有各种系统的配置。

87-93 行
> \# el
if [ -r /etc/X11/xinit/Xsession ]; then
    pre_start
    . /etc/X11/xinit/Xsession
    post_start
    exit 0
fi

centos系列的标识是el
ubuntu的看debian

所以现在需要去读取 /etc/X11/xinit/Xsession
这个文件又长又臭。只能瞎蒙了。
看到文件的后面:

> if [ -x "$HOME/.xsession" ]; then
    exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $HOME/.xsession"
elif [ -x "$HOME/.Xclients" ]; then
    exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients"
elif [ -x /etc/X11/xinit/Xclients ]; then
    exec -l $SHELL -c "$CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients"
else
    \# should never get here; failsafe fallback
    exec -l $SHELL -c "xsm"
fi

$HOME/.xsession这个东西有点熟悉。想起很多文章。都是这个文件启动桌面
,赶紧看了一下。还真没有这个文件。

```
echo openbox >~/.xsession
```
很激动,赶紧试试。登录还是闪退
再看回上面脚本。引用的方式是exec
平时用的bash xx.sh是不用管权限的。
exec是要有权限。
```
chmod +x ~/.xsession
```

很激动,再次尝试登陆。
成功了,终于进入大黑屏。
鼠标能动。右键也能唤出。
这就是openbox了
能用就行,不需要花里胡哨的壁纸。(主要是不会安装)

wapjdongge 发表于 2023-8-9 18:57

挺有意思的
页: [1]
查看完整版本: 小学生分析xrdp登录闪退