【问题标题】:PHP - Grant a user permissions to file owned by root in ubuntuPHP - 在 ubuntu 中授予用户对 root 拥有的文件的权限
【发布时间】:2017-05-14 08:47:54
【问题描述】:

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

我试过下面的php函数

chmod($item, 0777);   

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

它给了

错误:无权执行此操作

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

【问题讨论】:

  • 您无法更改您没有权限的文件的权限。您需要从用户root 授予www-data 的权限(根据您的问题)。我建议你编写一个 bash 脚本或以 root 身份运行的东西(负责将权限更改为www-data)或修改(如果可能)Jasperreports 以用户www-data 输出结果
  • 我尝试使用 Jasperreports 以用户 [link]www-data[/link] 的身份输出结果。但这是不可能的。所以我也考虑写一个bash脚本来改变权限。谢谢

标签: php ubuntu permissions


【解决方案1】:

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

如果您可以像这样更改 root 拥有的文件的所有者或权限,它将颠覆 unix 文件权限的整个概念。想想看。

不过,您始终可以更改运行这些报告的用户,或者在报告生成端添加逻辑以移动或更改文件拥有者的权限。

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

【讨论】:

    【解决方案2】:

    根据手册,所有者和超级用户有权这样做。

    而且你只更新文件的mod或所有者,不会这样做。您还必须更改路径。

    chown

    尝试将文件文件名的所有者更改为用户用户。仅有的 超级用户可以更改文件的所有者。

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

    注意:启用安全模式后,PHP 会检查被操作的文件或目录是否具有与 正在执行的脚本。

    chmod

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      相关资源
      最近更新 更多