Linux NFS创建掩码并强制用户等效


11

我有两台Linux服务器:

文件服务器
Debian 5.0.3(2.6.26-2-686)
Samba版本3.4.2

apache
Ubuntu 10.04 LTS(2.6.32-23-generic)
Apache 2.2.14

我在文件服务器上有许多Samba共享,以便可以从Windows PC访问文件。我还将导出/data/www-dataapache服务器,将其安装为/var/www

设置可以,除了我要在NFS挂载上创建文件时除外。我最终得到的文件无法被Apache读取,或者无法被系统上的其他用户修改。

随着桑巴,我可以指定force userforce groupcreate maskdirectory mask,而这将确保所有文件都与我的Apache Web服务器合适的权限创建。我找不到使用NFS做到这一点的方法。是否可以通过NFS强制授予权限和所有权-我是否缺少明显的东西?

尽管我花了很多时间在Linux上,并且希望自己脱离Windows,但是我仍然还没有完全掌握Linux权限...如果这不是正确的处理方式,我很乐意替代建议。

Answers:


12

鉴于您来自Windows,因此您会发现NFS有所不同。

您遇到的问题相当普遍。NFS 在用户之间和用户组ID相同地映射的前提下,在计算机之间来回传递文件​​/目录的UID和GID 。这意味着您可能会遇到以下情况:服务器上的UID / GID被传递回NFS客户端,但在客户端的/etc/passwd或中无法匹配/etc/group,这意味着无法访问。

在过去(虽然很早),它与NIS和NIS +共同存在,尽管在此框架中也加入了其他方案(Samba的Winbind是其中之一)。但是,这需要一台中央ID服务器,然后需要大量的手动修复权限。

有多种解决方法,但最便宜/最快捷的方法是在两台计算机上创建具有相同组ID号的组-例如,组ID 50000-并在文件服务器上设置组位,同时将适当的用户添加到在客户端上分组;然后使用文件的组权限来控制访问。这不是一个很好的解决方案,但它会起作用。请注意,服务可能会在运行时显式更改其组的问题(aka privledge drop),并且您可能需要更改用于控制在运行时假定哪个组的设置,以确保它是您创建的组。

对于通过Windows共享(也称为Samba)入站的那些文件,只需强制该组与您创建的组相同即可。这样,所有文件都会自动获得“正确的” GID。


多谢您的回覆。我将研究分组位方法,并让您知道我的学习方法。
迈克,2010年

我在www-data文件服务器上创建了一个组,分配了必要的用户,然后www-data在两个服务器上设置了相同的组ID。我还使用设置了/data/www-data文件夹上的组位chmod -R g+s /var/www-data。现在运行良好。谢谢你的帮助。
Mike

很高兴听见!
艾利·佩恩

如果NFS可以为Mac客户端执行此操作,那就太好了。
d -_- b

9

您还可以使用all_squash使所有导出文件和文件夹匿名(用户和组)的选项,并将它们附加到特定的GID和UID。

/data/www-data apache(rw,all_squash,anonuid=<your UID>,anongid=<your GID>,sync)

这样做的问题是apache服务器上的所有用户都将以nobody nobody用户&组的身份看到您的挂载点,并且可以在挂载中写入(但是无论如何,在Samba服务器上,文件将创建为<your UID>/ <your GID>)。


那解决了我的问题!
卢西亚诺·安妮丝·马蒂尼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.