我有一台运行 Ubuntu 18.04 并设置 NFS 的服务器。我有几个服务将文件放置/操作该共享以及其他客户端通过网络访问它。我希望 NFS 服务器将所有新文件/文件夹的默认权限设置为 775。
我已s
在文件夹上设置标志,以便所有新创建的文件和文件夹继承同一组,因此该组的所有用户都可以在该文件夹中创建和修改文件。但我无法强迫 NFS 这样做。它只创建了 644 个新文件和 2755 个文件夹。
这是我的/etc/exports/
/srv/nfs 192.168.11.0/24(ro,fsid=0,no_subtree_check,)
/srv/nfs/lpt-2tb 192.168.1.0/24(rw,sync,all_squash,no_subtree_check,insecure,anonuid=1002,anongid=1002)
1002是用户的id nfs
。
我尝试了 umask 和 acl,但均无济于事。
我已经为 nfs 用户创建了 homedir 并将umask 002
其放置在~/.profile
.
我尝试在共享文件夹上设置 acl
/srv/nfs/lpt-2tb$ sudo setfacl -d --set u::rwx,g::rwx,o::r-x .
/srv/nfs/lpt-2tb$ sudo setfacl -R -m u::rwx,g::rwx .
/srv/nfs/lpt-2tb$ sudo getfacl .
# file: .
# owner: nfs
# group: nfs
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
我尝试修改位于的 nfs-server 配置/lib/systemd/system/nfs-server.service
并添加到部分UMask=002
下[Service]
。这适用于我自己创建的其他一些服务,但不适用于 NFS。
我重新启动 NFS 服务,甚至在所有这些修改后重新启动,但是,当我将文件从笔记本电脑复制到共享时,它具有 644 权限
drwxr-sr-x+ 2 nfs nfs 4096 Apr 5 20:34 acl2
-rw-r--r-- 1 nfs nfs 434506 Mar 7 21:31 acl_test.png
- -编辑 - -
以下是文件和文件夹的 acl 输出
/srv/nfs/lpt-2tb$ sudo getfacl acl_test.png
# file: acl_test.png
# owner: nfs_share
# group: kodi
user::rw-
group::r--
other::r--
/srv/nfs/lpt-2tb$ sudo getfacl acl2
# file: acl2
# owner: nfs_share
# group: kodi
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
---UPD---
我已经验证我的服务器正在运行 nfs v2-3-4,但我的客户端通过 v3 连接,我无法覆盖它。当我设法让它工作时,我会尝试验证 v4 是否修复。
我现在已经放弃寻找一个干净的解决方案,而只会做一个 cron 作业,定期检查和修复权限。
答案1
首先,您使用 umask 尝试的操作将不起作用。 umask 是每个进程的东西,重要的进程是创建文件的进程。当 nfs 用户在 NFS 客户端上创建文件时,NFS 服务器上的 nfs 用户的 umask(如果这就是您的意思)并不重要,并且 NFS 服务器服务本身的 umask 也不重要影响任何事情。
接下来,您提到将文件复制到 NFS 共享时获得了错误的权限。假设您的字面意思是复制,如“cp”命令中所示,那么这不是一个有效的测试。 cp 命令在权限方面有各种特殊行为 - 与大多数程序不同,它并不简单地创建一个文件并让默认权限保持不变,它实际上会在之后返回并破坏其权限。这是过去讨论过的一个地方:
https://serverfault.com/questions/183800/why-does-cp-not-respect-acls
我使用“touch”命令来创建用于此类测试的文件。尝试一下,您可能会发现您的 ACL 设置已经工作正常,只是 cp 命令不尊重事物。