我刚刚启动并运行了Kali live USB,并希望通过处理一些我在Windows Box上编写的代码来熟悉该系统。长话短说,我无法使用一些非常基本的tkinter代码,因此我变得非常基础。事实证明,只有当我是root或sudo时,我才能使其运行。见下文。
ben@kali:/usr/lib/python3.2$ python
Python 3.2.3 (default, Feb 20 2013, 14:44:27)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
>>> t = Tk()
No protocol specified
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "tkinter/__init__.py", line 1701, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: couldnt connect to display ":0.0"
>>>
ben@kali:/usr/lib/python3.2$ sudo python
Python 3.2.3 (default, Feb 20 2013, 14:44:27)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from tkinter import *
>>> t = Tk()
>>>
如您所见,当不以root身份运行python时,我得到了错误,通过对python使用sudo,tkinter可以正常工作(显然您看不到窗口,但它可以工作)。我对linux还是很陌生,真的不确定从哪里开始。我确实在tkinter文件夹上尝试过chmod 777,但这似乎没有任何效果。任何想法都将非常有帮助。谢谢
这完全取决于您的DISPLAY
环境变量设置为什么。这表示代表与显示服务器的连接的套接字;对于:0.0
,这是一个Unix域套接字(通常/tmp/.X11-unix/X0
,但不是必须的;这取决于Xserver和Xlib之间的协议)。如果您无权访问该目录中的该套接字,则将无法使用该显示。
XAUTHORITY
取决于环境如何确切地保护和验证连接,在环境变量中命名的文件也可能存在一些问题。这里有很多可能的复杂性,但摘要是,如果将对X服务器进行身份验证所需的安全密钥存储在X客户端库无法读取(或找不到)的文件中,则连接将失败。这与首先是否可以访问套接字无关(我的上一段)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句