debian 以root权限运行图形程序

从前blog移植过来,暂无摘要,后期再补

以 root 权限登录图形界面

百度谷哥一大堆,就不写了

为了安全,而且一般也用不着

问题描述

最近遇到一个问题,运行一个图形程序,需要 root 权限。要按平常,直接 sudo 之。

1
sudo xxx

sudo这个命令,在终端运行很好用,但运行图形界面时,没有那么牛逼了

解决过程

wireshark来说,

先运行一下

1
sudo wireshark

毫无疑问,报错了

不同的程序报错信息不同,但大致意思都是连不上 X。

比如wireshark 报错如下

1
2
3
4
5
6
7
No protocol specified

** (wireshark:20909): WARNING **: Could not open X display
No protocol specified
Unable to init server: 无法连接:拒绝连接

(wireshark:20909): Gtk-WARNING **: cannot open display: :0

再比如,某java 程序的报错如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
No protocol specified
Exception in thread "main" java.awt.AWTError: Can't connect to X11 window server using ':0' as the value of the DISPLAY variable.
at sun.awt.X11GraphicsEnvironment.initDisplay(Native Method)
at sun.awt.X11GraphicsEnvironment.access$200(X11GraphicsEnvironment.java:65)
at sun.awt.X11GraphicsEnvironment$1.run(X11GraphicsEnvironment.java:115)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.X11GraphicsEnvironment.<clinit>(X11GraphicsEnvironment.java:74)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at java.awt.GraphicsEnvironment.createGE(GraphicsEnvironment.java:103)
at java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(GraphicsEnvironment.java:82)
at java.awt.Window.initGC(Window.java:475)
at java.awt.Window.init(Window.java:495)
at java.awt.Window.<init>(Window.java:537)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:189)
at net.fs.client.ClientUI.<init>(ClientUI.java:167)
at net.fs.client.FSClient.main(FSClient.java:26)

查了一下,图形界面有自己的 sudo

kde

1
kdesudo COMMAND

gnome

1
gksu COMMAND

注意

COMMAND 里有参数时记得加上引号,将命令和参数包起来,如:

1
kdesudo 'godie -a --bcd=efg'

目前我是kde环境,试了一下,果然能用

1
kdesudo wireshark

ok 收工

0%