sudo在shell脚本执行的问题
sudo的执行需要tty。
如果将sudo service命令写在shell脚本中,通过程序方式调用,是不会执行的。
但是centos6.4中比较坑人的是"sorry, you must have a tty to runsudo"这个错误不知道为什么没有报出来,也没有写到日志中,结果浪费了一天的时间去查找原因。
如果修改/etc/sudoers,将Defaults requiretty,修改为 #Defaults requiretty,表示不需要控制终端,也可以在shell的脚本中通过程序直接执行sudo service。
由于centos的程序所拥有的权限是和运行的它的用户一样的,所以,service启动的服务是属于root用户的,如果需要服务程序调用需要sudo权限的脚本,不要写sudo在前面,直接写语句就可以了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步