在 Windows XP 上使用 RealVNC 的VNC 查看器企业版时,为了连接到运行 GNOME2 会话的 RHEL 机器,我已将 VNC 客户端配置为打开“将特殊密钥直接传递给服务器”选项。这意味着当客户端处于焦点时,Alt+Tab组合会在我的 GNOME 会话(在 VNC 服务器上)中打开的窗口之间切换焦点。
但是,当客户端未处于焦点时,Alt+在 Windows XP 桌面上打开的窗口Tab之间切换焦点。
当我的 Windows XP 桌面看起来像这样时,这就会成为一个问题:
[WinXP_window1] [[GNOME_window1] [GNOME_window2]] [WinXP_window3]
Run Code Online (Sandbox Code Playgroud)
如果我在[WinXP_window1],并且想要到达[WinXP_window3],我根本无法使用键盘来完成,因为 VNC 客户端进入焦点的那一刻,它开始捕获Alt+ Tab。我被迫用鼠标点击(这很烦人)。
我怎样才能解决这个问题,同时仍然让我的 GNOME 窗口正确响应Alt+ Tab?
一个可接受的解决方案不应该要求在客户端或服务器上安装任何程序(我既不拥有,也不具有管理权限/root 访问权限)。
在 Fedora 18 机器上,我作为普通用户在安装过程中创建了以下 SELinux 上下文:
$ sestatus
SELinux status: enabled
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Run Code Online (Sandbox Code Playgroud)
和
$ id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Run Code Online (Sandbox Code Playgroud)
我想使用受限的 selinux 角色运行一个程序user_r,而不是当前的角色unconfined_r,因此我使用受限的 SELinux 用户创建一个新用户user_r:
# useradd -MN -Z user_u johndoe
# echo 'fubar' | passwd johndoe --stdin
Run Code Online (Sandbox Code Playgroud)
现在,我打开一个新的 tty 并johndoe使用登录agetty。它抱怨/home/johndoe不存在,但本质上,它让我登录。SELinux 上下文:
$ id -Z
user_u:user_r:user_t:s0
Run Code Online (Sandbox Code Playgroud)
user_u:user_r:user_t是完美的,也是我想要的。但我想在已经作为unconfined_u而不是作为新登录运行的脚本中实现这一点。我尝试过 …