1. sudo介紹
sudo允許root分配給一般使用者一些不具備的權利,讓一般使用者也可以有root使用者的相關權限(比如說sudo可以指派給某一使用者某些特定的命令執行權限)。
其中sudo一個重要的文件就是/etc/sudoers,哪些使用者有什麼樣的指令可以執行都是靠這個檔案的,主要只有裡面分配了的使用者才能使用sudo。
sudo -l 列出该用户能执行的命令 sudo -u user 以指定用户来执行命令 sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码 sudo -b 在后台执行命令
在終端機裡面輸入 vim 即可開啟/etc/sudoers檔案。
找到如圖所示的地方:
圖中紅色方框的內容是我自己後來加的,其中www是php運行的用戶,不同的環境下默認名字會不一樣,我在centos 下的為www。
查看php運行的使用者可以透過下面這個php網頁取得。
<?php echo shell_exec("id -a"); ?>
看圖中每行都有三個ALL,第一個ALL代表網路中的主機,第二個括號裡面的ALL代表目標用戶,表示以誰的身分去執行指令,最後一個ALL代表的是可執行的命令名稱(可以指定你想要該使用者能夠執行的命令)。
其中NOPASSWD表示不用輸入密碼。 (為了方便嘛,不然我透過瀏覽器訪問難道程式裡面多了道填寫密碼,還要等回饋,真是麻煩,這樣就省事多了)
若是Ubuntu則不用再修改了,若是fedora等等還需要進行一些修改,
Defaults env_reset打開就可以了(即前面的#號去掉);
safe_mode = off 这样就可以了
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.由轉載
1. sudo介紹
其中sudo一個重要的文件就是/etc/sudoers,哪些使用者有什麼樣的指令可以執行都是靠這個檔案的,主要只有裡面分配了的使用者才能使用sudo。
sudo -l 列出该用户能执行的命令 sudo -u user 以指定用户来执行命令 sudo -k 清楚入场券上的时间,下次使用sudo还要输入密码 sudo -b 在后台执行命令在終端機裡面輸入 vim 即可開啟/etc/sudoers檔案。
找到如圖所示的地方:
<?php echo shell_exec("id -a"); ?>看圖中每行都有三個ALL,第一個ALL代表網路中的主機,第二個括號裡面的ALL代表目標用戶,表示以誰的身分去執行指令,最後一個ALL代表的是可執行的命令名稱(可以指定你想要該使用者能夠執行的命令)。 其中NOPASSWD表示不用輸入密碼。 (為了方便嘛,不然我透過瀏覽器訪問難道程式裡面多了道填寫密碼,還要等回饋,真是麻煩,這樣就省事多了)若是Ubuntu則不用再修改了,若是fedora等等還需要進行一些修改,Defaults env_reset打開就可以了(即前面的#號去掉);
safe_mode = off 这样就可以了
<?php $ip=(string)$_POST["ip"]; system("su ./route.sh $ip",$status); if($status == 'true') { echo "设置成功"; } else { echo "设置失败"; } ?>
以上是php關於shell腳本權限問題分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!