<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post/4923/</link>
<title><![CDATA[Linux下或者Unix下自动批量修改普通用户密码的脚本]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sun, 29 Jan 2012 06:35:39 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/4923/</guid> 
<description>
<![CDATA[ 
	方法一：<br/>CODE:<br/><textarea name="code" class="html" rows="15" cols="100">
#!/bin/bash
#自动修改所用普通用户的密码为123456

#这里获取的普通用户通常情况下是正确的，比如你建立用户时指定了ID是一个小于500的数字就获取不到了
#我在测试时有个nfsnobody用户的ID是65534，所这awk中加了个/sbin/nologin的判断过滤掉此类用户
userlist=$(awk &#039;BEGIN&#123;FS=&quot;:&quot;&#125;;&#123;if($3 &gt;= 500 &amp;&amp; $7 !~ &quot;/sbin/nolo&#92;
gin&quot;) printf $1&quot;&#92;n&quot;&#125;&#039; /etc/passwd)

for i in $userlist
do
&amp;#160; &amp;#160;&amp;#160; &amp;#160;&amp;#160;&amp;#160;chpasswd &lt;&lt;&lt; &quot;$i:123456&quot;
echo &quot;The user $i password is ok!&quot;
done
</textarea><br/>方法二：<br/>CODE:<br/><textarea name="code" class="html" rows="15" cols="100">
#!/bin/bash

userlist=$(awk &#039;BEGIN&#123;FS=&quot;:&quot;&#125;;&#123;if($3 &gt;= 500 &amp;&amp; $7 !~ &quot;/sbin/nolo&#92;
gin&quot;) printf $1&quot;&#92;n&quot;&#125;&#039; /etc/passwd)

passwdcode=yourpasswd

for i in $user
do
passwd $i 2&gt; /dev/null &lt;&lt;EOF #错误信息丢掉如密码太过简单类的警告就不显示了
$passwdcode #这三行一定要从行开头写
$passwdcode #这三行一定要从行开头写
EOF #这三行一定要从行开头写
done
</textarea><br/>来自：http://www.linuxdiyf.com/viewarticle.php?id=203102<br/><br/><br/>Unix及FreeBSD的密码生成情况：<br/>自动更改口令由两部分组成.即自动口令生成,及口令设置.<br/><br/>1. 口令生成.口令生成比较简单,你可以根据时间、日期、IP、MAC等进行一系统的换算然后取其中一些字符即可。<br/><br/> <br/><br/>2.口令设置<br/><br/> <br/><br/>Linux下的口令设置比较简单.因为LINUX下的passwd支持stdin参数,即可以从标准输入接收口令.<br/><br/>如要更改口令为 1234.即可做如下操作:<br/><br/>cat &quot;1234&quot; &gt; pass.file<br/><br/>passwd root --stdin &lt; pass.file<br/><br/>这样,root口令即在无干扰情况下被更改,<br/><br/> <br/><br/>BSD下可能会比较复杂.因为BSD下的passwd不支持stdin或类似参数.可以只能考虑其它方式.<br/><br/>UNIX类操作系统的的口令加密一般会使用crypt 函数进行的加密算法.其使用方法如下:<br/><br/>char *crypt(const char *key, const char *salt);<br/><br/> <br/><br/>其一个使用实例如下:<br/><br/>crypt(&quot;mypassword&quot;, &quot;$1$ZsQMTk6T$e&quot;);<br/><br/>这样你输入原始口令后,通过这个函数即可产出密文.<br/><br/>在/etc/passwd文中,在特定的位置保存着密文.这时,我们只要把得到的密文通过文件操作,换掉原来的密文即可.<br/><br/>由于BSD等BSD类UNIX系统,其并不直接使用/etc/passwd,而且使用一个数据库文件,所以还需要执行pwd_mkdb来生成DB文件.<br/><br/> <br/><br/>参考代码如下:<br/><br/>//genpasswd (脚本)<br/><br/>#!/bin/sh<br/>IP=`ifconfig eth0&#124;grep &quot;inet addr&quot;&#124;awk &#039;&#123;print $2&#125;&#039;&#124;awk -F &quot;:&quot; &#039;&#123;print $2&#125;&#039;`<br/>echo `date` $IP $1 &gt;/tmp/pass<br/>md5sum /tmp/pass.1<br/>expr substr `cat /tmp/pass.1&#124;awk &#039;&#123;print $1&#125;&#039;` 3 10<br/><br/> <br/><br/>genpass.c //用于根据原始密码生成密文<br/><br/>int main(int argc, char **argv)<br/>&#123;<br/> if (argc != 2) &#123;<br/>&nbsp;&nbsp;printf(&quot;Usage: %s pass&#92;n&quot;);<br/>&nbsp;&nbsp;return -1;<br/> &#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;%s&#92;n&quot;,&nbsp;&nbsp;crypt(argv[1], &quot;$1$ZsQMTk6T$e&quot;));<br/>&#125;<br/><br/>用于更改密码:(脚本)<br/><br/>#!/bin/sh<br/>if [ $# -ne 1 ];then<br/> echo &quot;Usage:&nbsp;&nbsp;&quot;<br/> exit<br/>fi<br/><br/>password=`/usr/sbin/genpasswd $1`<br/>passwd=`/usr/bin/genepass $password`<br/>username=`grep&nbsp;&nbsp;-i -w $1 /etc/passwd&#124;awk -F: &#039;&#123;print $1&#125;&#039;`<br/>echo $username<br/><br/>echo $1 $username $password &gt;&gt;/root/mychpass.log<br/>exit<br/>cat /etc/master.passwd &#124; awk -v user=$username -v pass=$passwd -F: &#039;&#123;if ($1 == user) &#123;print $1 &quot;:&quot;&nbsp;&nbsp;pass&quot;:&quot; $3 &quot;:&quot; $4 &quot;:&quot; $5 &quot;:&quot; $6 &quot;:&quot; $7 &quot;:&quot; $8 &quot;:&quot; $9 &quot;:&quot; $10&#125; else &#123;print&#125;&#125;&#039; /etc/master.passwd&nbsp;&nbsp;&gt;&nbsp;&nbsp;/tmp/master.passwd.tmp<br/><br/>mv /tmp/master.passwd.tmp /etc/master.passwd<br/>/usr/sbin/pwd_mkdb /etc/master.passwd<br/><br/>这样,新密码即生效了.<br/><br/>当然,以上方法稍作修改也可以用于LINUX类操作系统.<br/>来自：http://hbaolong.bokee.com/960891.html
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post/4923/#blogcomment63415</link>
<title><![CDATA[[评论] Linux下或者Unix下自动批量修改普通用户密码的脚本]]></title> 
<author>hxngb8ff &lt;pjrc04@mail114.net&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 02 Feb 2012 01:05:14 +0000</pubDate> 
<guid>http://www.jackxiang.com/post/4923/#blogcomment63415</guid> 
<description>
<![CDATA[ 
	辛苦了，祝大家新春快乐
]]>
</description>
</item>
</channel>
</rss>