【发布时间】:2016-08-06 21:34:11
【问题描述】:
我只是想根据文件是否存在重新命名命名。我整天都被困在这上面。
创建 bash 文件的命令:
$this->execute('echo -e "#!/bin/bash\nsudo /sbin/service named reload" >> /var/reload_named.sh');
这是我的 cronjob:
*/1 * * * * cronjob: sudo sh /var/reload_named.sh; rm -f /var/reload_named.sh;
这是 cronjob 运行时发生的情况 (/var/log/cron):
Jul 30 18:34:01 digitalocean CROND[24864]: (root) CMD (cronjob: sudo sh /var/reload_named.sh; rm -f /var/reload_named.sh )
Jul 30 18:34:01 digitalocean CROND[24862]: (root) UNSAFE (”example@digitalocean.com”)
出于某种原因,它说它是UNSAFE。我试过使用和不使用 sudo 运行。
它设法删除文件但不重新启动命名。我已经尝试过很多其他方法来让它发挥作用。
我已经尝试过(通过大量的谷歌搜索):
- 在 php 中运行 exec('service named restart')
- 创建一个 .c 文件并添加一个从 php 运行它的用户
- 直接在
crontab -e中运行service named restart - 尝试了使用 sudo 运行它的不同变体
- 尝试将 apache 用户添加到 sudo(仍然失败)
非常感谢任何帮助
(我在 Centos 6.7 上)
【问题讨论】:
-
您创建了一个可作为非特权用户写入的脚本并通过
sudo以特权权限运行它?这当然是不安全的。 -
我根本无法让它运行。为了从 php 脚本重新命名,需要更改什么?我觉得好像我已经用尽了一切。当然,这应该是一件简单的事情。
-
如果有管理(sudo)权限,你还应该有权限从 PHP 运行(配置)
exec/system/passthru。可以让事情变得更容易。 stackoverflow.com/questions/732832/… -
谢谢,除了那个passthru,我已经尝试了所有方法,但似乎仍然失败。 ://
标签: php bash service bind crontab