文件服务器
Debian 5.0.3(2.6.26-2-686)
Samba版本3.4.2
阿帕奇
Ubuntu 10.04 LTS(2.6.32-23-通用)
Apache 2.2.14
我在文件服务器上有许多Samba共享,因此我可以从Windows PC访问文件.我也将/ data / www-data导出到apache服务器,我把它挂载为/ var / www.
设置没问题,除了我在NFS挂载上创建文件的时候.我最终得到了Apache无法读取的文件,或者我的系统上的其他用户无法修改的文件.
使用Samba,我可以指定强制用户,强制组,创建掩码和目录掩码,这可以确保使用适合我的Apache Web服务器的权限创建所有文件.我找不到用NFS做这个的方法.有没有办法用NFS强制权限和所有权 – 我错过了一些明显的东西吗?
虽然我已经花了很多时间在Linux上,并且正在断绝自己离开Windows,但我仍然没有完全掌握Linux权限……如果这不是正确的做事方式,我愿意接受替代建议.
解决方法
您遇到的问题相当普遍. NFS在机器之间来回传递文件/目录的UID和GID,并假设用户和组ID在两者上都相同地映射.这意味着您可以获得服务器上的UID / GID传递回NFS客户端的情况,但它无法在客户端的/ etc / passwd或/ etc / group中匹配,这意味着无法访问.
在(遥远的)过去,这与NIS和NIS合作,尽管还有其他方案已融入这个框架(Samba的Winbind就是其中之一).但是,这需要一个中央ID服务器,然后是许多手动修复权限.
有不同的方法来解决这个问题,但最便宜/最快的方法是在两台机器上创建一个具有相同组ID号的组 – 比如组ID 50000 – 并在将相应用户添加到文件服务器上时设置组位数.客户群;然后使用文件的组权限来控制访问.不是一个很好的解决方案,但它会工作.请注意,您可能会遇到在运行时明确更改其组的服务(也称为privledge drop)的问题,您可能需要更改控制在运行时假定哪个组的设置,以确保它是您创建的组.
对于通过Windows共享(也称为Samba)进入的文件,只需强制该组与您创建的组相同即可.这样所有文件自动获得“正确”的GID.