【发布时间】:2017-02-16 08:09:09
【问题描述】:
我正在运行一个 php 脚本,我希望在运行时能够将文件所有者从 www-data 更改为 Linux 用户,然后在进行一些内部维护后将其更改回来。
我正在运行以下命令
$cmd = "sudo chown www-data ".$path;
shell_exec($cmd);
$path 是完整路径
我已使用 sudo visudo 将以下内容添加到我的 sudoers 文件中
www-data ALL=NOPASSWD: /fullpath/to/phpfile.php
但是在检查我的错误日志时,我仍然得到 p>
^Msudo:: no tty present and no askpass program specified
这可能是什么问题? 谢谢
【问题讨论】:
-
当你输入 sudo 时,你需要提供 sudo 的密码以及你是如何提供密码的
-
你绝对不应该那样做!任何可以以 root 身份运行的 PHP 脚本,即使是临时的,都会带来巨大的安全风险。如果你需要一个脚本来做一些家务,然后让它作为一个 cron 作业运行,那么你可以让脚本以你需要它运行的任何用户身份运行,而不会公开它。
-
它在运行时不完全是内务管理,我需要更改文件的所有权,以便 mp4box 可以将文件写入该目录
-
哪个用户运行 mp4box ?
-
mp4box 由 www-data 使用 shell_exec() 运行