solaris 8 的/etc/shadow不支持md5加密的密码。
比如在Linux中有个用户test,他的密码为pass,在/etc/shadow中我们看到的密码应该是$1$asdf$ib8USXkJi12PfzzkSyJwM0,现在我想将该用户移植到solaris8中,可是如果将$1$asdf$ib8USXkJi12PfzzkSyJwM0放到solaris8的/etc/shadow中,用户test无法用pass登录。我发现solaris8中的密码是用DES加密的,pass加密后应该类似于as2XksB4AwhxU这样的密文。
那么我希望solaris8中同样也支持MD5加密,该如何做呢?
介绍了个方法。
可是按照上面的方法编译过后,无法使用。使用时出错
Dec 25 02:03:46 sdedb1 login: [ID 401707 auth.error] open_module: /usr/lib/security/pam_unix.so.2 failed: ld.so.1: login: fatal: relocation error: file /usr/lib/security/pam_unix.so.2: symbol pam_fail_delay: referenced symbol not found
Dec 25 02:03:46 sdedb1 login: [ID 487707 auth.error] load_modules: can not open module /usr/lib/security/pam_unix.so.2
这个问题似乎是pam_unix.so.2找不到pam_fail_delay模块,那我就将其静态编译进去好了。
于是方法是link的时候把其他的库文件加进来。
gcc -G -Xlinker -z -Xlinker redlocsym -o pam_unix.so dynamic/pam_unix_auth.o dynamic/pam_unix_acct.o dynamic/pam_unix_sess.o dynamic/pam_unix_passwd.o dynamic/support.o md5_good.o md5_broken.o md5_crypt_good.o md5_crypt_broken.o yppasswd_xdr.o bigcrypt.o ../../libpam/dynamic/pam_delay.o ../../libpam/dynamic/pam_log.o
如此问题解决,solaris8可以支持md5加密的密码了。
参考:
阅读(1478) | 评论(0) | 转发(0) |