好吧,也许这是一个幻想,但是有很多人说同样的话:
为什么我应该在Gtk应用中使用gksudo而不是sudo?
但是,在其他情况下,由于.ICEauthority的权限发生了变化,副作用可能像Firefox扩展不持久一样严重,或者甚至无法登录,甚至导致极端后果。
为什么用户永远不要使用普通的sudo启动图形应用程序?
假设您以root用户身份运行gedit(图形文本编辑器)。如果您运行sudo gedit,即使程序以root身份运行,HOME仍将继续指向您的主目录。因此,gedit会将配置文件以root身份写入主目录。有时这将导致配置文件由root拥有,因此您无法访问(当您以后以您自己而非root身份运行程序时)。
如何以其他用户(Debian)的身份运行GUI程序?
首先,请勿使用sudo或su更改用户以运行图形过程,否则您很容易遇到问题(〜/ .ICEauthority更改所有者是一个明显的问题)。而是,创建使用以下命令的快捷方式:
以图形方式运行Sudo
好吧,说实话,大多数时候不是。对于许多应用程序,您可以以不正确的方式运行它们-对图形应用程序使用sudo,不会看到不利的副作用。
...
发生这些错误的原因是,有时sudo
启动应用程序时,它会以root特权启动,但会使用用户的配置文件。
您可能也对此邮件存档感兴趣。
因此,让我们对其进行测试。
2个全新的虚拟盒子。Ubuntu 14.04。切勿对它们运行Firefox。运行命令后会发生什么sudo firefox
?
tim@Hairy14CVB:~$ sudo firefox
(process:4857): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
...
shutdownObserver@XPIProvider.jsm:2192:13
这对于两个虚拟盒子都是相同的(或至少非常相似)。在运行firefox时,我安装了youtube扩展程序-精选功能。然后我关闭了firefox,并检查了输出。
tim@Hairy14CVB:~$ ls -la .ICEauthority
-rw------- 1 tim tim 1336 Jun 4 21:31 .ICEauthority
好吧,.ICEauthority
很好!然而...
tim@Hairy14CVB:~$ ls -la | grep root
drwxr-xr-x 3 root root 4096 Jun 1 20:49 ..
drwx------ 3 root root 4096 Jun 5 22:41 .dbus
drwx------ 4 root root 4096 Jun 5 22:41 .mozilla
在我的主文件夹(3件事/home/tim/
)的所有者是root( ..
,.dbus
和.mozilla
)。这对于两个虚拟盒子都是相同的(或至少非常相似)。
所以,这有关系吗?我不确定,所以我像这样运行了Firefox:
tim@Hairy14CVB:~$ firefox
(process:4959): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
Error: Access was denied while trying to open files in your profile directory.
而这个丑陋的错误:
有关完整的终端输出(包括firefox混响),请参见此处和此处的这两个pastebins 。
顺便说一句,我仍然可以以root身份运行firefox。但是现在更多文件已更改:
tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x 4 root root 4096 Jun 3 19:46 ..
drwx------ 3 root root 4096 Jun 5 22:55 .adobe
drwx------ 3 root root 4096 Jun 5 22:40 .dbus
drwx------ 3 root root 4096 Jun 5 22:55 .macromedia
drwx------ 4 root root 4096 Jun 5 22:40 .mozilla
这是因为我将图像上传到了imgur.com吗?不确定。
我该如何解决?chown
。我不明白,但是互联网说可以做到,这真是个虚拟盒子。
sudo chown -R tim:tim /home/tim/
这样就解决了。现在输出只是..
文件:
tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x 4 root root 4096 Jun 3 19:46 ..
在我的实际计算机上也是如此。哦,在我的Kubuntu virtualbox上:
tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x 3 root root 4096 May 16 14:10 ..
我什至从未运行过sudo命令。一切都很好。只是不要sudo
在GUI应用程序上运行。
最终测试:使用-H
和-i
标志运行它:
sudo -H firefox
和
sudo -i firefox
好消息!不过,唯一的根“物”是..
。而且我可以firefox
无根运行。
OP希望我谈论Gedit。
我跑了
sudo gedit
然后安装了一些随机插件。这是输出:
tim@Hairy14VB:~$ ls -la | grep root
ls: cannot access .gvfs: Permission denied
drwxr-xr-x 4 root root 4096 Jun 3 19:46 ..
请注意,我什至无法查看其所有权,.gvfs
所以我这样做:
tim@Hairy14VB:~$ sudo ls -la | grep root
drwxr-xr-x 4 root root 4096 Jun 3 19:46 ..
dr-x------ 2 root root 0 Jun 6 10:05 .gvfs
因此,运行sudo gedit
确实会将我的主目录中的文件更改为root。
我仍然可以打开gedit,但是这次我得到了一些垃圾:
(gedit:7422): Gtk-WARNING **: Attempting to read the recently used resources file at `/home/tim/.local/share/recently-used.xbel', but the parser failed: Failed to open file '/home/tim/.local/share/recently-used.xbel': Permission denied.
这表明存在另一个~.local/share/recently-used.xbel
已更改的文件()。我认为这是最近使用过的文件列表,(幸运的猜想)我现在不再拥有最近使用过的文件列表:
那里应该有一个名为的文件output2.txt.save2
。我的代词是他/他