解決php呼叫shell sudo輸入免密碼的問題

2021-08-14 13:37:39 字數 1010 閱讀 7051

問題背景:

想在oj上加乙個重啟判題服務的按鈕呼叫shell而已

1.使用su root進入root賬戶

修改/etc/sudoers許可權 777

%sudo all=(all:all) all改為

%sudo all=(all:all) nopasswd:all

%表示組 即sudo組的都可以免密碼使用sudo指令(其實有點危險啊)

2.usermod -g sudo www-data sudo

將執行php頁面的使用者www-data加入sudo組中

3.重啟apache

在ubuntu中是/etc/init.d/apache2 restart

4.exec('sudo killall -9 judged 2>&1 ',$output,$ans);可以將報錯資訊重定向輸出到$output變數中

5.如果想在後台執行 php頁面不等待的寫法

system("sudo ./restart.sh  >>/home/important/judgeonline2017core/log/newfile.txt &");
必須要把輸出的資訊重定向到檔案才可以!!要不然那個指令碼不執行完 網頁就一直轉圈圈 重新整理就崩 但是pid變了

md太菜了 這麼個小功能加了兩天才寫完

經歷的乙個小插曲是:

www-data執行sudo不是得輸入密碼麼 但是php執行指令碼沒地方讓你輸入啊 就得改sudoers檔案 這個檔案正常許可權是440唯讀的 我是用sudo chmod 777修改的 然後加了免密碼 nopasswd: all那行以後 再sudo chmod 440就儲存了 因為sudoers檔案必須是440的時候sudo命令才能用嘛 不用sudo我連重啟進去安全模式都不能做 就只能去機房強制關機  然後我跟我導說這個事 他說你幹嘛用sudo  su root使用root賬號就得了唄 學藝不精

php怎麼呼叫,php怎麼實現呼叫物件

php怎麼實現呼叫物件 閱讀 73 php 物件的呼叫和引入 直接上例項 定義 class a static q 888 public function index echo 1111 static function debug echo echo 555 使用 include a.php clas...

php怎麼呼叫,php如何呼叫指定檔案

php 中的 include require 函式可以呼叫其他php生成的內容,一般來說include 或 require 語句會獲取指定檔案中存在的所有文字 標記,並複製到使用 include 語句的檔案中。通過 include 或 require 語句,可以將 php 檔案的內容插入另乙個 ph...

PHP呼叫MYSQL儲存過程 不報錯的解決方法

前兩天跟同事一起開發一套庫存管理系統,我負責寫頁面程式,同事負責寫儲存過程,寫程式時一切進展很順利,直到開發完成,我用php呼叫他的儲存過程時問題發生了。以後開發時需要注意以下幾點 1 連線mysql資料庫時要注意後兩個引數 define client multi results 131072 定義...