授權普通使用者Linux crontab定時任務
專案需求,在Linux下做個定時任務,而且是普通使用者下可控的。網上找資料,方向沒找對,就暫時用root使用者做定時任務。最後別人提示用sudo,才有了這篇文章。
下面就說一下方法:
1. 建立任務(普通使用者)
crontab -e 編輯計劃任務
加上任務,如下行
*/2 * * * * cd /home/sky/apache-activemq-5.11.1/bin/;./activemq start(每兩分鐘啟動一次,見下面語法結構)
2. 給普通使用者授權sudo(root使用者)
給普通使用者授權sudo,用sudo 提升普通使用者service命令許可權
1)切換root使用者,可以用vim /etc/sudoers對檔案編輯(先賦許可權chmod u+w /etc/sudoers),但最好使用visudo命令編輯,原因兩點:一是它能夠防止兩個使用者同時
修改它;二是它也能進行有限的語法檢查。
2)找到"root ALL=(ALL) ALL",在下面加一行“XXX ALL=(ALL) ALL”即完成授權
“XXX”是使用者名稱。
3)此時該使用者擁有root所有許可權,要做一下限制,先說一下上面三個ALL的含義:
①網路中的主機名(建議用ALL,實際不確定遠端主機名),
②目標使用者,也就是以誰的身份去執行命令(建議ALL)
③命令(最好不用ALL,否則方法二就沒意義了,多個命令逗號隔開),預設5分鐘sudo密碼過期,怕麻煩命令前加“NOPASSWD:”
所以上面增加內容應改為:
“XXX ALL=(ALL) NOPASSWD:/sbin/service”
3. 重新啟動任務計劃
方法一: 切換到root使用者 service crond restart(安全性考慮,不建議此方法)
方法二: 切換普通使用者,執行sudo service crond restart即可
4. 語法機構
minute hour day month dayofweek command
minute - 從0到59的整數
hour - 從0到23的整數
day - 從1到31的整數 (必須是指定月份的有效日期)
month - 從1到12的整數 (或如Jan或Feb簡寫的月份)
dayofweek - 從0到7的整數,0或7用來描述週日 (或用Sun或Mon簡寫來表示)
command - 需要執行的命令(1、多行命令用“;”或者“&&”隔開,“;”不管命令是否出錯都會連續執行下去,“&&” 出錯則停止。 2、可以是指令碼)
(網上很多資料)
5. 常用命令
crontab –u //設定某個使用者的cron服務,一般root使用者在執行這個命令的時候需要此引數
crontab –l //列出某個使用者cron服務的詳細內容
crontab –r //刪除某個使用者的cron服務
crontab –e //編輯某個使用者的cron服務
service crond start
service crond stop
service crond restart
service crond reload
---------------------
作者:dahangg
來源:CSDN
原文:https://blog.csdn.net/dahangg/article/details/50537666
版權宣告:本文為博主原創文章,轉載請附上博文連結!