如何在没有sudo的情况下运行/ usr / bin / Xorg?


8

这个问题是关于/usr/bin/Xorg直接在Ubuntu 14.04上执行的。

而且我知道存在Xdummy,但是我无法使虚拟驱动程序与nvidia GPU一起正常工作,因此这不是一个选择。

我复制了系统范围的xorg.conf/usr/lib/xorg/modules,并对其进行了一些修改。(也ModulePath由我指定xorg.conf

以root用户身份运行以下命令可以正常工作:

Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./16.log -config ./xorg.conf :16

但是,如果我以非root用户身份执行此操作(日志文件权限为OK),则会发生此错误:

(EE) 
Fatal server error:
(EE) xf86OpenConsole: Cannot open virtual console 9 (Permission denied)
(EE) 
(EE) 
Please consult the The X.Org Foundation support 
     at http://wiki.x.org
 for help. 
(EE) Please also check the log file at "./16.log" for additional information.
(EE) 
(EE) Server terminated with error (1). Closing log file.

您能帮我在没有sudo的情况下运行Xorg吗?


我认为以非root用户身份运行X是不可能的。它需要直接访问很多硬件和系统内容。
dirkt

3
setuid:上了Xorg位chmod +s $(which Xorg)
塞尔

@dirkt在最新的系统上可能出现,但并非所有驱动程序都可以。参见例如UbuntuDebianFedoraGentooArch等……
Gilles'SO-别再邪恶了''

感谢大伙们!您的建议似乎对我有用!
noname

Answers:


5

要确定允许谁运行X,请使用

dpkg-reconfigure x11-common

共有三个选项:仅root用户,仅控制台用户或任何人。该条目位于中/etc/X11/Xwrapper.config


从Debian 9和Ubuntu 16.04开始,此文件不存在。安装后xserver-xorg-legacy,该文件会重新出现,其内容必须从以下位置进行更改:

allowed_users=console

至:

allowed_users=anybody
needs_root_rights=yes

您还需要指定启动X时要使用的虚拟终端,否则可能会发生错误。例如:

Xorg :8 vt8

3

X需要访问输入设备(鼠标和键盘)以及监视器和图形卡以进行输出。

要针对非root用户X实现此目的,您可以将的组Xorg从更改rootinput,设置setgit位,然后将用户添加到group video

chown root:input /usr/lib/xorg/Xorg
chmod g+s /usr/lib/xorg/Xorg
adduser YOURUSERNAME video

(相反,您可以将用户同时添加到video和中input,但是不建议这样做。组中的用户input可以监视其他用户的输入。例如,X中的GUI可能可以监视键入到console / tty中的root密码。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.