我的服务器上有以下文件夹,包含以下文件:
error-2015-12-20.log
error-2015-12-21.log
error-2015-12-22.log
我编写了一个包含.tar.gz的PHP脚本,其名称早于当前日期,将打包文件移动到另一个分区,并删除输入文件。它是通过exec()
完成的。
问题是所有这些操作都要求我使用sudo并提供密码。
我该如何处理?
答案 0 :(得分:0)
您熟悉Linux文件权限吗? 如果要执行脚本,则必须有权这样做(通过在可执行位设置的组/所有者中),如果要读取文件,则还必须有权读取这些文件。 否则,您将被迫以sudo身份执行该文件,因为root可以访问所有文件。
在此处了解详情:https://www.linux.com/learn/tutorials/309527-understanding-linux-file-permissions
答案 1 :(得分:0)
如上所述它是一个权限问题,要解决此问题,请指示sudo
让您的php脚本在不提示输入密码的情况下运行:
创建自定义sudoers文件:
sudo visudo -f /etc/sudoers.d/90_your_user
复制新创建的文件中的以下内容(自定义相关部分):
Cmnd_Alias PHP_SCRIPT = /path/to/my/script.php param1 param2
Cmnd_Alias ROOT_PROGS = PHP_SCRIPT
# Programs allowed to run without password prompt of your_user
your_user HOST=(root) NOPASSWD:ROOT_PROGS
然后,您可以使用sudo /path/to/my/myscript.php
执行您的程序而不会出现权限问题,并且没有sudo会提示您输入密码。