我使用的是 Fedora,如下所示:
[root@PANTRY 1000]# os
Linux 6.5.12-200.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Nov 20 22:12:09 UTC 2023 unknown
[root@PANTRY 1000]#
我有一个显示异常权限的子目录,称为“doc”,如下所示:
[root@PANTRY 1000]# ld
ls: cannot access 'doc': Permission denied
ls: cannot access 'gvfs': Permission denied
drwx------. 4 me me 80 Nov 28 21:13 app
drwx------. 2 me me 60 Nov 28 20:07 at-spi
drwx------. 2 me me 60 Nov 29 06:30 dconf
d?????????? ? ? ? ? ? doc
drwx--x--x. 2 me me 60 Nov 29 00:36 gdm
drwx------. 3 me me 60 Nov 28 20:07 gnome-shell
drwx------. 2 me me 40 Nov 28 20:07 gnupg
d?????????? ? ? ? ? ? gvfs
drwx------. 2 me me 40 Nov 29 08:23 gvfsd
drwx------. 2 me me 100 Nov 28 20:07 keyring
drwx------. 2 me me 80 Nov 28 20:07 pulse
drwxr-xr-x. 7 me me 180 Nov 28 20:44 systemd
[root@PANTRY 1000]#
它的位置如下图所示:
[root@PANTRY 1000]# pwd
/run/user/1000
[root@PANTRY 1000]#
我从来没有故意创建过这个目录。
我无法“cd”进入该目录,即使是“root”,见下文:
[root@PANTRY 1000]# cd /run/user/1000/doc/
bash: cd: /run/user/1000/doc/: Permission denied
[root@PANTRY 1000]#
我确实注意到“gvfs”具有类似的权限,但以前见过。这是一个工件还是一个真实的目录,我应该如何处理它?
答案1
/run
和/run/user/<$UID>
mounts 都是类型的内存中文件系统tmpfs
,所以你是对的,它不是一个“真正的”(读:持久存储支持)目录。
/run/user/<$UID>/doc
和/run/user/<$UID>/gvfs
挂载也是类型的内存文件系统fuse.portal
。该 FUSE 模块的文件系统的特点是只能由控制它的用户 ID 读取。即使root
(UID 0) 也无法从此安装读取,除非以该用户身份root
使用su <username>
或sudo -i -u <username>
打开 shell。
您可以通过运行以下命令来检查您的坐骑及其类型:
mount |grep /run
您显然可以fusermount -o allow_other ...
在安装时指定允许非所有者访问 FUSE 文件系统,但我不知道如何安装此目录,或更改它当前使用的选项。通过卸载fusermount -u /run/user/1000/doc
可能会导致问题。
有什么用呢?
根据FHS(文件层次结构标准)最新草案, /run
:
该目录包含描述系统自启动以来的系统信息数据。在启动过程开始时,必须清除(根据需要删除或截断)此目录下的文件。
该目录的用途曾经是由 /var/run 提供的。一般来说,程序可以继续使用 /var/run 来满足为 /run 设定的向后兼容性的要求。已迁移到使用 /run 的程序应停止使用 /var/run,除非有关 /var/run 的部分中另有说明。
程序可能有 /run 子目录;对于使用多个运行时文件的程序,鼓励这样做。用户还可能拥有 /run 子目录,但必须注意适当限制访问权限,以防止未经授权使用 /run 本身和其他子目录。
(“必须在启动过程中清除”是吗?听起来像是内存文件系统的完美使用!)
对于目录来说/run/user/<$UID>
,是由以下命令创建的pam_systemd
或者elogind
在用户登录时,由在后台运行的不同用户程序使用,例如 dconf、pulse、gnome-keyring-daemon 等,这些程序需要一个位置来存储临时存储,例如锁定文件、PID 文件、套接字等。系统中记录的不同用户UID有多少个目录。这些通常不会存储到磁盘上。理由是它们包含有关的信息跑步程序,因此在系统关闭或重新启动后就没有用处。这也减少了 SSD 的磨损(尽管很小)。
显然/run/user/<$UID>/gvfs
是 GNOME 桌面环境专门为与运行 GNOME 桌面相关的服务添加的。