Pil*_*ot6 9 configuration gedit root sudo ownership
我读了这个答案,解释说“有时” root 可以在/home/$USER目录中拥有某些东西。
谁能举个例子来证明。当我运行时,当发生非常糟糕的事情时给出一个测试用例
sudo gedit /etc/rc.local
Run Code Online (Sandbox Code Playgroud)
编辑文件并保存。
我在试图帮助 OP 的过程中得到了很多反对意见,并且大量评论说使用 sudo 运行 gedit 是一种犯罪。
谁能举一个真实的例子?
我清楚地解释了为什么这个问题不是重复的。对于链接的问题,没有特定于 gedit 的答案。
重要的是要解释为什么广泛使用sudo gedit是不好的,或者不是真的,等等。
Tim*_*Tim 12
好吧,也许这是一种幻想,但有很多人都在说同样的话:
为什么我应该为 Gtk 应用程序使用 gksudo 而不是 sudo?
但是,也有其他时候,副作用可能像 Firefox 扩展程序不粘连一样轻微,也可能像 .ICEauthority 的权限发生变化而导致无法再登录。
为什么用户永远不应该使用普通的 sudo 来启动图形应用程序?
假设您以 root 身份运行 gedit(一个图形文本编辑器)。如果您运行 sudo gedit,HOME 将继续指向您的主目录,即使程序以 root 身份运行。因此,gedit 将以 root 身份将配置文件写入您的主目录。这有时会导致配置文件由 root 拥有,因此您无法访问(当您以后以自己而不是 root 身份运行程序时)。
首先,不要使用 sudo 或 su 来更改用户以运行图形进程,否则您很可能会遇到问题(~/.ICEauthority 更改所有者是一个值得注意的问题)。相反,创建一个使用以下命令的快捷方式:
好吧,老实说,大多数时候并非如此。对于许多应用程序,您可以以不正确的方式运行它们 - 将 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
Run Code Online (Sandbox Code Playgroud)
这对于两个虚拟盒子是相同的(或至少非常相似)。当 firefox 运行时,我安装了一个 youtube 扩展程序 - 一个特色扩展程序。然后我关闭了 Firefox,并检查了输出。
tim@Hairy14CVB:~$ ls -la .ICEauthority
-rw------- 1 tim tim 1336 Jun 4 21:31 .ICEauthority
Run Code Online (Sandbox Code Playgroud)
嗯,.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
Run Code Online (Sandbox Code Playgroud)
我的主文件夹 ( /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.
Run Code Online (Sandbox Code Playgroud)
还有这个丑陋的错误:

对于完整的终端输出(包括 firefox babble),请参阅这两个 pastebin,here和here。
顺便说一下,我仍然可以以 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
Run Code Online (Sandbox Code Playgroud)
这是因为我上传了一张图片到 imgur.com 吗?没有把握。
我是如何解决这个问题的?chown. 我不明白,但互联网上说要这样做,它是一个Virtual Box,所以yolo。
sudo chown -R tim:tim /home/tim/
Run Code Online (Sandbox Code Playgroud)
这修复了它。现在输出只是..文件:
tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x 4 root root 4096 Jun 3 19:46 ..
Run Code Online (Sandbox Code Playgroud)
在我的实际计算机上也是如此。哦,在我的 Kubuntu 虚拟机上:
tim@Hairy14VB:~$ ls -la | grep root
drwxr-xr-x 3 root root 4096 May 16 14:10 ..
Run Code Online (Sandbox Code Playgroud)
我什至从未运行过 sudo 命令。所以一切都很好。只是不要sudo在 GUI 应用程序上运行。
最终测试:使用-H和-i标志运行它:
sudo -H firefox
Run Code Online (Sandbox Code Playgroud)
和
sudo -i firefox
Run Code Online (Sandbox Code Playgroud)
还有好消息!尽管如此,唯一的根“东西”是... 我可以在firefox没有root的情况下运行。
OP 要我谈谈 Gedit。
我跑了
sudo gedit
Run Code Online (Sandbox Code Playgroud)
然后安装了一些随机插件。这是输出:
tim@Hairy14VB:~$ ls -la | grep root
ls: cannot access .gvfs: Permission denied
drwxr-xr-x 4 root root 4096 Jun 3 19:46 ..
Run Code Online (Sandbox Code Playgroud)
请注意,我什至无法查看所有权,.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
Run Code Online (Sandbox Code Playgroud)
所以运行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.
Run Code Online (Sandbox Code Playgroud)
这表明还有另一个文件 ( ~.local/share/recently-used.xbel) 已更改。我认为这是最近使用的文件列表和(幸运的猜测)我现在不再有我最近使用的文件列表:

那里应该有一个名为output2.txt.save2. 我的代词是他/他
dou*_*oug 10
至于sudo gedit,没有什么可怕的,只是糟糕的练习,尤其是最近。提出建议有多难sudo -H gedit?
-H,--set-home请求安全策略将 HOME 环境变量设置为目标用户的密码数据库条目指定的主目录。根据策略,这可能是默认行为。
什么没有发生?
您的主文件夹中有几个根拥有的文件。一个 ( recently-used.xbel) 可能会回到用户所有权。删除并重新创建文件时可能会发生这种情况。要查看sudo gedit更改的内容,请运行find ~ -user root -group root并查看返回的内容。默认情况下,这应该是什么。
使用该命令,您可能会看到 root 拥有的几个文件。一个将是一个新的.file,.gvfs迟早是根拥有的~/.cache/dconf和前面提到的recently-used.xbel。
所以没有“天空正在失败”的东西,但仍然如此。现在有报道称继续使用会导致其他问题,但不会声称我在这里没有看到。
另请注意,从 13.10 开始,asudo gedit将使用用户的 gedit 配置而不是 root 的 gedit 配置。再次只是不好的做法,那么为什么要继续这样做或建议其他人这样做呢?
| 归档时间: |
|
| 查看次数: |
2597 次 |
| 最近记录: |