PHP - 授予用户对root用户在ubuntu中拥有的文件的权限

时间:2016-12-30 02:01:17

标签: php ubuntu permissions

我使用Jasperreports生成报告。当我生成新报告时,它将由 root 拥有 644 的权限。所以其他用户没有权限查看此报告。我想更改文件的所有权或更改权限。所以每个人都可以查看或下载报告。

我试过下面的php函数

chmod($item, 0777);   

chown($path, 'www-data');

它给出了

  

错误:没有权限这样做

。因为root和当前用户自己的是www-data。 有人请帮助我,

2 个答案:

答案 0 :(得分:0)

实际上,根据您所说的内容,所有用户都有权查看该文件。 644表示所有者可以读写,而组和其他人只能阅读。如果您的脚本在读取该文件时出错,则可能是因为路径中的目录的权限,而不是文件本身的权限。

如果您可以更改root所拥有的文件的所有者或权限,则会破坏整个unix文件权限的概念。想一想。

您可以随时更改运行这些报告的用户,或者在报告生成方添加逻辑,以便以拥有该文件的用户的身份移动或更改文件的权限。

顺便说一句,chmod 777是一个丑陋的kludge,仅供那些对unix权限知之甚少的人使用。专业人士不这样做。您应该将对unix文件权限的理解提升到下一个级别: https://www.tutorialspoint.com/unix/unix-file-permission.htm看起来很有希望。

答案 1 :(得分:0)

根据手册,所有者和超人有权这样做。

你只是chage文件mod或所有者,不会这样做。你还必须改变路径。

chown

  

尝试将文件filename的所有者更改为用户user。只要   超级用户可以更改文件的所有者。

     

注意:此功能不适用于远程文件,因为必须可以通过服务器的文件系统访问要检查的文件。

     

注意:启用安全模式后,PHP会检查正在操作的文件或目录是否具有与之相同的UID(所有者)   正在执行的脚本。

chmod

  

尝试将指定文件的模式更改为给定的文件   模式。注意:当前用户是运行PHP的用户。它是   可能与您用于普通shell或FTP访问的用户不同。该   只有在大多数系统上拥有该文件的用户才能更改模式。

     

注意:此功能不适用于远程文件作为文件   必须可以通过服务器的文件系统访问。

     

注意:启用安全模式后,PHP会检查文件或文件   您要操作的目录具有与之相同的UID(所有者)   正在执行的脚本。另外,你不能设置   SUID,SGID和粘性位。