当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
的文件。