Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为GUI桌面应用程序的不同用户共享主目录?_Python_User Interface_Ubuntu_Permissions - Fatal编程技术网

Python 如何为GUI桌面应用程序的不同用户共享主目录?

Python 如何为GUI桌面应用程序的不同用户共享主目录?,python,user-interface,ubuntu,permissions,Python,User Interface,Ubuntu,Permissions,我正在为现场支持人员开发笔记本GUI应用程序(即,任何时候只有一个用户登录到系统)。只有一个用户应用程序在用户定义的会话中启动(即,Ubuntu上的/usr/share/xsession/starting GUI应用程序中只有一个桌面格式文件)。当用户通电时,将要求其登录,当登录成功时,应用程序启动。当他/她退出时,Ubuntu会再次显示问候语 用户有单独的帐户(例如:user1、user2、user3…),所有用户都属于同一主组(例如:tnet),并且都有以组命名的相同主目录(例如:“/hom

我正在为现场支持人员开发笔记本GUI应用程序(即,任何时候只有一个用户登录到系统)。只有一个用户应用程序在用户定义的会话中启动(即,Ubuntu上的/usr/share/xsession/starting GUI应用程序中只有一个桌面格式文件)。当用户通电时,将要求其登录,当登录成功时,应用程序启动。当他/她退出时,Ubuntu会再次显示问候语

用户有单独的帐户(例如:user1user2user3…),所有用户都属于同一主组(例如:tnet),并且都有以组命名的相同主目录(例如:“/home/tnet”)。我还创建了组名对应的用户(但不允许他登录)。所有用户共享umask 002,从而可以访问其他用户创建的文件

对于第一个用户(例如user1),所有这些都可以正常工作,但在第一个用户退出后,GUI应用程序无法运行,而另一个用户尝试登录(例如user2)。执行python程序中的第一条语句时失败:

root=Tk() ... _tkinter.TclError: couldn't connect to display "localhost:10.0" root=Tk() ... _tkinter.TclError:无法连接到显示“localhost:10.0” 原因是$HOME/.Xauthority中隐藏的文件仍然由具有600权限的user1拥有,并且程序无法为user2打开此文件。其他隐藏文件/目录具有类似模式(即不允许其他用户打开):

-rw-----1用户1 tnet 414 6月9日12:09.巴什胡历史 drwx-----10用户1 tnet 4096 Jun 9 12:11.缓存 drwx------3个用户1 tnet 4096 Jun 2 15:06.compiz drwx------14 user1 tnet 4096 Jun 3 11:27.config drwx------3用户1 tnet 4096 Jun 2 15:13.dbus drwx------3用户1 tnet 4096 Jun 3 11:26.gconf -rw------1用户1 tnet 946 Jun 3 11:26。ICE授权 drwx------3用户1 tnet 4096 Jun 2 15:06.本地 -rw-----1调子网101六月8日13:40.权威 -rw------2用户1 tnet 0 Jun 9 12:11.Xauthority-c -rw------2用户1 tnet 0 Jun 9 12:11.Xauthority-l -rw------1用户1 tnet 593 Jun 3 15:00.x会话错误 -rw------1用户1 tnet 1156 Jun 3 14:54.xsession-errors.old 如果我手动将.Xauthority的模式更改为660,则我的GUI程序在User2上运行良好

我的问题是如何避免这个问题,以及其他隐藏文件/目录在600模式下可能出现的其他问题,我几乎不知道它们的用途是什么?同样,此时只允许一个用户登录系统

附言。 这不仅仅是$HOME/.Xauthority的模式:当我写这个问题时,为了捕捉发生了什么,我远程登录了ssh-Y user2@(在本例中,在登录之前更改模式有效)。但是,当我以user2的身份在本地登录时,它根本不起作用——我看到的只是Ubuntu启动屏幕:-(更准确地说,在文件.xsession错误中:

init:/home/tunet/.config/upstart: Unable to load configuration: Permission denied init: dbus pre-start process (2658) terminated with status 1 init:/home/tunet/.config/upstart:无法加载配置:权限被拒绝 初始化:dbus预启动进程(2658)以状态1终止
因此,我的问题并不局限于.Xauthority的文件模式。也许我必须完全改变方法。

好吧,答案是:不要对所有用户使用相同的主目录!首先这是个坏主意。相反,将file.xsession放在所有用户都可以访问的目录中。(例如:/usr/local/common/)

因此,为了让系统的所有用户都能运行相同的应用程序(而不是ubuntu桌面),我使用了@Takkak提供的问题答案,在文件custom.desktop中修改了Exec指令,指向/usr/local/common/.xsession,创建了.xsession文件,该文件反过来运行gui应用程序。所有用户都必须定义主组(例如tnet)。/usr/local/common/及其内容的组所有权也必须是tnet。如果您不想在Ubuntu问候语中选择任何其他桌面,请从/usr/share/xsession/except custom.desktop中删除*.desktop

init:/home/tunet/.config/upstart: Unable to load configuration: Permission denied init: dbus pre-start process (2658) terminated with status 1