先說下我想做的事情:
將Linux下的操作,web化,使使用者可以通過web端進行基本的操作,但是現在在寫建立目錄的代碼:
$mkdir_command = "/home/myname/myshell/mkdir.sh /$directory/ $name";
exec($mkdir_command,$output,$return);
.....
我也知道在web端執行shell指令碼,其實在Linux下是以Apache的許可權來啟動並執行,
但是在Linux下我將mkdir.sh在運行時的許可權修改為root的了,也就是說任何調用該檔案的使用者在執行的時候都是以root的許可權來執行的:chmod 777 mkdir.sh ; chmod u+s mkdir.sh
但是在網頁端還是執行不成功。
單獨在Linux下是可以執行成功的,
希望大家發表一下意見或者看法,謝謝!!
回複討論(解決方案)
Apache對該目錄要有寫的許可權
Apache對該目錄要有寫的許可權
謝謝您的回複,可以說一下具體應該怎麼設定嗎?
mkdir.sh許可權修改為root的
那 apache 就更無權訪問了
本帖最後由 xuzuning 於 2012-11-28 19:32:59 編輯mkdir.sh許可權修改為root的
那 apache 就更無權訪問了
額。。。mkdir.sh本身就是root使用者建立的,只是當執行這個檔案的時候,為普通使用者賦予root的許可權。
版主回複深感榮幸,嘿嘿,說正事。。。 您有什麼好方法嗎?
1.web將結果寫到 一個檔案裡 例如需要建立什麼 到哪建立
2.linux root 定時 調用 shell 查看檔案是否存在需要更動的內容
如果是 這個時候就是用root 來操作了
建一個定時器就是了.
樓主,請問你的php指令碼有沒有執行許可權? 不是mkdir.sh ,是那個跑shell 的php .設了執行許可權沒?
1.web將結果寫到 一個檔案裡 例如需要建立什麼 到哪建立
2.linux root 定時 調用 shell 查看檔案是否存在需要更動的內容
如果是 這個時候就是用root 來操作了
建一個定時器就是了.
您的意思是利用Linux的crond服務來實現?每隔一段時間就執行php寫入的那個檔案,然後再刪除?這個辦法好嗎?
樓主,請問你的php指令碼有沒有執行許可權? 不是mkdir.sh ,是那個跑shell 的php .設了執行許可權沒?
php的運行許可權肯定是有的。
你得查看你有沒有執行許可權
system/exec先執行一條其他簡單的命令比如:ls 、ifconfig看看能否執行成功
再去檢查.sh檔案的許可權問題
linux下輸入visudo
然後我們在最後追加
apache ALL=NOPASSWD:/bin/sh
然後
php執行exec("/usr/bin/sudo /bin/sh /xxx/xxx.sh")
/xxx/xxx.sh 是你要執行的指令碼
看看這篇文章吧,可以解決你的問題
http://blog.csdn.net/vindo/article/details/3610587
加 sudo
linux下輸入visudo
然後我們在最後追加
apache ALL=NOPASSWD:/bin/sh
然後
php執行exec("/usr/bin/sudo /bin/sh /xxx/xxx.sh")
/xxx/xxx.sh 是你要執行的指令碼
看看這篇文章吧,可以解決你的問題
http://blog.csdn.net/vindo/article/details/3610587……
謝謝各位,問題已經解決。謝謝!
謝謝上面各位的回答,綜合一下,問題解決!嘿嘿!
求教怎麼解決的?我的指令碼是擷取虛擬機器ip的,現在也無法執行