整个Linux系统中是否有root用户无法读取或写入的文件?

整个Linux系统中是否有root用户无法读取或写入的文件?

我只是很好奇,因为对于普通用户脚本,我必须检查相应的文件是否可由用户读取并且可写,如下所示(只是读取操作的片段):

if ! [ -r "$1" ]; then
    dump_args "$@"
    print_error__exit "! [ -r $1 ]" "The file is not readable by you!"
fi

我的问题是:在整个 Linux(如果必须的话,例如 Mint 或 Debian)系统上是否有 root 无法读取或写入的文件?

总的来说,我的信念是 root 可以做任何事情,但一切都有限制,对吧,......这就是我问这个问题的原因。谢谢。

答案1

/proc下很多文件是不可写的,/sys下也有文件可写但不可读。例子:

echo something > /proc/$$/cmdline
cat /sys/block/sda/device/delete

(小心:echo > /sys/block/sda/device/delete会将sda从系统中“分离”)

之所以如此,是因为 /proc 和 /sys 是特殊的文件系统。它与通常的文件权限无关。

还有其他例子:

  • 只读文件系统,例如 DVDROM
  • 以只读方式挂载的文件系统
  • root 未映射到高权限用户的网络文件系统,例如带有 root squash 的 NFS
  • 只允许读或写的设备的设备文件

答案2

此外/proc和下的文件/sys, FUSE 文件系统默认情况下 root 无法访问;看为什么即使以 root 身份运行也找不到 read /run/user/1000/gvfs ?了解详情。

还可以为系统设置强制访问控制系统(例如 SELinux),以便限制 root。 Russell Coker 有(或曾经有,我没有检查过)一个可公开访问的玩机任何人都可以以 root 身份登录,而不会损害系统。

进程可以在用户命名空间中以 root 身份运行,而无需授予主机系统上的实际 root 访问权限。同样,远程文件系统可以具有用户映射,以便客户端上的 root 无法访问某些文件或目录(或在某些情况下根本无法访问任何内容)。

相关内容