我刚刚成功设置了 NFS 客户端和服务器。NFS 愿意在客户端和服务器之间处理不变的 UID,这让我很惊讶。
例如,假设服务器上存在以下用户名/ID:
root 0
admin 1
alice 100
客户端上的内容如下:
root 0
bob 1
admin 2
alice 123
在当前情况下,如果admin
服务器上在共享目录中创建一个文件,则客户端会将其视为所有bob
。这是一个明显的安全问题因为admin
可能会错误地认为权限可以544
保护文件免遭未经授权的写入。
此外,alice
可能会产生错误的印象,认为她可以正确地与自己共享文件并保持文件权限的合理性。
问题是,如果客户在共享中创建一个新文件,服务器将其视为所有nobody
。这正是我想要的两方面的东西。也就是说,nobody
即使文件admin
是在服务器上创建的,客户端也应该将其视为自己的所有者——就我的情况而言,共享行为剥夺了有意义的所有权,因为机器之间没有用户 ID 对应关系。
简而言之,我希望所有 NFS 客户端都被告知谁nobody
拥有所有共享文件,无论服务器是否知道。此外,来自客户端的所有写入都将归服务器所有nobody
并在服务器上标记为拥有。
我可以实现这个吗?
答案1
为了实现这一点,您需要all_squash
在导出文件中指定参数,同时还anonuid=xxx,anongid=xxx
可以选择将文件分配给哪个用户。
force user
甚至 Windows 用户也可以通过Samba 上的类似指令进行集成。