我使用Jasperreports生成报告。当我生成新报告时,它将由 root 拥有 644 的权限。所以其他用户没有权限查看此报告。我想更改文件的所有权或更改权限。所以每个人都可以查看或下载报告。
我试过下面的php函数
chmod($item, 0777);
chown($path, 'www-data');
它给出了
错误:没有权限这样做
。因为root和当前用户自己的是www-data。 有人请帮助我,
答案 0 :(得分:0)
实际上,根据您所说的内容,所有用户都有权查看该文件。 644表示所有者可以读写,而组和其他人只能阅读。如果您的脚本在读取该文件时出错,则可能是因为路径中的目录的权限,而不是文件本身的权限。
如果您可以更改root所拥有的文件的所有者或权限,则会破坏整个unix文件权限的概念。想一想。
您可以随时更改运行这些报告的用户,或者在报告生成方添加逻辑,以便以拥有该文件的用户的身份移动或更改文件的权限。
顺便说一句,chmod 777是一个丑陋的kludge,仅供那些对unix权限知之甚少的人使用。专业人士不这样做。您应该将对unix文件权限的理解提升到下一个级别: https://www.tutorialspoint.com/unix/unix-file-permission.htm看起来很有希望。
答案 1 :(得分:0)
根据手册,所有者和超人有权这样做。
你只是chage文件mod或所有者,不会这样做。你还必须改变路径。
尝试将文件filename的所有者更改为用户user。只要 超级用户可以更改文件的所有者。
注意:此功能不适用于远程文件,因为必须可以通过服务器的文件系统访问要检查的文件。
注意:启用安全模式后,PHP会检查正在操作的文件或目录是否具有与之相同的UID(所有者) 正在执行的脚本。
尝试将指定文件的模式更改为给定的文件 模式。注意:当前用户是运行PHP的用户。它是 可能与您用于普通shell或FTP访问的用户不同。该 只有在大多数系统上拥有该文件的用户才能更改模式。
注意:此功能不适用于远程文件作为文件 必须可以通过服务器的文件系统访问。
注意:启用安全模式后,PHP会检查文件或文件 您要操作的目录具有与之相同的UID(所有者) 正在执行的脚本。另外,你不能设置 SUID,SGID和粘性位。