我正在开发一个与公共网站并行的受限访问控制网站。目前,所有的用户访问和目录密码设置都是在 cPanel 中进行的,但是 cPanel 对一些用户来说有点混乱。但是我们需要在受限访问网站中修改可以访问它的授权人员列表(以及网站的其他一些部分)。
所以我试图在受限访问站点上设置一个 PHP 脚本来执行类似于 cPanel 的操作,以便能够编辑实际的 passwd 文件。但是我尝试过的一切都没有奏效。我们的网络服务器是 LiteSpeed 而不是 apache(由于共享主机设置,无法更改)。它使用 web 可访问文件夹之外的文件夹中的 passwd 文件,由 .htaccess 文件引用。查看列出的现有访问权限后,我可以看到它似乎没有使用 apache 文档中所述的加盐 MD5 散列:存储的散列密码与我认为我应该期望的不同(例如salt 明显超过 2 个字符),出于安全原因,我不愿意在我的代码中嵌入特定的密码哈希算法。我'
在过去的几天里,我一直在通过不同的文档集进行各种搜索,以查看 LiteSpeed 和/或 cPanel 的功能,但我的搜索大多是关于 cPanel 登录密码而不是用户访问控制密码。我试过查看一些 cPanel 源代码,但没有找到任何东西。
如果有人更直接地引用了某些源代码,或者文档中描述了如何在 LiteSpeed 中运行密码添加/更新/删除功能的内容,那就太好了。即使只是更直接地触发 cPanel 功能的某种方式也会很有用(我知道它有一个 API,但它的路径被锁定在我的主机上)。
编辑:史蒂夫发表评论后,我去检查了几件事。无论脚本的目录位置如何,我的脚本都可以看到 passwd 文件。正如我所料,passwd 文件的权限为 644,我预计具有写权限的“用户”是我用来登录 cPanel 的用户,希望它不是服务器运行时使用的用户名。 . 这带来了额外的困难。
编辑#2:我做了一个额外的测试,在那里我创建了一个临时的受密码保护的子目录,然后直接从 PHP 脚本添加了一个用户(复制粘贴现有行之一,但更改了用户名)。效果很好,添加了新用户,cPanel 甚至看到了变化。所以权限不是问题。
编辑#3:我已经玩了一些游戏,并得到了一个从 crypt 输出的字符串,该字符串与 passwd 文件中的内容大部分匹配(我将在重置页面上添加一条警告消息以确保使用最新的算法)。但是,crypt 正在寻找的盐是 $1$<8-char-rand-string>$,而文件中的盐是 $apr1$<8-char-rand-string>$。在盐中添加“apr”会导致 crypt 失败:-(。