“?”是什么意思?在 ls -l 输出中是什么意思?

sam*_*ers 4 linux ls filesystems systemd-run

我看到一些文件/目录即使是 root 用户也无法访问:

find: ‘/run/user/1000/gvfs’: Permission denied.

所以我更深入地跑了ls -l;下面是输出。

/run/user/125# ll
ls: cannot access 'gvfs': Permission denied
total 4
drwx------ 12 gdm  gdm  340 Sep  3 10:20 ./
drwxr-xr-x  4 root root  80 Sep  3 10:19 ../
srw-rw-rw-  1 gdm  gdm    0 Sep  3 10:19 bus=
drwx------  3 gdm  gdm   60 Sep  3 10:19 dbus-1/
drwx------  2 gdm  gdm   60 Sep  3 10:19 dconf/
drwx--x--x  2 gdm  gdm   60 Sep  3 10:19 gdm/
prw-rw-r--  1 gdm  gdm    0 Sep  3 10:19 gnome-session-leader-fifo|
drwx------  3 gdm  gdm   60 Sep  3 10:19 gnome-shell/
drwx------  2 gdm  gdm  140 Sep  3 10:19 gnupg/
d?????????  ? ?    ?      ?            ? gvfs/
-rw-------  1 gdm  gdm  318 Sep  3 10:19 ICEauthority
d---------  3 gdm  gdm  160 Sep  3 10:19 inaccessible/
drwx------  2 gdm  gdm  100 Sep  3 10:19 keyring/
srw-rw-rw-  1 gdm  gdm    0 Sep  3 10:19 pk-debconf-socket=
drwx------  2 gdm  gdm   80 Sep  3 10:19 pulse/
srw-rw-rw-  1 gdm  gdm    0 Sep  3 10:19 snapd-session-agent.socket=
drwxr-xr-x  3 gdm  gdm  100 Sep  3 10:19 systemd/
Run Code Online (Sandbox Code Playgroud)

为什么我们看到?file/dir gvfs

Ste*_*itt 12

问号表示ls无法读取相应信息;它报告说,在其输出的顶部:

ls: cannot access 'gvfs': Permission denied
Run Code Online (Sandbox Code Playgroud)

gvfs 除了其所有者之外的所有用户都无法访问,即使是 root 用户也无法访问,因为它是用户拥有的 FUSE 挂载——即使是 root 用户也无法访问此类挂载,以防止恶意 FUSE 进程利用这种情况:

$ mount|grep /run/user/125/gvfs
gvfsd-fuse on /run/user/125/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=125,group_id=125)
Run Code Online (Sandbox Code Playgroud)

挂载点显示的信息来自挂载的“内部”,唯一允许读取 FUSE 挂载的用户是所有者。(是的,考虑到root用户的预期特权,这有点令人惊讶。)