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

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

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

有人能举个例子来证明这一点吗?只要在发生非常糟糕的事情时给出一个测试用例,当我运行

sudo gedit /etc/rc.local

编辑文件并保存。

我收到了很多反对票试图帮助原帖者并有大量评论表示使用 sudo 运行 gedit 是一种犯罪。

谁能举一个真实的例子?

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

sudo gedit并且,解释为什么广泛使用是不好的,或者实际上不是这样的,等等,是很重要的。

答案1

好吧,这也许是幻想,但有许多人都说了同样的话:

那么,让我们测试一下。

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

...

[email protected]: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

我的主文件夹 ( /home/tim/) 中有 3 个项目由 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 命令。所以一切都很好。只是不要sudo在 GUI 应用程序上运行。

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

sudo -H firefox

sudo -i firefox

好消息!不过,唯一的 root “东西”是..。而且我firefox无需 root 就可以运行。


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确实会将我的主目录中的文件更改为根目录。

我仍然可以打开 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。我的代词是他/他

答案2

至于sudo gedit,没有什么可怕的,只是做法不当,尤其是最近。建议会有多难sudo -H gedit

-H--set-home请求安全策略将 HOME 环境变量设置为目标用户的密码数据库条目指定的主目录。根据策略,这可能是默认行为。

什么发生?

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

使用该命令,您可能会看到几个由 root 拥有的文件。其中一个是新的.file、,.gvfs稍后会是 root 拥有的~/.cache/dconf,以及前面提到的recently-used.xbel

所以没有“天空正在衰落”之类的东西,但仍然如此。现在有报告称继续使用会导致其他问题,但我不会声称我在这里没有看到什么。

还请注意,从 13.10 开始,asudo gedit将使用用户的 gedit 配置,而不是 root 的 gedit 配置。同样,这只是不好的做法,那么为什么要继续这样做或建议其他人这样做呢?

相关内容