LinuxLinux

Linux服务器集群批量修改密码

2021-05-18  本文已影响0人  刘小白DOER

    笔者以前写过linux集群配置免密—局域网中服务器群配置ssh免密。为了完成等保测评的定期修改密码的要求,今天在此基础上来做Linux服务器集群批量修改密码。

    在正式开始之前,学习以下chpasswd和passwd工具的使用方法。

一、chpasswd

    chpasswd命令是批量更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中。

    1、echo root:passwd | chpasswd  。

    直接修改root用户的密码为passwd 。

    2、chpasswd < chpass.txt  。

    使用chpass.txt里面的用户名密码批量修改相应用户的密码。txt文件中的格式如下,和上面的方式一样,以冒号:来区分用户名和密码。

  user1:MYPASS1

  user2:MYPASS2

    需要注意的是chpasswd工具使用者是root,需要root用户才能执行。chpasswd权限是755,所有用户都有执行权限,但是在执行时会提示 chpasswd:无法锁定 /etc/passwd 。这是因为访问一些只有root用户才有权访问的文件,那么其他用户可能因为权限不够还是不能使用。

    chpasswd快速方便的修改多个用户密码,但是明文密码写在文件里仍然显得不够安全。

二、passwd

    passwd命令用来更改使用者的密码。

    echo password | passwd --stdin mycentos

    输入的指令能被别人通过history或者其他方式捕获,密码同时含有单引号和双引号,那么则无法通过这种方法修改。而且其它的一些发行版(如Debian/Suse)所提供的passwd并不支持--stdin这个参数。

    批量修改密码脚本multi_chpasswd.sh。

此脚本的前提是服务器集群以及配置了免密,详情参考笔者配置ssh免密的文章。

#!/bin/bash

#修改root用户密码:echo #root:helloboy | chpasswd

GCOLOR="\e[47;32m ------ [OK] \e[0m"

WCOLOR="\e[43;31m ------ [BAD] \e[0m"

if [ $# -ne 2 ] ; then

  echo "Usage: $0 <nodes_files> <cmd_line>"

  exit

fi

for i in `cat $1 | grep -v ^# | grep -v ^$`

do

    echo  $i

    node=$i

    ssh -l root $node "$2"

    if [ $? -eq 0 ]

    then

        echo -e "Node:$i doing is $GCOLOR"

    else

        echo -e "Node:$i doing is $WCOLOR"

    fi

done

    使用方法:./multi_do.sh  chpass.txt  "echo root:helloboy | chpasswd"

    在实际运用中,可以只保留执行错误的信息显示,或者将执行信息存入log文件中保存。

chpasswd命令是批量更新用户口令的工具,是把一个文件内容重新定向添加到/etc/shadow中

来自: http://lnmp.ailinux.net/chpasswd

passwd命令用来更改使用者的密码

上一篇下一篇

猜你喜欢

热点阅读