我正在运行一个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
但在收到我的错误日志后,我仍然可以
^Msudo:: no tty present and no askpass program specified
男人们可能会遇到什么问题? 感谢
答案 0 :(得分:0)
警告在php脚本中使用sudo
是一个糟糕的主意,因为它具有巨大的安全隐患。
我需要更改文件的所有权,以便mp4box可以将文件写入该目录
假设您的目录是/ srv / directory。您需要创建一个包含www-data
用户的组以及将写入该目录的任何用户(假设只有一个用户:tony
)。
groupadd mygroup
usermod -a -G mygroup www-data,tony
然后相应地更改目录所有权和权限。
chown -R /srv/directory www-data:mygroup
chmod -R /srv/directory 770
但这是配置/安装部分,并且此类命令不应在运行时运行,因为它可能需要root访问权限。它将允许任何PHP脚本在计算机上执行任何操作。 这应该在您安装和配置环境时运行,您的脚本将继续运行。
@my sysadmin:如果你读过这篇文章,请不要杀了我。
您不应该关心运行时的用户权限,因为系统管理员的工作是使系统安全并确保您的代码可以在其上运行。因为你不关心这一点,你的代码中不应该有任何sudo。
但是,地球上没有一个系统管理员可以授予www-data
用户的root访问权限(可能有,但会很快被解雇)。
如果你是一个善良的人,不想被他的同事和/或用户所憎恨。你应该: