[Desktop] 关于deepin 20.7+xrdp 0.9.9-1的优化建议
Tofloor
poster avatar
sh******ng@163.com
deepin
2022-09-30 18:23
Author

最近开始试用deepin 20.7,因平时习惯使用win10的远程桌面访问debian,便apt install xrdp(版本 0.9.9-1)。看了论坛上以前关于xrdp的一些讨论,凭良心说,deepin 20.7基本完美解决了和xrdp配合使用的问题,安装xrdp后无需任何额外配置就能使用,效果还是很好的。关于同一个用户只能在一处登陆的限制,也能理解(虽然debian+lxde能支持同一用户同时本地登录和xrdp远程登陆,但因每个用户只能跑一个polkit代理,所以同一用户第二个登陆的x界面就无法使用polkit提权功能,导致菜单上好多命令无法执行);至于RDP 登录成功后会提示解锁密钥环和网络设置会弹出密码输入的问题,可以通过配置/etc/pam.d/xrdp-sesman和/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy完美解决。
试用下来,发现deepin 20.7的startdde在处理任务栏的电源功能时(关机、重启、待机、休眠和注销)不够优雅,在xrdp下使用这些功能不甚理想:
1、在xrdp下注销时,先前xrdp-chansrv mount的thinclient_drives没有被umount,导致后续xrdp再登陆时无法mount thinclient_drives,从而无法远程复制文件,一开始还以为是xrdp的问题,后来发现断开(非注销)xrdp再重连就没有问题(能自动mount/umount),说明xrdp本身没有问题。这个问题导致仅在xrdp首次登陆deepin 20.7时方可远程复制文件,一旦注销后再怎么反复登陆,就再也不能远程复制了。临时解决方案,在/etc/xrdp/startwm.sh添加fusermount -u "$HOME/thinclient_drives"。
2、关机或重启,按理xrdp下,通过polkit提权后也能操作,但目前不提示输入提权密码,直接退出,等价于执行了注销操作,好吧,也能接受。
3、待机或休眠,我的deepin 20.7安装在virtualbox上,似乎不支持,故压根不显示,也没有问题。但我在测试uos家庭版时(21.3.1+xrdp 0.9.9-1)发现,在xrdp下一旦点击失误,选中待机或休眠后,同样不提示输入提权密码,主机当然不会待机或休眠,但xrdp就一直死在那里(黑屏),即使断开后重连,也是一样。而且由于同一个用户只能在一处登陆的限制,因此时xrdp并没有注销,所以本地也无法进入图形界面,这他么就很不方便了。鉴于家庭版在处理1和2的表现和deepin 20.7完全一样,所以有理由相信,deepin 20.7在处理待机或休眠时的表现应类同uos家庭版 21.3.1。

初步分析:
deepin 20.7的/usr/share/polkit-1/actions/org.freedesktop.login1.policy明显已经启用了上述操作的提权设置,日志也分别显示:
xxxx startdde[2155]: session.go:301: failed to call login PowerOff: Interactive authentication required.
xxxx startdde[2154]: session.go:351: failed to call login Reboot: Interactive authentication required.
xxxx startdde[4207]: session.go:409: failed to suspend: Interactive authentication required.
xxxx startdde[3588]: session.go:439: failed to Hibernate: Interactive authentication required.

说明startdde也知道要提权,但就是不出现提权密码输入窗口。关键问题是startdde在提权密码验证失败后(实质是压根不出现输入密码窗口),仍然执行后续操作,对于关机或重启,杀死xrdp后台进程,导致效果如同注销,对于待机或休眠,则执行到一半,发现无权,就等在那里,此时由于已执行了一部分操作,所以后续即使断开xrdp后再重连,xrdp也是黑屏(即使systemctl restart xrdp 也无效)。
临时解决方案,调整org.freedesktop.login1.policy,针对待机或休眠,和本地登录保持一致,提权总是通过,无需验证密码,确保能执行完待机或休眠流程,此时主机确实能进入待机或休眠状态,如属于误点击,再通过网络远程唤醒马上唤醒主机。

Reply Favorite View the author
All Replies
Kiah
deepin
2023-03-07 03:29
#1

文章中写到的“配置/etc/pam.d/xrdp-sesman和/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy完美解决”

请问该如何配置呢?有没有文章。或者具体点,我现在遇到了这个问题。

Reply View the author
犬次郎大王
deepin
2023-04-14 17:30
#2
Kiah

文章中写到的“配置/etc/pam.d/xrdp-sesman和/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy完美解决”

请问该如何配置呢?有没有文章。或者具体点,我现在遇到了这个问题。

编辑文件/usr/share/polkit-1/actions/org.freedesktop.NetworkManager.policy 找到自己对应的提示语,把对应的都改成yes,就不会一直提示授权了,我在我电脑上测试成功了
image.png

Reply View the author