返回首页
当前位置: 主页 > 精通Office > Ubuntu教程 >

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

时间:2012-01-31 22:46来源:知行网www.zhixing123.cn 编辑:麦田守望者

方法一:
CODE:

 

view plaincopy to clipboardprint?
1.#!/bin/bash
2.#自动修改所用普通用户的密码为123456
3.
4.#这里获取的普通用户通常情况下是正确的,比如你建立用户时指定了ID是一个小于500的数字就获取不到了
5.#我在测试时有个nfsnobody用户的ID是65534,所这awk中加了个/sbin/nologin的判断过滤掉此类用户
6.userlist=$(awk 'BEGIN{FS=":"};{if($3 >= 500 && $7 !~ "/sbin/nolo\
7.gin") printf $1"\n"}' /etc/passwd)
8.
9.for i in $userlist
10.do
11.&#160; &#160;&#160; &#160;&#160;&#160;chpasswd <<< "$i:123456"
12.echo "The user $i password is ok!"
13.done

方法二:
CODE:

 

view plaincopy to clipboardprint?
1.#!/bin/bash
2.
3.userlist=$(awk 'BEGIN{FS=":"};{if($3 >= 500 && $7 !~ "/sbin/nolo\
4.gin") printf $1"\n"}' /etc/passwd)
5.
6.passwdcode=yourpasswd
7.
8.for i in $user
9.do
10.passwd $i 2> /dev/null <<EOF #错误信息丢掉如密码太过简单类的警告就不显示了
11.$passwdcode #这三行一定要从行开头写
12.$passwdcode #这三行一定要从行开头写
13.EOF #这三行一定要从行开头写
14.done

来自: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类操作系统

------分隔线----------------------------
标签(Tag):Linux 操作系统
------分隔线----------------------------
推荐内容
  • 折腾之安装 Ubuntu 系统

    昨天中午突然心血来潮想装个 linux 系统玩玩,在听取别人的意见后装了 Ubuntu,163镜...

  • Ubuntu 环境下 MySQL 安装与安全优化

    安装 sudo apt- get updatesudo apt- get install mysql-server mysql-client # 设置r...

  • TortoiseGit安装教程及在windows下提交代码到github

    TortoiseGit 是Windows下的可视化Git界面.在windows下使用git最好的软件就是TortoiseG...

  • xshell的使用技巧

    一、帐号密码保存 可以保存多个vps登陆信息,免去每次输入的烦恼。 二、数字小键盘输...

  • kipmi0进程占用cpu高的问题及处理办法

    近期有同事反馈部分机器中kipmi0 占用cpu100%的情况,整理了以下相关资料共大家参考 i...

  • Ubuntu 18.04如何在不重启的情况下安装内核更新

    使用 Ubuntu 18.04 LTS 将使得 Linux 内核实时修补功能变得非常容易,实时修补(Live p...

  • 猜你感兴趣
  • 教育技术学动态
  • 教育技术学论文
  • 理论研究
  • 应用研究
  • 资源收藏
  • 百家观点
  • 英文文献
  • 中国电化教育
  • 电化教育研究
  • 中国远程教育
  • 开放教育研究
  • 现代教育技术
  • 远程教育杂志
  • 现代远距离教育
  • 中国教育信息化
  • 中国信息技术教育
  • 中小学信息技术
  • Flash龙8娱乐官网手机版
  • Photoshop龙8娱乐官网手机版
  • 3DMAX龙8娱乐官网手机版
  • AutoCAD龙8娱乐官网手机版
  • CorelDRAW龙8娱乐官网手机版
  • Matlab龙8娱乐官网手机版
  • 其他龙8娱乐官网手机版
  • .Net龙8娱乐官网手机版
  • Asp龙8娱乐官网手机版
  • Php龙8娱乐官网手机版
  • Jsp龙8娱乐官网手机版
  • Ajax龙8娱乐官网手机版
  • Android教程
  • 其他龙8娱乐官网手机版
  • Word教程
  • Excel教程
  • PowerPoint教程
  • Ubuntu教程
  • 其他教程
  • 课件下载
  • 软件下载
  • 视频教程下载
  • 其他下载
  • 教案大全
  • 试题大全
  • 课件大全
  • 其他大全
  • 人像摄影
  • 风光摄影