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在前面,直接写语句就可以了。

原文地址:https://www.cnblogs.com/AI001/p/3368880.html