簡體   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