需要从PHP执行以下行:
$res = shell_exec(‘sudo sh /home/nicklas/cronjobs/make_account.sh
username password’);
问题是执行没有任何反应.如果我试图回复$res它就会出现空白.我也尝试过使用system(),结果相同.我猜它不起作用,因为我需要运行root访问权限,而www-data用户默认没有.我将以下行添加到/ etc / sudoers以期获取访问权限:
www-data ALL=(ALL:ALL) nopASSWD:
/home/nicklas/cronjobs/make_account.sh
但没有成功.我试过在中间重启apache,不会改变任何东西.
我错过了什么吗?
解决方法:
出于安全原因,您不应该尝试使用具有比自然更多权限的用户www-data执行某些操作.之前有一个原因,为什么Apache访问被转移到www-data.
如果您需要在您的计算机上以root身份执行某些操作 – 并且更改密码或创建帐户就是这个’某事’ – 您应该构建一个界面.让PHP脚本在某处放置一些东西并通过从root执行的脚本扫描它并在那里处理它.
你可以f.e.在www-data有权访问的目录中创建一个包含要添加的用户的文件,然后每5分钟(或更少)通过root-cronjob执行此操作,并将文件移动到带有时间戳的完成文件夹,以控制什么是发生.