为什么 /media/username root:root 的默认权限是?

lof*_*ops 21 permissions udisks mountpoint

我已经调整了的权限/media/usernameroot:rootusername:root[1]。我知道以用户为中心的位置允许以用户为中心的权限 [2]。

但是,为什么首先要授予此文件夹的权限root:root


[1] 这样我就可以使用 Gnome EncFS 管理器在那里挂载加密文件夹。例如,我现在可以将加密文件夹挂载为/media/username/personal-documents.

[2] 从为什么 Ubuntu 移动了默认挂载点?

udisks2 中这种默认行为改变的根本原因似乎很清楚:安全性。将文件系统的访问权限限制为一个特定用户而不是将其访问权限授予系统的所有用户更安全。

Oli*_*Oli 22

就我而言,这就是事情的样子/media

$ ls -l /media | grep $USER
drwxr-x---+  3 root root 4096 Jan 22 15:59 oli
Run Code Online (Sandbox Code Playgroud)

基本上这意味着只有 root 用户才能与目录交互。这对安全非常有用(当然可以阻止其他用户看到,更不用说窃取/删除/更改数据),但这不是故事的结局。

您可能会注意到权限掩码末尾的加号。这意味着 ACL(访问控制列表)正在使用中。这允许更精细的权限。

$ getfacl /media/$USER
getfacl: Removing leading '/' from absolute path names
# file: media/oli
# owner: root
# group: root
user::rwx
user:oli:r-x
group::---
mask::r-x
other::---
Run Code Online (Sandbox Code Playgroud)

这是通过ACL在我的允许用户查看的内容/media/oli。我仍然不允许编辑内容。

在现代桌面(Gnome 和 KDE)中进行安装的事情是udisks2

root      2882  0.3  0.0 195956  4048 ?        Sl   Jan16  30:35 /usr/lib/udisks/udisks-daemon
root      2887  0.0  0.0  47844   784 ?        S    Jan16   0:00 udisks-daemon: not polling any devices
root      3386  0.0  0.0 429148  6980 ?        Sl   Jan16   7:35 /usr/lib/udisks2/udisksd --no-debug
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它以 root 身份在那里运行,因此当某些东西通过 DBUS 访问它时,它能够在 /home/$USER 中创建挂载点并将它们下发给您的用户,以便他们可以编辑内容。

这些都没有改变我最初所说的。我只是在解释它在实践中是如何工作的。这就是您桌面上的内容实际上是如何被允许在只有 root 允许的地方写入的,以及您的用户如何在其他限制性所有权的情况下读取它。

所有这一切都将它变成了一个对用户数据安全的环境,但也使用户难以干预安装的结构。例如,他们不能删除挂载点或重命名它,除非他们具有 root 访问权限,否则这可能会导致问题。

编辑:我刚刚想到的是,它还为管理员提供了一个为单个用户安装东西的好地方。默认情况下,权限有助于将此挂载保密并保护此挂载免受用户干预。对于没有/media/$user/目录的事情来说,这似乎是一个相当合理的默认值,需要 root 权限。