使用PHP脚本更改用户系统密码

时间:2014-10-27 18:06:04

标签: php linux permissions

所以我有一个需要以编程方式更改Linux用户密码的PHP脚本。

脚本以www-data运行(这是给apache2的用户名)。我使用chpasswd执行popen,然后使用用户名:密码对fwrite执行www-data。这会导致错误。

下载到bash shell,我试着看看这里发生了什么。当然,我怀疑它是某种权限问题。因此,我将用户更改为chpasswd并尝试手动执行# su www-data $ /usr/sbin/chpasswd jsmith:mysecretpassword Changing password for jsmith. chpasswd: (user jsmith) pam_chauthtok() failed, error: Authentication token manipulation error chpasswd: (line 1, user jsmith) password not changed

su

因此,这揭示了PHP无法执行命令的原因。错误消息并不简单,但我认为它的主旨是发生PAM authentication问题(我认为这基本上意味着Linux权限问题)。因此,如果我chpasswd为root,我已成功通过www-data更改密码。

显然,问题在于apache2(用户sudo)没有www-data权限。这是唯一可以将sudo添加到sudo组的解决方案吗?因为我宁愿不这样做。但我在这里没有看到任何其他选择。

更一般地说 - 除了这种情况的具体情况之外 - 对于可能需要的网络程序,它甚至理论上 可能 更改用户密码,以便能够在没有sudo权限的情况下这样做?但是,如果网络程序具有{{1}}权限,那么这不是一个重大的安全问题吗?

2 个答案:

答案 0 :(得分:0)

我可能会设置一个以root身份运行的排队系统,并将php脚本添加到队列中,而不是让PHP可以访问任何权限提升。这也将关闭一些安全漏洞,虽然拥有改变linux用户密码的Web界面仍然听起来不错。

答案 1 :(得分:0)

查看thisthis。第二种选择,即使他们有一个"安全"在底部有一些建议,对我来说似乎并不安全,但这只是一种感觉。

我选择了web-chpass。