当我在虚拟终端(例如 /dev/tty2)上以用户“paul”登录并输入“chvt 4”时,我会切换到 /dev/tty4 的虚拟终端就好了。
当我以用户“paul”的身份输入“chvt 7”时,我会切换到 X 窗口系统。正好。
但是...在 xterm 中,如果我以用户“paul”的身份键入“chvt 2”,则会收到以下错误:“无法获取引用控制台的文件描述符”
chvt 命令仅在我以“root”身份运行时才在 xterm 中起作用,在这种情况下,很高兴将我切换到虚拟终端。
这对我来说似乎很破碎。有谁知道为什么会这样?
qua*_*ote 13
从安全的角度来看,回想一下 X 旨在通过网络以及在物理控制台上使用。虚拟终端不是,所以在物理 VT 上的登录是与 X 不同的安全野兽。
来自这个 Debian 错误报告,关于fgconsole. 以下是为什么chvt和朋友无法从 X 访问它的详细信息:
它不仅会影响 fgconsole,还会影响
chvt,openvt以及任何其他试图获取控制台文件描述符的 kbd 实用程序。这些程序通过尝试打开/ioctl 这些文件(按此顺序)来完成它们的工作:
/proc/self/fd/0 (is a pseudo tty in your case)
/dev/tty (also PTY)
/dev/tty0 (only accessible to root)
/dev/vc/0 (doesn’t exist nowadays)
/dev/console (root)
std{in,out,err} (PTY)
Run Code Online (Sandbox Code Playgroud)
由于这些都无法响应
VT_GETSTATEioctl,fgconsole 和朋友都失败了。
该问题的首选解决方案是使用sudo. 还有其他选择,但由于安全问题,它们在一般情况下不太可取——您可以决定您的情况可以容忍其中一个(强调我的):
所以没有真正的解决方案,如果我不使用 sudo?
您无法更改
/dev/tty0或/dev/console不打开一个巨大的安全漏洞的权限。设置所需的程序 suid 是一种选择,但我会远离它。sudo更安全,可以更详细地控制。
| 归档时间: |
|
| 查看次数: |
10407 次 |
| 最近记录: |