我已经安装了 squid 代理服务器,现在我尝试找到如何通过网络更改任何帐户的密码。我在 Google 上搜索,发现 chpasswd.cgi 有此功能。我下载了 chpasswd-cgi.tar.gz 并解压它:
tar zxf chpasswd-cgi.tar.gz
然后,我阅读了 README 以了解如何安装它。它说只需输入 ./configure,然后我尝试输入 make,然后输入 make install。
出现以下错误
[root@proxy chpasswd-1.9.1]# make
gcc -c -O2 -w -I. -DHAVE_LIBCRYPT=1 -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_CRYPT_H=1 -DHAVE_PWD_H=1 -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STRSTR=1 -DPREFIX=\"/usr/local/etc/chpasswd\" -DEnglish chpasswd.c
chpasswd.c:686: error: static declaration of ‘strip_latin’ follows non-static declaration
chpasswd.c:602: note: previous implicit declaration of ‘strip_latin’ was here
make: *** [chpasswd.o] Error 1
[root@proxy chpasswd-1.9.1]# make install
gcc -c -O2 -w -I. -DHAVE_LIBCRYPT=1 -DHAVE_DIRENT_H=1 -DSTDC_HEADERS=1 -DHAVE_CRYPT_H=1 -DHAVE_PWD_H=1 -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_TIME_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STRSTR=1 -DPREFIX=\"/usr/local/etc/chpasswd\" -DEnglish chpasswd.c
chpasswd.c:686: error: static declaration of ‘strip_latin’ follows non-static declaration
chpasswd.c:602: note: previous implicit declaration of ‘strip_latin’ was here
make: *** [chpasswd.o] Error 1
我该如何解决这个问题?
答案1
这可能会有帮助: http://www.squid-cache.org/mail-archive/squid-users/200502/0464.html
但是,对于像更新密码这样的功能,我希望知道这个脚本的安全性得到了照顾,所以如果它需要对源代码进行处理才能进行编译,我会担心它是否得到了维护。我要么寻找一个得到适当维护的发行版,要么确保我有信心自己可以维护它,并且有足够好的理由想要承担这项工作。
密码文件采用 htpasswd 格式(来自 Apache),因此可以使用其他软件来更新密码。此外,squid 可以与其他身份验证后端通信。(例如,ldap 通常适用于您想要验证 squid 使用情况的环境)。或者,也许 chpasswd-cgi 在您的操作系统发行版的维护包中可用?
如果您确定正在使用的操作系统发行版,您可能会得到更多有用的答案。
答案2
你必须删除 strip latin 的静态词,继续往下走,最终你会找到它。
但我遇到了一个问题。
我们可以编辑密码可以有多少位数字吗?我看不到编辑这部分,我正在创建一个新服务器,当我导入 passwd_file 时,密码超过 8 位的人将无法登录,因为 -d 会将其限制为 8 位。