有没有办法通过 SSH 无需 root 即可远程启动 GNOME 会话?
背景
我正在尝试/dev/cdrom -> /dev/sr0
通过 SSH 访问远程计算机的 CD 驱动器 ( )。
远程计算机正在运行 Ubuntu 18。
问题是写入驱动器文件 ( /dev/sr0
) 的权限在文件 ACL 中设置为gdm用户当没有人登录计算机时(可以通过 进行验证getfacl /dev/sr0
)。
当用户通过 GNOME(即亲自)登录计算机时,ACL 就会更新以匹配他们的用户。
答案1
如果您使用启用了 X11 转发的 SSH 连接(并且正在运行本地 X11 服务器),则应该能够使用命令在远程服务器上启动 GNOME 会话gnome-session
。
但您会发现您无法访问 CD 驱动器。
你看,CD驱动器的权限被授予了本地登录的用户仅限,即使登录是在虚拟控制台上以文本模式完成的。不只是针对正在进行 GNOME 会话的人。系统会知道其中的区别。 ACL 分配是通过以下方式完成的udev
:uaccess
分配给设备的标签/lib/udev/rules.d/70-uaccess.rules
将确定哪些设备将得到这种处理。
如果您希望能够在通过 SSH 远程登录时使用 CD 驱动器,则需要为您的用户帐户cdrom
分配组成员身份。该操作只需执行一次,但需要 root 访问权限。例如,如果您的用户帐户名为helper
:
sudo usermod -a -G cdrom helper
或者
sudo gpasswd --add helper cdrom
或者
sudo adduser helper cdrom
执行任何一个命令后,您需要注销才能使更改生效。下次登录时,您将成为该组的成员cdrom
(除了您之前所属的任何组之外),并且无论您是本地登录还是远程登录,都可以始终使用 CD 驱动器。这就是该cdrom
小组的目的。
这里列出了具有类似目的的其他团体:https://wiki.debian.org/SystemGroups
答案2
我通过在 MATE 桌面上以 :1 和小于全屏的分辨率启动 Xnest 来执行此操作。export DISPLAY=:1
然后我ssh -Y user@remotehost mate-session
会在较小的 Xnest X“服务器”窗口中看到完整的桌面。 (此时 Xnest 既充当 X 服务器又充当 X 客户端)