在解决的过程中尝试了以下多种方式,但没有确定最终是哪一种方式起效,故都列出来,仅供参考。
登录时指定端口号
参考xrdp远程登录恢复上一次登陆会话和XRDP 登录保持相同的登陆会话 (XFCE-SESSION),但是并没有远程连接时并没有显示端口的使用信息。在win10设置-系统-远程桌面-高级设置中可以查看当前远程桌面端口(如3389),不知道这个端口具体指什么,但是在登录时利用 IPaddress:3389 可以正确显示桌面,但是直接关闭远程连接窗口,再登录时不指定该端口也能正确连接到远程桌面,还不清楚是什么原因。
kill相关进程
参考Ubuntu之xrdp远程桌面报错处理,利用
pgrep -f xrdp |xargs kill
systemctl start xrdp
先kill所有xrdp相关进程,再重启xrdp服务。
也查询到使用$ gnome-session-quit --no-prompt
直接退出桌面进程,但是没有尝试该方法。
Ubuntu用户组相关
使用远程桌面连接时同一个用户只有一个图形化界面,网上有说多安装一个桌面环境或者注销当前用户的方法,由于我远程服务器本身就登录了图形界面,因此直接新建用户专门用于远程连接:
# 创建用户,同时会自动创建同名组
$ sudo adduser username
# 将新用户添加到管理组
$ sudo usermod -aG sudo username
解决过程中查询到的用户、组相关的操作记录如下:
查询sudo组中的成员
$ sudo cat /etc/group | grep sudo
输出格式为:组名称:密码(用x代替,并不会真正显示密码):组ID(自动设置):组成员,如:
sudo:x:27:username1,username2
若输入$ sudo cat /etc/group
则输出所有组信息。
切换用户登录
利用$ su username
可以切换用户,$ whoami
查看当前用户名,$ who
查看登录用户名。
sudo与root的区别
刚开始使用Ubuntu时不理解为什么在命令前加上$ sudo
以root权限执行是输入普通用户的密码而不是root用户的密码。现在按自己的理解,这样做可能也就是多一层限制,毕竟要额外添加$ sudo
。当然也不是所有普通用户都可以通过$ sudo
获取权限,必需要是sudo组中才可以,初次创建的用户会被加到admin组。但我利用$ id -nG username
查看username所在组时,并没有发现admin组,所有用户组中也并没有admin这个组。查询后未得出明确结论,但可以确定admin组的功能基本与sudo组相同。
/etc/sudoers 里面会默认有“%sudo ALL=(ALL:ALL)ALL”这个字段的解释可以参考链接。