创建文件并设置目录权限

Posted

技术标签:

【中文标题】创建文件并设置目录权限【英文标题】:Create a File and set Directory Permissions 【发布时间】:2012-10-02 00:24:00 【问题描述】:

我正在使用下面的 php 代码来创建动态 xml 文件。

...
$file_name = "";
$rss_feed_dir = $_SERVER['DOCUMENT_ROOT'] . '/xml/';

chmod($rss_feed_dir, 0777);

$file = $rss_feed_dir . $file_name . '.xml';

$file_handle = fopen($file, "w");
fwrite($file_handle, $xml);
fclose($file_handle);

如果目录权限设置为 0777,则将创建该文件,并且似乎在 0755 处失败。我在许多网站上读到全球执行权限可能会带来安全风险。

我应该在这个脚本结束时 chmod 回到 0755 吗?

有没有更好的方法来设置目录权限?

【问题讨论】:

【参考方案1】:

我怀疑这是因为您的 rss_feed_dir 指向的目录是另一个用户拥有的目录 - 而不是用于运行您的脚本的用户。

因此,如果您的脚本未与指定的组或用户一起运行,那么 755 权限将排除您对该目录的写访问权限。这就解释了为什么当权限为 755 时无法成功执行写入文件命令,但在 777 时成功。

如果此 php 文件位于服务器上并从 Web 调用,请尝试修改您的目录所有权本身:

chown -R YOUR_USER:www-data YOUR_RSS_DIRECTORY_HERE

然后 chmod 到 775

希望有帮助!

【讨论】:

如何知道 PHP 脚本属于哪个组?我想知道是否快速解决方法是将组更改为没人? 对不起,我更新了我的答案。您可能需要确保目录上有正确的组权限。 775 是您可能正在寻找的。​​span>

以上是关于创建文件并设置目录权限的主要内容,如果未能解决你的问题,请参考以下文章

如何设置UNIX/Linux中新创建目录或文件的默认权限

Linux服务器实现跨用户文件链接并设置只读权限

Linux服务器实现跨用户文件链接并设置只读权限

《Linux学习并不难》文件/目录管理:mkdir命令创建目录

为Linux目录下新创建的文件和子目录设置默认权限?

mkdir