繁体   English   中英

PHP:shell_exec是一个shell脚本,而shell_exec是一个Linux上的程序(权限)

[英]PHP: shell_exec a shell script vs. shell_exec a program on linux (permissions)

我有一个Shell脚本,该脚本在执行时会创建一些文件夹并将文件复制到其中。 我也有一个node.js“程序”,它确实完成了shell脚本的工作。

当我使用PHP的shell_exec调用Shell脚本时,出现权限错误,该错误基本上是说Shell脚本没有创建文件夹的权限。 我做了一些谷歌搜索,结果发现我必须设置无密码的sudo,谁知道还可以解决这个问题。

但是,我对节点做了完全相同的事情,当我像以前一样通过shell_exec调用它来运行节点“程序”时,似乎该节点“程序”有权执行任何操作。

这背后的原因是什么? 为什么“程序”在运行时具有特权,但Shell脚本却没有? 这是合法的方法吗,例如文件系统操作(从PHP调用使用node.js进行的操作)? 因为如果我尝试使用PHP进行相同的操作,那么摆弄权限是很烦人的。

Php由apache或类似的程序运行,并在用户www-data或http或类似的程序下运行。 您的节点服务器可能在piwwoli用户下运行。 piwwoli可以在/ home / piwwoli下创建目录,但是www-data不能。

程序和shellscript都在运行时具有特权,问题是谁在运行它们。

您可以创建一个可同时由www-data和piwwoli写入的目录:

mkdir /path/to/dir
chmod o+w,g+w /path/to/dir
chown piwwoli.www-data /path/to/dir # maybe you'll need sudo for this to work

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM