操作系统:Ubuntu 20.04
我安装了gedit
、、kate
和libreoffice
如下内容。
$ snap list (partial output)
Name Version Rev Tracking Publisher Notes
gedit 3.36.0+git7.764f9c67f 537 latest/stable canonical✓ -
kate 20.04.0 64 latest/stable kde✓ -
libreoffice 6.4.3.2 177 latest/stable canonical✓ -
$
这些快照都无法访问我的主文件夹中的任何隐藏文件和隐藏文件夹。这是设计使然吗?
ls -al
的输出如下~/home
:
$ ls -al
total 104
drwxr-xr-x 18 dkb dkb 4096 May 11 16:26 .
drwxr-xr-x 3 root root 4096 Apr 26 16:12 ..
-rw-rw-r-- 1 dkb dkb 2782 May 9 07:59 .bash_aliases
-rw------- 1 dkb dkb 10748 May 9 19:32 .bash_history
-rw-r--r-- 1 dkb dkb 220 Apr 26 16:12 .bash_logout
-rw-r--r-- 1 dkb dkb 3953 Apr 27 15:09 .bashrc
drwx------ 14 dkb dkb 4096 May 11 15:58 .cache
drwxr-xr-x 21 dkb dkb 4096 May 11 15:58 .config
drwxr-xr-x 2 dkb dkb 4096 May 11 16:19 Desktop
drwxr-xr-x 2 dkb dkb 4096 May 11 15:47 Documents
drwxr-xr-x 3 dkb dkb 4096 May 11 16:17 Downloads
drwx------ 3 dkb dkb 4096 Apr 30 19:10 .gnupg
-rw------- 1 dkb dkb 97 May 4 09:39 .lesshst
drwxr-xr-x 3 dkb dkb 4096 Apr 26 16:22 .local
drwx------ 5 dkb dkb 4096 Apr 27 16:34 .mozilla
drwxr-xr-x 2 dkb dkb 4096 Apr 26 16:22 Music
drwxr-xr-x 2 dkb dkb 4096 May 5 16:34 Pictures
-rw-r--r-- 1 dkb dkb 807 Apr 26 16:12 .profile
drwxr-xr-x 2 dkb dkb 4096 Apr 26 16:22 Public
drwxr-xr-x 13 dkb dkb 4096 May 11 16:00 snap
drwx------ 2 dkb dkb 4096 Apr 26 16:36 .ssh
-rw-r--r-- 1 dkb dkb 0 Apr 26 16:31 .sudo_as_admin_successful
drwxr-xr-x 2 dkb dkb 4096 Apr 26 16:22 Templates
drwx------ 6 dkb dkb 4096 Apr 30 19:29 .thunderbird
drwxr-xr-x 2 dkb dkb 4096 Apr 26 16:22 Videos
$
问题可能与隐藏文件或文件夹无关,本身。如果我复制~/.config
到~/Downloads
所有三个快照都可以打开~/Downloads/.config
其中的文件。
另一方面,如果我复制~/.bashrc
到~/bashrc
,则快照没有任何困难。
答案1
Snap‘主页’ 界面仅允许访问非隐藏用户 /home 中的文件和目录(而不是其他地方)。
Snap‘个人文件’界面允许访问全部用户 /home 中的文件和目录(而不是其他地方)。
- 折断接口在 snap 创建中使用的 yaml 文件中定义。
- 您可以使用 列出 snap 包的可用接口
snap connections <snap-name>
。如果personal-files
列出,则可以使用它(它可能已经可以通过一些快照进行连接。 - 如果
personal-files
接口已定义但未被使用,您可以使用它$snap connect <snap-name>:<plug-name>
来连接它。
示例 1:Discord Snap:snap connections discord
没有personal-files
条目。Discord 无法访问隐藏文件,而且您无法更改这一点。
$ snap connections discord | grep personal-files
$
示例 2:Firefox Snap:snap connections firefox
确实有personal-files
条目,并且插头已连接到 Firefox 插槽。此用户已经可以访问主目录中的隐藏文件(其他地方都无法访问)。
$ snap connections firefox | grep personal-files
personal-files firefox:dot-mozilla-firefox :personal-files -
$
// Interface name = personal-files
// Snap plug name = dot-mozilla-firefox
// Snapd slot name = personal-files
示例 3:Snap Store:snap connections snap-store
有个人文件条目,但插槽未连接到插头。您可以连接它。让我们这样做吧!
$ snap connections snap-store | grep personal-files
personal-files snap-store:dot-snap-auth-json - -
// Interface name = personal-files
// Snap plug name = dot-snap-auth-json
// Snapd slot name = (not listed because it's not connected)
$ sudo snap connect snap-store:dot-snap-auth-json
connect snap-store:dot-snap-auth-json to snapd:personal-files
$ sudo snap disconnect snap-store:dot-snap-auth-json
disconnect snap-store:dot-snap-auth-json from snapd:personal-files
答案2
仅修改现有文件的解决方法
我的经验是,~/.<directory>
默认情况下,Snapshot 中的文件无法访问,但是子目錄即隐,即~/tmp/.<directory>
似乎是可以访问的。
为了克服这个限制,而不必来回复制整个文件,您可以创建一个硬链接递归复制目录
例如:~/.local/
...无法访问
- 打开终端Ctrl++AltT
- 为硬链接创建临时目录
mkdir -p ~/tmp/hrdlnks
- 创建整个
~/.local/
目录 的硬链接副本cp -al ~/.local ~/tmp/hrdlnks/
- 现在
~/tmp/hrdlnks/.local/
应该可以访问- 如果由于某种原因它们不可访问,因为它是一个隐藏目录,您可以将其重命名为
.local
,dot-local
例如。mv ~/tmp/hrdlnks/.local ~/tmp/hrdlnks/dot-local
- 如果由于某种原因它们不可访问,因为它是一个隐藏目录,您可以将其重命名为
- 修改完文件后,只需删除临时硬链接复制目录
rm -r ~/tmp/hrdlnks/
附注:
- 如果你在这个“硬链接”临时目录中创建一个新文件,你将不是在“原始”/“镜像”目录中创建它
- 你需要复制它手动删除临时硬链接目录之前
- 如果在创建硬链接副本后在“原始”目录中创建了新文件,则这些文件将不会存在于硬链接副本中
- 您需要创建一个新的硬链接副本
- 我建议您在修改完感兴趣的文件后就删除临时目录。
关于硬链接的说明
- 硬链接仅指向同一个“文件数据块”
- 如果你删除硬链接,你不会删除“原始”文件
- 如果您删除“原始”文件,硬链接仍然可以访问数据,当您删除指向数据的所有硬链接时,您将无法再访问数据,但它仍然存在,直到其他文件覆盖那些“空闲”字节
- 如果你更改文件或目录名称,则不会更改“原始”名称
- 如果你在硬链接临时目录中移动文件,则不会移动“原始”目录结构中的任何内容