[問題] 如何在Scipt裡執行root的指令

看板Linux作者 (嘻嘻)時間9年前 (2015/05/25 21:36), 9年前編輯推噓3(3016)
留言19則, 2人參與, 最新討論串1/2 (看更多)
各位前輩好~ 想請問怎麼在scipt裡面執行需要root權限的動作,且不用打密碼 作業環境CentOS6.2 因為我在crontab裡設定每一分鐘去執行 到一個資料夾底下複製一個檔案到另外一個資料夾 但是這個cp的動作需要root權限,我根據google上面的用法 還是一樣會顯示權限不符合 有人能幫我解決疑惑嗎 謝謝 下面這個方法試過了沒用 還是要打su,且一樣要輸入密碼 sudo chown root.root <my script> sudo chmod 4755 <my script> /etc/sudoers Cmnd_Alias CMDS = /path/to/your/script <username> ALL=NOPASSWD: CMDS -- -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.238.250.131 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1432561015.A.B7E.html ※ 編輯: learnbao (36.238.250.131), 05/25/2015 21:39:05

05/25 21:47, , 1F
1. shell script 設定 4755 這種 setuid 權限不大正確
05/25 21:47, 1F

05/25 21:48, , 2F
因為 shell script 是文字檔案,最後由 shell 讀入執行
05/25 21:48, 2F

05/25 21:48, , 3F
所以多了 setuid 權限多此一舉,只要 755 這類即可
05/25 21:48, 3F

05/25 21:48, , 4F
2. script 要具備 root 權限,要使用 sudo 命令去執行
05/25 21:48, 4F

05/25 21:49, , 5F
比方 sudo /path/myscript.sh 這樣才會有預期結果
05/25 21:49, 5F

05/25 21:49, , 6F
myscript.sh 本身才會有 root 身份權限可以運作
05/25 21:49, 6F

05/25 21:49, , 7F
3. 若執行 /path/myscript.sh 自己本身提昇權限的話
05/25 21:49, 7F

05/25 21:50, , 8F
可以自己於自己 script 判斷必要呼叫 sudo 來執行自己
05/25 21:50, 8F

05/25 21:50, , 9F
示意程式碼截圖:http://i.imgur.com/AmFYYay.png
05/25 21:50, 9F

05/25 21:51, , 10F
4. 搭配 crontab 時候,注意一下使用 visudo 設定時
05/25 21:51, 10F

05/25 21:51, , 11F
沒有 requiretty 這類設定,因為背景執行程式是無終端機
05/25 21:51, 11F

05/25 21:53, , 12F
5. 因為 sudo 會認絕對路徑判斷程式檔案是否被允許執行,
05/25 21:53, 12F

05/25 21:54, , 13F
所以我提供的 script 程式碼檔案你也要自己調整一下
05/25 21:54, 13F

05/25 21:54, , 14F
就是script放置到正確目錄位置,然後檔案本身內容
05/25 21:54, 14F

05/25 21:54, , 15F
sudo 後面就是傳完整的路徑位置,那sudo才會過關
05/25 21:54, 15F

05/25 21:55, , 16F
請問4755的部份,不正確的原因是因為沒有編譯
05/25 21:55, 16F

05/25 21:55, , 17F
成為binary嗎?謝謝
05/25 21:55, 17F

05/25 21:57, , 18F
binary 檔案 setuid 權限才會有實質功能
05/25 21:57, 18F

05/25 22:03, , 19F
6. 簡單一點請用 root 帳號身份執行該 script 比較單純
05/25 22:03, 19F
文章代碼(AID): #1LOoLtj- (Linux)
文章代碼(AID): #1LOoLtj- (Linux)