久久久久在线观看_又色又爽又黄的免费视频播放_一区中文字幕_日韩电影在线播放

今日焦點 焦點資訊 營銷之道 企業報道 淘寶運營 網站建設 軟件開發 400電話
  當前位置: 首頁 » 資訊 » 軟件開發 » 正文

php關于shell腳本權限問題分析

放大字體  縮小字體 發布日期:2018-03-01  來源:企業800網  作者:新格網  瀏覽次數:914  【去百度看看】
核心提示:sudo允許root分配給普通用戶一些不具備的權利,讓普通用戶也可以具有root用戶的相關權限(比如說sudo可以分配給某一用戶某些特定的命令執行權限)。 其中sudo一個重要的文件就是/etc/sudoers,哪些用戶具有什么樣的命令可以執行都是靠這個文件的,主要只有里面分配了的用戶才能使用sudo。
1. sudo介紹

sudo允許root分配給普通用戶一些不具備的權利,讓普通用戶也可以具有root用戶的相關權限(比如說sudo可以分配給某一用戶某些特定的命令執行權限)。
其中sudo一個重要的文件就是/etc/sudoers,哪些用戶具有什么樣的命令可以執行都是靠這個文件的,主要只有里面分配了的用戶才能使用sudo。

sudo -l 列出該用戶能執行的命令  
sudo -u user 以指定用戶來執行命令  
sudo -k 清楚入場券上的時間,下次使用sudo還要輸入密碼  
sudo -b 在后臺執行命令

在終端里面輸入 vim 即可打開/etc/sudoers文件。
找到如圖所示的地方:
centos的例子

圖中紅色方框的內容是我自己后來加的,其中www是php運行的用戶,不同的環境下默認名字會不一樣,我在 centos 下的為www。

查看php運行的用戶可以通過下面這個php網頁獲取。

<?php   
    echo shell_exec("id -a");  
?>

看圖中每行都有三個ALL,第一個ALL代表網絡中的主機,第二個括號里面的ALL代表目標用戶,表示以誰的身份去執行命令,最后一個ALL代表的是可執行的命令名(可以指定你想要該用戶能夠執行的命令)。

其中NOPASSWD表示不用輸入密碼。(為了方便嘛,不然我通過瀏覽器訪問難道程序里面多了道填寫密碼,還要等反饋,真是麻煩,這樣就省事多了)

若是Ubuntu則不用再修改了,若是fedora 等則還需要進行一些修改,

Defaults env_reset打開就可以了(即前面的#號去掉);

  1. 檢查php.ini配置文件中是否打開了安全模式

safe_mode =  off 這樣就可以了

php執行linux腳本的函數有多個,shell_exec()、system()等,這里也不多做介紹了,用就行了,我采用system()函數。
route.php

<?php  $ip=(string)$_POST["ip"];  
system("su ./route.sh $ip",$status);  
if($status == 'true')  
{  
    echo "設置成功";  
}  
else  {  
    echo "設置失敗";  
}  
?>

前面設置妥當后,執行后,瀏覽器會顯示設置成功,說明腳本成功執行。

1.php執行shell實際是用的Apache或Nginx的用戶去執行的,php本身不創建用戶。
2.由轉載

由于以前在ECS中每次都是以root用戶身份登錄和進行操作,所以基本都沒有用到sudo,但是最近項目需要要進行這么個事:通過瀏覽器訪問php網頁,php網頁里會調用執行linux下的一個腳本。本來這個事很簡單的,但是我在實際操作的時候,發現每次通過瀏覽器訪問時,腳本都沒有被執行,而我在終端里面通過命令行執行php網頁確又是沒有任何問題的,當時就覺得很差異,后來仔細想了想,通過瀏覽器訪問和直接在終端里執行其發起者不一樣,想想應該是用戶權限的問題,于是就上網查了查,結果就有了sudo這么回事。
1. sudo介紹

sudo允許root分配給普通用戶一些不具備的權利,讓普通用戶也可以具有root用戶的相關權限(比如說sudo可以分配給某一用戶某些特定的命令執行權限)。
其中sudo一個重要的文件就是/etc/sudoers,哪些用戶具有什么樣的命令可以執行都是靠這個文件的,主要只有里面分配了的用戶才能使用sudo。

sudo -l 列出該用戶能執行的命令  
sudo -u user 以指定用戶來執行命令  
sudo -k 清楚入場券上的時間,下次使用sudo還要輸入密碼  
sudo -b 在后臺執行命令

在終端里面輸入 vim 即可打開/etc/sudoers文件。
找到如圖所示的地方:
centos的例子

圖中紅色方框的內容是我自己后來加的,其中www是php運行的用戶,不同的環境下默認名字會不一樣,我在 centos 下的為www。

查看php運行的用戶可以通過下面這個php網頁獲取。

<?php   
    echo shell_exec("id -a");  
?>

看圖中每行都有三個ALL,第一個ALL代表網絡中的主機,第二個括號里面的ALL代表目標用戶,表示以誰的身份去執行命令,最后一個ALL代表的是可執行的命令名(可以指定你想要該用戶能夠執行的命令)。

其中NOPASSWD表示不用輸入密碼。(為了方便嘛,不然我通過瀏覽器訪問難道程序里面多了道填寫密碼,還要等反饋,真是麻煩,這樣就省事多了)

若是Ubuntu則不用再修改了,若是fedora 等則還需要進行一些修改,

Defaults env_reset打開就可以了(即前面的#號去掉);

  1. 檢查php.ini配置文件中是否打開了安全模式

safe_mode =  off 這樣就可以了

php執行linux腳本的函數有多個,shell_exec()、system()等,這里也不多做介紹了,用就行了,我采用system()函數。
route.php

<?php  $ip=(string)$_POST["ip"];  
system("su ./route.sh $ip",$status);  
if($status == 'true')  
{  
    echo "設置成功";  
}  
else  {  
    echo "設置失敗";  
}  
?>

前面設置妥當后,執行后,瀏覽器會顯示設置成功,說明腳本成功執行。

  1. php執行shell實際是用的Apache或Nginx的用戶去執行的,php本身不創建用戶。

相關推薦:

PHP如何解決執行shell腳本不產生core文件

shell腳本一鍵安裝php7的實例

shell腳本命令示例

以上就是php關于shell腳本權限問題分析的詳細內容,更多請關注php中文網其它相關文章!

 
關鍵詞: shell,php,問題
 
[ 資訊搜索 ]  [ 加入收藏 ]  [ 告訴好友 ]  [ 打印本文 ]  [ 違規舉報 ]  [ 關閉窗口 ]

 
0條 [查看全部]  相關評論

 
網站首頁 | 關于我們 | 聯系方式 | 使用協議 | 版權隱私 | 網站地圖 | 排名推廣 | 廣告服務 | 積分換禮 | 網站留言 | RSS訂閱 | 皖ICP備2021004516號-14
企業800網 · 提供技術支持