当gedit与sudo一起使用时会发生什么具体的坏事?

我读到这个答案解释说“有时”root可以在/home/$USER目录下拥有一些东西。

任何人都可以举例说明如何certificate它。 当我运行的时候,只要给出一个非常糟糕的测试用例

 sudo gedit /etc/rc.local 

编辑文件并保存。

我得到了许多试图帮助OP的评论,并且评论充斥着说用sudo运行gedit是犯罪行为。

谁能举一个真实的例子?

我清楚地解释了为什么这个问题不重复。 对链接问题没有针对gedit的答案。

重要的是要解释为什么广泛使用的sudo gedit是坏的,或者不是真的,等等。

至于sudo gedit ,没有什么可怕的,只是糟糕的做法,特别是最近。 建议sudo -H gedit要难得多少?

怎么了?

您在主文件夹中获得了几个root拥有的文件。 一个( recently-used.xbel )可能会返回用户所有权。 删除并重新创建文件时可能会发生这种情况。 要查看sudo gedit已更改的内容,请运行find ~ -user root -group root并查看返回的内容。 默认情况下,这应该没什么。

使用该命令,您可能会看到root拥有的几个文件。 一个是新的.file.gvfs ,迟早是root拥有的~/.cache/dconf和前面提到的recently-used.xbel

所以没有’天空失败’的东西,但仍然。 现在有报道称继续使用导致其他问题,但不会声称我在这里没有看到。

另请注意,从13.10开始, sudo gedit将使用用户的gedit配置而不是root的gedit配置。 再次只是不好的做法,为什么继续这样做或建议其他人这样做?

好吧也许这是一个幻想,但也有很多人说同样的话:

我为什么要将Gksudo用于Gtk应用而不是sudo?

但是,还有其他时候,副作用可能会像Firefox扩展程序那样温和,或者因为.ICEauthority的权限发生变化而无法再登录。

为什么用户永远不会使用普通的sudo来启动图形应用程序?

假设您以root身份运行gedit(图形文本编辑器)。 如果你运行sudo gedit,HOME将继续指向你的主目录,即使该程序以root用户身份运行。 因此,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 babble),请在这里和这里看到这两个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 。 我不明白,但互联网说这样做,它是一个虚拟盒所以yolo。

 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虚拟机上:

 tim@Hairy14VB:~$ ls -la | grep root drwxr-xr-x 3 root root 4096 May 16 14:10 .. 

我甚至从未运行过sudo命令。 一切都很好。 只是不要在GUI应用程序上运行sudo

最终测试:使用-H-i标志运行它:

 sudo -H firefox 

 sudo -i firefox 

好消息! 尽管如此,唯一的根本“东西”是.. 我可以在没有root的情况下运行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的文件。