首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chown:不允许操作

chown:不允许操作
EN

Stack Overflow用户
提问于 2012-11-05 11:10:54
回答 2查看 27.2K关注 0票数 3

我有一个问题,我需要通过php脚本将文件所有者权限设置为系统中的不同用户

因此,我通过以下命令完成此操作,其中1002是系统的用户id。

代码语言:javascript
复制
file_put_contents($filename, $content);
system("chown 1002 " . $filename . "");

然而,我只在productions服务器中得到这个错误(测试服务器它工作正常)

代码语言:javascript
复制
chown: changing ownership of `/var/spool/asterisk/06h12m7.call':
Operation not permitted
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-05 11:18:52

由于您将此问题标记为Linux,因此我假设您使用Apache服务器。在生产服务器中,拥有所有Apache进程的php进程通常由apache user或其他非root user用户执行。

记住这一点,您要尝试做的是使用chown函数(将以apache用户身份执行)来更改您不拥有的文件的所有者。(可以,您只能将所有者更改为您拥有的文件)。

您看,引用php手册,chown函数尝试更改所有者:

尝试将文件文件名的所有者更改为用户用户。只有超级用户才能更改文件的所有者。

在生产服务器中,您通常在用户目录模式下运行,这意味着您绑定到主目录中的文件,例如/home/yourusername/public_html,因此,/var目录中的文件根本不在您的控制范围内(它们通常由根拥有),这就是您无法chown的原因。

我希望它能帮上忙。干杯!

票数 4
EN

Stack Overflow用户

发布于 2012-11-05 11:17:53

只有当您是root用户(或以root权限运行)时,才允许更改文件的所有者。

尝试将文件文件名的所有者更改为用户用户。只有超级用户才能更改文件的所有者。http://www.php.net/manual/en/function.chown.php

在您的测试服务器上,运行php脚本的apache进程很可能已经拥有该文件,或者您正在以root权限运行该文件,而在您的生产服务器上情况并非如此。我绝对不推荐在具有root权限的生产环境中运行。

根据具体情况,您可以使用chgrp函数更改文件的“组”设置,这可能会有所帮助。对该文件具有写权限的任何人都允许这样做。您还可以使用chmod函数使该文件对任何人可写,尽管这可能很危险。下面列出了这两个函数的链接:

  • http://www.php.net/manual/en/function.chgrp.php
  • http://www.php.net/manual/en/function.chmod.php
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13225453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档