QNAP NAS 权限设置

2025/07/30

折腾一下 NAS 的权限管理。

QNAP 的权限模型跟 Linux 是一模一样的,只是在实现权限管理的时候跟经典的 Linux 的用法不太一样。下面是对应关系:

操作系统 用户 组名 UID GID
Linux root root 0 0
QNAP admin administrator 0 0
Linux nobody nogroup 65534 65534
QNAP guest guest 65534 65534
Linux ds(*) ds 1000 1000
QNAP ds everyone 1000 100
* 这里的 ds 是我自己的用户名

下面是我的需求:

  1. 从一台 Linux Host 上用 NFSv4 连接 NAS,跑 BT 和 Calibre-Web
  2. 从一台 MacBook 上用 SMB 连接 NAS
  3. 也从 QNAP 的 Web Console 上管理文件

2 和 3 都很好搞。因为都可以直接用 ds 这个帐号登录,这样读写文件就天然是 ds 的权限。但是 Linux 上的 GID 和 NAS 上的不一样,这就导致从 NAS 上看在 Linux 上创建的文件的权限时,group 权限显示的是一个没有名字的 GID。为了修复这个问题,我研究了一番,最后发现可以通过简单地使用 NFS 的 squash 机制解决这个问题。

squash 是挤压的意思。在 QNAP 的 Control Panel > Privileges > Shared Folders 里有针对 NFS 服务权限的选项 (NFS host access),这里有一个 Squash Option 可以配置。选项有三个,分别是:

所以目前我配置的是 squash all users, 并且把 anonymous UID 设置为 ds,并且把 anonymous user GID 设置为 everyone。这样在 NFS 上写入的文件,在 NAS 上都能正常显示,而且其他用户都能够读取(可能有安全问题?)。