我有份NFS。此共享在几个不同的应用程序之间共享。我们的web服务器正在运行PHP,当它创建目录时,它没有正确地设置权限,因此一旦创建,它就不能写入目录。如何将此NFS共享挂载到PHP具有完全读/写访问权限的位置?下面是与媒体服务器导出选项和web服务器上的挂载选项一起创建的目录。理想情况下,我可以在/opt/挂载上设置权限,当我挂载到该目录时,共享可以设置该目录上的任何组/用户的权限。
dr----x--t. 2 nobody nobody 4096 Jun 5 2014 user_2挂载输出:
media.dc1:/home/fs_share on /opt/mount type nfs (rw,vers=4,addr=10.10.20.127,clientaddr=10.10.20.42)从媒体服务器导出文件:
/home/fs_share 10.10.20.0/255.255.255.0(rw,sync,no_root_squash)发布于 2014-06-05 19:24:22
在/home/ user /..profile中的"umask“参数控制由该用户Standart创建的文件的权限为umask=022,这意味着文件为755,目录为644。如果您希望所有者和组拥有完全的权限,那么应该是"umask=002“。
发布于 2016-09-22 22:15:11
这需要比UNIX权限所能有效处理的更复杂的权限处理。文件系统ACL是您在这里的解决方案。
使用ACL,您可以继承父目录的权限以及所有权。这将确保无论是谁在特定的子树中创建文件或目录,他们都从父目录(而不是umask)获得权限。
仔细研究getfacl和setfacl命令。使用默认ACL,您可以控制此所有权和权限继承。
RHEL存储管理指南的这一章是一个非常完整的ACL指南,它是一个相当明确的资源:https://access.redhat.com/documentation/en-US/Red_帽子_企业_Linux/6/html/Storage_管理_指南/ch-acls.html
发布于 2018-09-24 15:36:03
如果PHP代码能够创建这些文件,它应该能够"chmod“它们。
<?php
chmod("/mydir/myfile", 0660);
?>这里是对chmod函数的引用。
如果您想使用特定的uid/gid (其他tah /nogroup)挂载共享,可以尝试使用all_squash导出
/export/myshare x.x.x.x(rw,all_squash,anonuid=<newUID>,anongid=<newGID>,sync)来自https://linux.die.net/man/5/exports:
all_squash将所有uids和gid映射到匿名用户。适用于NFS导出的公共FTP目录、新闻线轴目录等。相反的选项是no_all_squash,这是默认设置。anonuid和anongid这些选项显式设置匿名帐户的uid和gid。此选项主要用于PC/NFS客户端,您可能希望所有请求都来自一个用户。例如,考虑下面示例部分中/home/joe的导出条目,它将所有请求映射到uid 150 (据认为是用户joe的请求)。
https://serverfault.com/questions/602156
复制相似问题