Linux下或者Unix下自动批量修改普通用户密码的脚本

jackxiang 2012-1-29 14:35 | |
方法一:
CODE:

方法二:
CODE:

来自:http://www.linuxdiyf.com/viewarticle.php?id=203102


Unix及FreeBSD的密码生成情况:
自动更改口令由两部分组成.即自动口令生成,及口令设置.

1. 口令生成.口令生成比较简单,你可以根据时间、日期、IP、MAC等进行一系统的换算然后取其中一些字符即可。



2.口令设置



Linux下的口令设置比较简单.因为LINUX下的passwd支持stdin参数,即可以从标准输入接收口令.

如要更改口令为 1234.即可做如下操作:

cat "1234" > pass.file

passwd root --stdin < pass.file

这样,root口令即在无干扰情况下被更改,



BSD下可能会比较复杂.因为BSD下的passwd不支持stdin或类似参数.可以只能考虑其它方式.

UNIX类操作系统的的口令加密一般会使用crypt 函数进行的加密算法.其使用方法如下:

char *crypt(const char *key, const char *salt);



其一个使用实例如下:

crypt("mypassword", "$1$ZsQMTk6T$e");

这样你输入原始口令后,通过这个函数即可产出密文.

在/etc/passwd文中,在特定的位置保存着密文.这时,我们只要把得到的密文通过文件操作,换掉原来的密文即可.

由于BSD等BSD类UNIX系统,其并不直接使用/etc/passwd,而且使用一个数据库文件,所以还需要执行pwd_mkdb来生成DB文件.



参考代码如下:

//genpasswd (脚本)

#!/bin/sh
IP=`ifconfig eth0|grep "inet addr"|awk '{print $2}'|awk -F ":" '{print $2}'`
echo `date` $IP $1 >/tmp/pass
md5sum /tmp/pass.1
expr substr `cat /tmp/pass.1|awk '{print $1}'` 3 10



genpass.c //用于根据原始密码生成密文

int main(int argc, char **argv)
{
if (argc != 2) {
  printf("Usage: %s pass\n");
  return -1;
}
        printf("%s\n",  crypt(argv[1], "$1$ZsQMTk6T$e"));
}

用于更改密码:(脚本)

#!/bin/sh
if [ $# -ne 1 ];then
echo "Usage:  "
exit
fi

password=`/usr/sbin/genpasswd $1`
passwd=`/usr/bin/genepass $password`
username=`grep  -i -w $1 /etc/passwd|awk -F: '{print $1}'`
echo $username

echo $1 $username $password >>/root/mychpass.log
exit
cat /etc/master.passwd | awk -v user=$username -v pass=$passwd -F: '{if ($1 == user) {print $1 ":"  pass":" $3 ":" $4 ":" $5 ":" $6 ":" $7 ":" $8 ":" $9 ":" $10} else {print}}' /etc/master.passwd  >  /tmp/master.passwd.tmp

mv /tmp/master.passwd.tmp /etc/master.passwd
/usr/sbin/pwd_mkdb /etc/master.passwd

这样,新密码即生效了.

当然,以上方法稍作修改也可以用于LINUX类操作系统.
来自:http://hbaolong.bokee.com/960891.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4923/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
2012-2-2 09:05 | hxngb8ff Email Homepage
辛苦了,祝大家新春快乐
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]